Repository: infonl/dimpact-zaakafhandelcomponent
Pull request #3351: feat: reden wijzigen initiator
Author: login: xiduzo
Created: 2025-05-14T14:03:34Z | Merged: 2025-05-16T11:54:07Z

This pull request introduces changes to improve the handling of initiator updates in the application. The updates include adding support for specifying a reason when changing an initiator, updating the HTTP method for initiator modifications, and enhancing the user experience with confirmation dialogs and localized messages.

### Enhancements to initiator handling:

* Updated `DialogComponent` to pass the callback result (`data`) directly to `dialogRef.close` instead of a boolean value, allowing more flexibility in handling dialog results. (`src/main/app/src/app/shared/dialog/dialog.component.ts`, [src/main/app/src/app/shared/dialog/dialog.component.tsL50-R50](diffhunk://#diff-4f20afbe11ed85afd69c572c6d9a3b3a1452832cafd17a97c26861bb39216627L50-R50))
* Modified `ZaakViewComponent` to include a confirmation dialog when changing an initiator. The dialog collects a reason for the change, which is then passed to the backend. (`src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts`, [src/main/app/src/app/zaken/zaak-view/zaak-view.component.tsL1012-L1026](diffhunk://#diff-14b5c3c4e0d3f425036177305b195cf3a0676481590bebf604ceba13ae75ecbdL1012-L1026))
* Updated `ZakenService` to accept an optional `reason` parameter when updating the initiator and switched the HTTP method from `PUT` to `PATCH` for partial updates. (`src/main/app/src/app/zaken/zaken.service.ts`, [src/main/app/src/app/zaken/zaken.service.tsL216-R227](diffhunk://#diff-77edb5ea0afd29dea13d23b27f4e2d2a3c854f5e995d92ce1f780cfb580ee286L216-R227))

### Backend changes:

* Adjusted the `ZaakRestService` to handle the new `reason` parameter when adding or updating an initiator. The default reason is used if none is provided. The HTTP method was also updated from `PUT` to `PATCH` for consistency with the frontend. (`src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt`, [[1]](diffhunk://#diff-ee1ff4793bc36d23bf497c590a29424b56c1874f97f93483732fd7eaa21f31f3L203-R215) [[2]](diffhunk://#diff-ee1ff4793bc36d23bf497c590a29424b56c1874f97f93483732fd7eaa21f31f3L271-R277) [[3]](diffhunk://#diff-ee1ff4793bc36d23bf497c590a29424b56c1874f97f93483732fd7eaa21f31f3L968-R975) [[4]](diffhunk://#diff-ee1ff4793bc36d23bf497c590a29424b56c1874f97f93483732fd7eaa21f31f3L980-R987)

### Localization improvements:

* Added a new localized message for the confirmation dialog when changing an initiator in both English and Dutch. (`src/main/app/src/assets/i18n/en.json`, [[1]](diffhunk://#diff-57e9586bcf4390dd074ebbbbae39d448f1c5c2329c0c31c51e87645a819cc9dcR846); `src/main/app/src/assets/i18n/nl.json`, [[2]](diffhunk://#diff-75c15ffb62a2f759f0dd674475297f30f2dd58275cae67261c41e896b806e173R845)

Solves https://dimpact.atlassian.net/browse/PZ-1734


Diff:
diff --git a/src/main/app/.eslintrc.js b/src/main/app/.eslintrc.js
index 8b50ce7d7a..543f140629 100644
--- a/src/main/app/.eslintrc.js
+++ b/src/main/app/.eslintrc.js
@@ -21,7 +21,7 @@ module.exports = {
         "eslint:recommended",
         "plugin:@typescript-eslint/recommended",
         "plugin:@angular-eslint/recommended",
-        "plugin:prettier/recommended",
+        // "plugin:prettier/recommended",
       ],
       rules: {
         /**
diff --git a/src/main/app/src/app/shared/dialog/dialog.component.ts b/src/main/app/src/app/shared/dialog/dialog.component.ts
index 851b622639..6eed047cea 100644
--- a/src/main/app/src/app/shared/dialog/dialog.component.ts
+++ b/src/main/app/src/app/shared/dialog/dialog.component.ts
@@ -47,7 +47,7 @@ export class DialogComponent implements OnInit {
       }
     }
     this.data.options.callback(results).subscribe({
-      next: () => this.dialogRef.close(true),
+      next: (data) => this.dialogRef.close(data),
       error: () => this.dialogRef.close(false),
     });
   }
diff --git a/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts b/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts
index a54271243d..c73affdef0 100644
--- a/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts
+++ b/src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts
@@ -35,7 +35,6 @@ import { WebsocketListener } from "../../core/websocket/model/websocket-listener
 import { WebsocketService } from "../../core/websocket/websocket.service";
 import { IdentityService } from "../../identity/identity.service";
 import { KlantenService } from "../../klanten/klanten.service";
-import { Klant } from "../../klanten/model/klanten/klant";
 import { KlantGegevens } from "../../klanten/model/klanten/klant-gegevens";
 import { ViewResourceUtil } from "../../locatie/view-resource.util";
 import { NotitieType } from "../../notities/model/notitietype.enum";
@@ -1011,21 +1010,55 @@ export class ZaakViewComponent
     );
   }
 
-  initiatorGeselecteerd(initiator: Klant): void {
+  initiatorGeselecteerd(initiator: GeneratedType<"RestPersoon">) {
     this.websocketService.suspendListener(this.zaakRollenListener);
     this.actionsSidenav.close();
-    const melding = this.zaak.initiatorIdentificatie
-      ? "msg.initiator.gewijzigd"
-      : "msg.initiator.toegevoegd";
+
+    if (this.zaak.initiatorIdentificatie) {
+      // We already have an initiator, we need a reason to change it
+      this.dialog
+        .open(DialogComponent, {
+          data: new DialogData<unknown, { reden: string }>({
+            formFields: [
+              new TextareaFormFieldBuilder()
+                .id("reden")
+                .label("reden")
+                .validators(Validators.required)
+                .build(),
+            ],
+            callback: ({ reden }) =>
+              this.zakenService.updateInitiator(this.zaak, initiator, reden),
+            melding: this.translate.instant("msg.initiator.bevestigen", {
+              naam: initiator.naam,
+            }),
+            icon: "link",
+          }),
+        })
+        .afterClosed()
+        .subscribe((zaak) =>
+          this.handleNewInitiator("msg.initiator.gewijzigd", zaak),
+        );
+      return;
+    }
+
     this.zakenService
       .updateInitiator(this.zaak, initiator)
-      .subscribe((zaak: GeneratedType<"RestZaak">) => {
-        this.zaak = zaak;
-        this.utilService.openSnackbar(melding, {
-          naam: zaak.initiatorIdentificatie,
-        });
-        this.loadHistorie();
-      });
+      .subscribe((zaak) =>
+        this.handleNewInitiator("msg.initiator.toegevoegd", zaak),
+      );
+  }
+
+  private handleNewInitiator(
+    notification: string,
+    zaak?: GeneratedType<"RestZaak">,
+  ): void {
+    if (!zaak) return;
+
+    this.zaak = zaak;
+    this.utilService.openSnackbar(notification, {
+      naam: zaak.initiatorIdentificatie,
+    });
+    this.loadHistorie();
   }
 
   deleteInitiator(): void {
diff --git a/src/main/app/src/app/zaken/zaken.service.ts b/src/main/app/src/app/zaken/zaken.service.ts
index 1a2f1c828d..2acc093ec7 100644
--- a/src/main/app/src/app/zaken/zaken.service.ts
+++ b/src/main/app/src/app/zaken/zaken.service.ts
@@ -213,13 +213,18 @@ export class ZakenService {
       );
   }
 
-  updateInitiator(zaak: GeneratedType<"RestZaak">, initiator: Klant) {
+  updateInitiator(
+    zaak: GeneratedType<"RestZaak">,
+    initiator: GeneratedType<"RestPersoon">,
+    reason?: string,
+  ) {
     return this.zacHttpClient
-      .PUT("/rest/zaken/initiator", {
+      .PATCH("/rest/zaken/initiator", {
         zaakUUID: zaak.uuid,
-        betrokkeneIdentificatieType: initiator.identificatieType,
-        betrokkeneIdentificatie: initiator.identificatie,
+        betrokkeneIdentificatieType: initiator.identificatieType!,
+        betrokkeneIdentificatie: initiator.identificatie!,
         roltypeUUID: undefined as unknown as string, // TODO: check this interface
+        roltoelichting: reason,
       })
       .pipe(
         catchError((err) => this.foutAfhandelingService.foutAfhandelen(err)),
diff --git a/src/main/app/src/assets/i18n/en.json b/src/main/app/src/assets/i18n/en.json
index 46cbf860b4..d4f77eec9c 100644
--- a/src/main/app/src/assets/i18n/en.json
+++ b/src/main/app/src/assets/i18n/en.json
@@ -842,6 +842,7 @@
   "msg.initiator.ontkoppelen.uitgevoerd": "The initiator has been unlinked",
   "msg.initiator.toegevoegd": "The initiator {{naam}} has been added",
   "msg.initiator.gewijzigd": "The initiator has been updated",
+  "msg.initiator.bevestigen": "{{naam}} will be set as initiator of the case.",
   "msg.loading": "Retrieving the data",
   "msg.mailtemplate.opgeslagen": "Mailtemplate saved",
   "msg.mailtemplate.verwijderen.bevestigen": "Delete mailtemplate?",
diff --git a/src/main/app/src/assets/i18n/nl.json b/src/main/app/src/assets/i18n/nl.json
index 43487d4e37..c52b3cc0ad 100644
--- a/src/main/app/src/assets/i18n/nl.json
+++ b/src/main/app/src/assets/i18n/nl.json
@@ -841,6 +841,7 @@
   "msg.initiator.ontkoppelen.bevestigen": "De initiator ontkoppelen van de zaak?",
   "msg.initiator.ontkoppelen.uitgevoerd": "De initiator is ontkoppeld van de zaak",
   "msg.initiator.toegevoegd": "De initiator {{naam}} is toegevoegd",
+  "msg.initiator.bevestigen": "{{naam}} wordt de behandelaar van de zaak",
   "msg.initiator.gewijzigd": "De initiator is gewijzigd",
   "msg.loading": "Bezig met het ophalen van de gegevens",
   "msg.mailtemplate.opgeslagen": "Mailtemplate opgeslagen",
diff --git a/src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt b/src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt
index 28f47c9671..0a857997a8 100644
--- a/src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt
+++ b/src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt
@@ -200,14 +200,20 @@ class ZaakRestService @Inject constructor(
             }
         }
 
-    @PUT
+    @PATCH
     @Path("initiator")
     fun updateInitiator(gegevens: RESTZaakBetrokkeneGegevens): RestZaak {
         val zaak = zrcClientService.readZaak(gegevens.zaakUUID)
         zgwApiService.findInitiatorRoleForZaak(zaak)?.also {
+            requireNotNull(gegevens.roltoelichting) { throw BetrokkeneNotAllowed() }
             removeInitiator(zaak, it, ROL_VERWIJDER_REDEN)
         }
-        addInitiator(gegevens.betrokkeneIdentificatieType, gegevens.betrokkeneIdentificatie, zaak)
+        addInitiator(
+            gegevens.betrokkeneIdentificatieType,
+            gegevens.betrokkeneIdentificatie,
+            zaak,
+            gegevens.roltoelichting
+        )
         return restZaakConverter.toRestZaak(zaak)
     }
 
@@ -268,7 +274,8 @@ class ZaakRestService @Inject constructor(
             addInitiator(
                 restZaak.initiatorIdentificatieType!!,
                 restZaak.initiatorIdentificatie!!,
-                zaak
+                zaak,
+                AANMAKEN_ZAAK_REDEN
             )
         }
         restZaak.groep?.let {
@@ -965,7 +972,8 @@ class ZaakRestService @Inject constructor(
     private fun addInitiator(
         identificationType: IdentificatieType,
         identification: String,
-        zaak: Zaak
+        zaak: Zaak,
+        reden: String? = ROL_TOEVOEGEN_REDEN
     ) {
         val zaakRechten = policyService.readZaakRechten(zaak)
         when (identificationType) {
@@ -977,7 +985,7 @@ class ZaakRestService @Inject constructor(
             identificationType = identificationType,
             identification = identification,
             zaak = zaak,
-            explanation = ROL_TOEVOEGEN_REDEN
+            explanation = reden?.ifEmpty { ROL_TOEVOEGEN_REDEN } ?: ROL_TOEVOEGEN_REDEN
         )
     }
 
diff --git a/src/test/kotlin/nl/info/zac/app/zaak/ZaakRestServiceTest.kt b/src/test/kotlin/nl/info/zac/app/zaak/ZaakRestServiceTest.kt
index 927b7428e7..00ea21f243 100644
--- a/src/test/kotlin/nl/info/zac/app/zaak/ZaakRestServiceTest.kt
+++ b/src/test/kotlin/nl/info/zac/app/zaak/ZaakRestServiceTest.kt
@@ -278,17 +278,13 @@ class ZaakRestServiceTest : BehaviorSpec({
                 identificationType = restZaak.initiatorIdentificatieType!!,
                 identification = restZaak.initiatorIdentificatie!!,
                 zaak = zaak,
-                explanation = "Toegekend door de medewerker tijdens het behandelen van de zaak"
+                explanation = "Aanmaken zaak"
             )
         } just runs
+
         every { bpmnService.findProcessDefinitionForZaaktype(zaakTypeUUID) } returns null
 
-        When(
-            """
-                createZaak is called for a zaaktype for which the logged in user has permissions and for which
-                no BPMN process definition is found
-            """
-        ) {
+        When("a zaaktype is created for which the user has permissions and no BPMN process definition is found") {
             every { policyService.readOverigeRechten() } returns createOverigeRechtenAllDeny(startenZaak = true)
             every {
                 policyService.readZaakRechten(zaak)
@@ -925,12 +921,13 @@ class ZaakRestServiceTest : BehaviorSpec({
                         restZaakBetrokkenGegevens.betrokkeneIdentificatieType,
                         restZaakBetrokkenGegevens.betrokkeneIdentificatie,
                         zaak,
-                        "Toegekend door de medewerker tijdens het behandelen van de zaak"
+                        restZaakBetrokkenGegevens.roltoelichting!!
                     )
                 }
             }
         }
     }
+
     Given("A zaak with an initiator") {
         val zaak = createZaak()
         val rolMedewerker = createRolMedewerker()
@@ -1045,6 +1042,7 @@ class ZaakRestServiceTest : BehaviorSpec({
             }
         }
     }
+
     Given(
         """
         Two existing zaaktypes in the configured catalogue for which the logged in user is authorised
@@ -1299,4 +1297,60 @@ class ZaakRestServiceTest : BehaviorSpec({
             }
         }
     }
+
+    Given("an initiator is being updated") {
+        val data = createRESTZaakBetrokkeneGegevens()
+        val zaak = createZaak()
+
+        every { zrcClientService.readZaak(data.zaakUUID) } returns zaak
+        every { zgwApiService.findInitiatorRoleForZaak(any()) } returns null
+        every { policyService.readZaakRechten(zaak) } returns createZaakRechten()
+        every {
+            zaakService.addInitiatorToZaak(
+                data.betrokkeneIdentificatieType,
+                data.betrokkeneIdentificatie,
+                zaak,
+                any()
+            )
+        } just runs
+        every { restZaakConverter.toRestZaak(zaak) } returns createRestZaak()
+
+        When("a reason is passed") {
+            zaakRestService.updateInitiator(
+                data.apply {
+                    roltoelichting = "test reden"
+                }
+            )
+
+            Then("the reasons should get saved") {
+                verify(exactly = 1) {
+                    zaakService.addInitiatorToZaak(
+                        data.betrokkeneIdentificatieType,
+                        data.betrokkeneIdentificatie,
+                        any(),
+                        "test reden"
+                    )
+                }
+            }
+        }
+
+        When("no reason is passed") {
+            zaakRestService.updateInitiator(
+                data.apply {
+                    roltoelichting = null
+                }
+            )
+
+            Then("the reason should be set to the default") {
+                verify(exactly = 1) {
+                    zaakService.addInitiatorToZaak(
+                        data.betrokkeneIdentificatieType,
+                        data.betrokkeneIdentificatie,
+                        any(),
+                        "Toegekend door de medewerker tijdens het behandelen van de zaak"
+                    )
+                }
+            }
+        }
+    }
 })


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR introduces enhancements to improve the initiator update flow by supporting a reason for changes, switching the HTTP method from PUT to PATCH for partial updates, and providing better user feedback through confirmation dialogs and localized messages.
- Backend: Updated HTTP annotations and added an optional reason parameter for initiator updates.
- Frontend: Updated the initiator update flow in the zaak-view component to include a confirmation dialog and aligned the zaken service to use PATCH.
- Localization: Added new English and Dutch translation strings for the confirmation dialog.

### Reviewed Changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File | Description |
| ---- | ----------- |
| src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt | Updated HTTP method to PATCH and added handling for an optional reason |
| src/main/app/src/app/zaken/zaken.service.ts | Refactored updateInitiator to accept a reason and use PATCH instead of PUT |
| src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts | Modified initiator update logic to include a confirmation dialog that collects a reason |
| src/main/app/src/app/shared/dialog/dialog.component.ts | Adjusted the dialog callback to forward the result data |
| src/main/app/src/assets/i18n/en.json & nl.json | Added new localization messages for initiator confirmations |
</details>



<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**src/main/app/src/app/zaken/zaken.service.ts:227**
* [nitpick] Review the naming convention used for the reason parameter; aligning the parameter name across frontend and backend could improve clarity.
```
        roltoelichting: reason,
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T14:04:16Z
user: login: edgarvonk
body: looks good! we could add a simple test maybe?
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-14T14:20:28Z
user: login: hsiliev
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T14:24:43Z
user: login: infonl-marcel
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T04:33:57Z
user: login: nischitha-2024
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T07:34:29Z

Review comments:
diff_hunk: @@ -1009,21 +1008,55 @@ export class ZaakViewComponent
     );
   }
 
-  initiatorGeselecteerd(initiator: Klant): void {
+  initiatorGeselecteerd(initiator: GeneratedType<"RestPersoon">) {
     this.websocketService.suspendListener(this.zaakRollenListener);
     this.actionsSidenav.close();
-    const melding = this.zaak.initiatorIdentificatie
-      ? "msg.initiator.gewijzigd"
-      : "msg.initiator.toegevoegd";
+
+    if (this.zaak.initiatorIdentificatie) {
+      // We already have an initiator, we need a reason to change it
+      this.dialog
+        .open(DialogComponent, {
+          data: new DialogData<unknown, { reden: string }>({
+            formFields: [
+              new TextareaFormFieldBuilder()
+                .id("reden")
+                .label("reden")
path: src/main/app/src/app/zaken/zaak-view/zaak-view.component.ts
user: login: Copilot
body: [nitpick] Consider localizing the label for the textarea input instead of hardcoding 'reden' to support future language changes and improve consistency.
```suggestion
                .label(this.translate.instant("label.reden"))
```
created_at: 2025-05-14T14:04:16Z
author_association: CONTRIBUTOR
diff_hunk: @@ -200,14 +200,19 @@ class ZaakRestService @Inject constructor(
             }
         }
 
-    @PUT
+    @PATCH
     @Path("initiator")
     fun updateInitiator(gegevens: RESTZaakBetrokkeneGegevens): RestZaak {
         val zaak = zrcClientService.readZaak(gegevens.zaakUUID)
         zgwApiService.findInitiatorRoleForZaak(zaak)?.also {
             removeInitiator(zaak, it, ROL_VERWIJDER_REDEN)
         }
-        addInitiator(gegevens.betrokkeneIdentificatieType, gegevens.betrokkeneIdentificatie, zaak)
+        addInitiator(
+            gegevens.betrokkeneIdentificatieType,
path: src/main/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt
user: login: edgarvonk
body: Could consider using named parameters here to increase readability. Although it's pretty clear already I guess..

E.g. 

```
  addInitiator(
            identificationType = gegevens.betrokkeneIdentificatieType,
            [..]
```
created_at: 2025-05-14T14:16:40Z
author_association: MEMBER

PR comments:
user: login: github-actions[bot]
created_at: 2025-05-14T14:26:04Z
body: ## unit-test-results
 97 files  ±0  141 suites  ±0   1m 56s ⏱️ ±0s
586 tests +2  586 ✅ +2  0 💤 ±0  0 ❌ ±0 
736 runs  +2  736 ✅ +2  0 💤 ±0  0 ❌ ±0 

Results for commit 5d6177b2. ± Comparison against base commit 82f69ddc.

[test-results]:data:application/gzip;base64,H4sIAHwjJ2gC/13MSw6DIBSF4a0Yxh2UhyDdTAMXTG6q0vAYme69YKy1Hf7fSc5KRpx8IrdOq0tHUsG8FRW0pivRZAxLAyor1DG3uR+OuqcC8E8PfFa6HjAanH7AxxjiLrEs7VNxucfn8izfx61Ph1uf/yDMM+YapHeSKmUZMOrB6sGAkEL0XlnHOfeKgx6ZdY683qrSDEEIAQAA

:recycle: This comment has been updated with latest results.
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-14T14:28:53Z
body: ## integration-test-results
 36 files  ±0   36 suites  ±0   42s ⏱️ ±0s
130 tests ±0  130 ✅ ±0  0 💤 ±0  0 ❌ ±0 
148 runs  ±0  148 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 5d6177b2. ± Comparison against base commit 82f69ddc.

[test-results]:data:application/gzip;base64,H4sIAG4kJ2gC/13MSw7CIBSF4a00jB3Io9C6GQMXSG5si6EwMu5dJFXQ4fef5DyIx8Xt5DJweRrInjE12Rx1wrAVC1ZcpvQeKT9/dN0zwH+64b2kFrzG5Se4GEM8Ssxb/RTTge9lV9pjdXdY3f9BWFdMBWS0kiplGDDqwMyTBiGFGJ0ylnPuFIfZM2Mteb4Axks1JQYBAAA=

:recycle: This comment has been updated with latest results.
author_association: CONTRIBUTOR
user: login: codecov[bot]
created_at: 2025-05-16T08:56:57Z
body: ## [Codecov](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) Report
Attention: Patch coverage is `29.16667%` with `17 lines` in your changes missing coverage. Please review.
> Project coverage is 41.22%. Comparing base [(`82f69dd`)](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/commit/82f69ddc18565695a78887a4876a769133033cce?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) to head [(`5d6177b`)](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/commit/5d6177b2c21ecb98ac46445e7bd333e73c9f2bdd?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl).
> Report is 1 commits behind head on main.

:white_check_mark: All tests successful. No failed tests found.

| [Files with missing lines](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | Patch % | Lines |
|---|---|---|
| [...app/src/app/zaken/zaak-view/zaak-view.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzaken%2Fzaak-view%2Fzaak-view.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvemFrZW4vemFhay12aWV3L3phYWstdmlldy5jb21wb25lbnQudHM=) | 0.00% | [10 Missing and 2 partials :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [...ain/kotlin/nl/info/zac/app/zaak/ZaakRestService.kt](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&filepath=src%2Fmain%2Fkotlin%2Fnl%2Finfo%2Fzac%2Fapp%2Fzaak%2FZaakRestService.kt&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4va290bGluL25sL2luZm8vemFjL2FwcC96YWFrL1phYWtSZXN0U2VydmljZS5rdA==) | 70.00% | [1 Missing and 2 partials :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [...main/app/src/app/shared/dialog/dialog.component.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fshared%2Fdialog%2Fdialog.component.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvc2hhcmVkL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRz) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |
| [src/main/app/src/app/zaken/zaken.service.ts](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&filepath=src%2Fmain%2Fapp%2Fsrc%2Fapp%2Fzaken%2Fzaken.service.ts&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#diff-c3JjL21haW4vYXBwL3NyYy9hcHAvemFrZW4vemFrZW4uc2VydmljZS50cw==) | 0.00% | [1 Missing :warning: ](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) |

<details><summary>Additional details and impacted files</summary>


```diff
@@            Coverage Diff             @@
##               main    #3351    +/-   ##
==========================================
  Coverage     41.22%   41.22%            
- Complexity     3757     3759     +2     
==========================================
  Files          1395     1395            
  Lines         36155    36167    +12     
  Branches       3952     3953     +1     
==========================================
+ Hits          14904    14909     +5     
+ Misses        20403    20029   -374     
- Partials        848     1229   +381     
```

| [Flag](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | Coverage Δ | |
|---|---|---|
| [integrationtests](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | `44.85% <0.00%> (-0.02%)` | :arrow_down: |
| [unittests](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl) | `28.94% <29.16%> (+<0.01%)` | :arrow_up: |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl#carryforward-flags-in-the-pull-request-comment) to find out more.

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/infonl/dimpact-zaakafhandelcomponent/pull/3351?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=infonl).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
author_association: NONE