Extends the OpenZaak seam with IDocumentSource, sibling of IZaakSource (WP-49/50): an upload always lands locally first (DocumentStore stays the record of truth for preview/download/audit) and, when Zgw:Enabled=true, is also registered as a DRC enkelvoudiginformatie- object; once a zaak exists (IZaakSource.CreateZaak now also returns its ZaakUrl), submit links each document to it via zaakinformatie- object. FE upload/list DTOs are unchanged. - ZgwOptions gains DrcBaseUrl + a category->informatieobjecttype URL map (the document analogue of ZaaktypeUrls). - LocalDocumentSource is the same DocumentStore.Add/Link calls the endpoints used to make inline — zero behaviour change offline. - OpenZaakDocumentSource POSTs the eio then the zaak link, persisting the DRC url (DocumentStore.SetDrcUrl) so linking doesn't re-upload. - Factored the GET/POST-with-bearer-JWT plumbing shared with OpenZaakZaakSource into ZgwHttpClient; shared the stub handler between the two source test classes as ZgwStubHandler. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
35 lines
2.0 KiB
C#
35 lines
2.0 KiB
C#
using BigRegister.Api.Contracts;
|
|
|
|
namespace BigRegister.Api.Data;
|
|
|
|
/// <summary>
|
|
/// The cases (zaken) READ seam (WP-49). A "zaak" in ZGW terms is an <see cref="Aanvraag"/>
|
|
/// here; this interface is the one injection point that lets a real ZGW backend (OpenZaak)
|
|
/// replace the local SQLite store <em>behind the same <see cref="ApplicationSummaryDto"/>
|
|
/// contract</em> — so the frontend never changes (BFF-lite anti-corruption, ADR-0001).
|
|
///
|
|
/// Default binding is <see cref="LocalZaakSource"/> (offline). Setting <c>Zgw:Enabled=true</c>
|
|
/// swaps in <c>OpenZaakZaakSource</c>. Slice 1 (WP-49) was read-only; <see cref="CreateZaak"/>
|
|
/// (WP-50) is the first write. The interface returns the wire DTO (not the domain
|
|
/// <see cref="Aanvraag"/>) precisely so each source owns its own mapping — the OpenZaak
|
|
/// source maps a ZGW Zaak into this shape, the local source maps the stored aanvraag.
|
|
/// </summary>
|
|
public interface IZaakSource
|
|
{
|
|
/// <summary>Every case, newest-first (the admin cross-owner list, WP-36).</summary>
|
|
IReadOnlyList<ApplicationSummaryDto> ListCases(DateTimeOffset now);
|
|
|
|
/// <summary>
|
|
/// Register a just-submitted <paramref name="aanvraag"/> as a zaak (WP-50). The aanvraag is
|
|
/// already persisted locally (<c>ApplicationStore.Submit</c> already ran) — this is the
|
|
/// integration side-effect, and (Referentie, Status) is what the submit endpoint hands back
|
|
/// to the FE (ADR-0001: route the create through the existing submit response DTO, don't add
|
|
/// a second one). The local source is a pure passthrough of the already-computed local
|
|
/// reference/status (ZaakUrl null — nothing to persist); the OpenZaak source creates a Zaak
|
|
/// (+ status + rol) and maps the result back into the same shape, returning the zaak's URL
|
|
/// so the endpoint can persist it (<see cref="ApplicationStore.SetZaakUrl"/>, WP-51 needs it
|
|
/// to later link documents to this zaak).
|
|
/// </summary>
|
|
(string Referentie, AanvraagStatusDto Status, string? ZaakUrl) CreateZaak(Aanvraag aanvraag, DateTimeOffset now);
|
|
}
|