namespace Acl.Application; /// The ACL's single operation: open a zaak from a domain payload, /// default-filling the ZGW-mandatory fields (ADR-0003). public sealed class AclService(IZaakGateway gateway, AclDefaults defaults, IClock clock) { public Task OpenZaakAsync(DomainRegistration registration, CancellationToken ct = default) { ArgumentNullException.ThrowIfNull(registration); var request = new ZaakRequest( defaults.Bronorganisatie, defaults.VerantwoordelijkeOrganisatie, defaults.Vertrouwelijkheidaanduiding, defaults.ZaaktypeUrl, clock.Today); return gateway.OpenZaakAsync(request, ct); } /// /// Approve a zaak: set it to the eindstatus of the configured BIG zaaktype (ADR-0003 default). The /// domain hands over only the zaak URL; the ACL owns which statustype means "approved" (ยง8.1). /// public Task ApproveZaakAsync(Uri zaakUrl, CancellationToken ct = default) { ArgumentNullException.ThrowIfNull(zaakUrl); return gateway.SetZaakToEindstatusAsync(zaakUrl, defaults.ZaaktypeUrl, clock.Today, ct); } }