diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx
index 4737cf3bc..c46d01d5e 100644
--- a/frontend/src/index.tsx
+++ b/frontend/src/index.tsx
@@ -8,6 +8,7 @@ import "./index.css";
import {
DestructionListCreatePage,
LoginPage,
+ destructionListCreateAction,
destructionListCreateLoader,
landingLoader,
loginAction,
@@ -26,6 +27,7 @@ const router = createBrowserRouter([
{
path: "/destruction-lists/create",
element: ,
+ action: destructionListCreateAction,
loader: destructionListCreateLoader,
},
{
diff --git a/frontend/src/lib/api/destructionLists.ts b/frontend/src/lib/api/destructionLists.ts
index 4af053b98..ca47316f8 100644
--- a/frontend/src/lib/api/destructionLists.ts
+++ b/frontend/src/lib/api/destructionLists.ts
@@ -1,7 +1,21 @@
+import { isPrimitive } from "@maykin-ui/admin-ui";
+
+import { Zaak } from "../../types";
import { request } from "./request";
+import { User } from "./reviewers";
export type DestructionList = {
- // TODO
+ name: string;
+ assignees: DestructionListAssignee[];
+ items: DestructionListItem[];
+};
+
+export type DestructionListAssignee = {
+ user: User["pk"];
+};
+
+export type DestructionListItem = {
+ zaak: Zaak["url"];
};
/**
@@ -12,3 +26,35 @@ export async function listDestructionLists() {
const promise: Promise = response.json();
return promise;
}
+
+/**
+ * Create a new destruction list.
+ * @param name
+ * @param zaken
+ * @param assignees
+ */
+export async function createDestructionList(
+ name: string,
+ zaken: string[] | Zaak[],
+ assignees: string[] | number[] | User[],
+) {
+ const urls = zaken.map((zaak) => (isPrimitive(zaak) ? zaak : zaak.url));
+ const assigneeIds = assignees.map((assignee) =>
+ isPrimitive(assignee) ? assignee.toString() : assignee.pk.toString(),
+ );
+
+ const destructionList = {
+ name,
+ assignees: assigneeIds.map((id) => ({ user: id })),
+ items: urls.map((url) => ({ zaak: url })),
+ };
+
+ const response = await request(
+ "POST",
+ "/destruction-lists/",
+ {},
+ destructionList,
+ );
+ const promise: Promise = response.json();
+ return promise;
+}
diff --git a/frontend/src/lib/zaakSelection/zaakSelection.ts b/frontend/src/lib/zaakSelection/zaakSelection.ts
index 01a67a0b3..5cb8eb262 100644
--- a/frontend/src/lib/zaakSelection/zaakSelection.ts
+++ b/frontend/src/lib/zaakSelection/zaakSelection.ts
@@ -67,6 +67,18 @@ export async function setZaakSelection(
sessionStorage.setItem(computedKey, json);
}
+/**
+ * Clears zaak selection cache.
+ * Note: only the `url` of selected `zaken` are stored.
+ * Note: This function is async to accommodate possible future refactors.
+ * @param key A key identifying the selection
+ */
+export async function clearZaakSelection(key: string) {
+ const computedKey = _getComputedKey(key);
+ const json = "{}";
+ sessionStorage.setItem(computedKey, json);
+}
+
/**
* Returns whether zaak is selected.
* @param key A key identifying the selection
diff --git a/frontend/src/pages/destructionlist/DestructionListCreate.stories.tsx b/frontend/src/pages/destructionlist/DestructionListCreate.stories.tsx
index 79d1b3ed8..a2967d5c9 100644
--- a/frontend/src/pages/destructionlist/DestructionListCreate.stories.tsx
+++ b/frontend/src/pages/destructionlist/DestructionListCreate.stories.tsx
@@ -13,546 +13,557 @@ export default meta;
type Story = StoryObj;
const FIXTURE = {
- count: 10,
- next: null,
- previous: null,
- results: [
- {
- uuid: "87691e74-1b0b-491a-aa63-0a396bbb1e3e",
- url: "http://localhost:8000/zaken/api/v1/zaken/87691e74-1b0b-491a-aa63-0a396bbb1e3e",
- rollen: [],
- status:
- "http://localhost:8000/zaken/api/v1/statussen/0ca07132-62fe-4ba9-9735-71268e7dff7a",
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/64c98539-076e-4fbf-8fec-fa86c560fb24",
- deelzaken: [],
- einddatum: "2024-03-24",
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-01-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
+ zaken: {
+ count: 10,
+ next: null,
+ previous: null,
+ results: [
+ {
+ uuid: "87691e74-1b0b-491a-aa63-0a396bbb1e3e",
+ url: "http://localhost:8000/zaken/api/v1/zaken/87691e74-1b0b-491a-aa63-0a396bbb1e3e",
+ rollen: [],
+ status:
+ "http://localhost:8000/zaken/api/v1/statussen/0ca07132-62fe-4ba9-9735-71268e7dff7a",
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/64c98539-076e-4fbf-8fec-fa86c560fb24",
+ deelzaken: [],
+ einddatum: "2024-03-24",
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-01-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak SHNB25",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000008",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "376924512",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-01-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/8582e4bf-2b81-4425-b403-149d12d90c54",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "geheim",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- toelichting: "",
- omschrijving: "Test zaak SHNB25",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000008",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
+ {
+ uuid: "3038cc8e-003b-411c-b6ef-7dc5ddc5a3ee",
+ url: "http://localhost:8000/zaken/api/v1/zaken/3038cc8e-003b-411c-b6ef-7dc5ddc5a3ee",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/64c98539-076e-4fbf-8fec-fa86c560fb24",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2019-01-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak CKERQQ",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2019-0000000002",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "517439943",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-01-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/9feb00c0-1c79-40e3-aa59-96d8999de624",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "openbaar",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- zaakgeometrie: null,
- bronorganisatie: "376924512",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-01-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/8582e4bf-2b81-4425-b403-149d12d90c54",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "geheim",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "3038cc8e-003b-411c-b6ef-7dc5ddc5a3ee",
- url: "http://localhost:8000/zaken/api/v1/zaken/3038cc8e-003b-411c-b6ef-7dc5ddc5a3ee",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/64c98539-076e-4fbf-8fec-fa86c560fb24",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2019-01-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
+ {
+ uuid: "78b6dd10-261b-4a40-99e2-1eea3e38bc99",
+ url: "http://localhost:8000/zaken/api/v1/zaken/78b6dd10-261b-4a40-99e2-1eea3e38bc99",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/927eb71c-d99b-4c5d-b3e2-94a07ce85923",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-02-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak CI0GFH",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000007",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "517439943",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-01-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/d2217461-6b9d-414c-b7ce-ba306f38fc2d",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "geheim",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- toelichting: "",
- omschrijving: "Test zaak CKERQQ",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2019-0000000002",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
+ {
+ uuid: "64bec25d-5752-48a9-b2f9-6c27085a469f",
+ url: "http://localhost:8000/zaken/api/v1/zaken/64bec25d-5752-48a9-b2f9-6c27085a469f",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/927eb71c-d99b-4c5d-b3e2-94a07ce85923",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-05-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak 5EQDCS",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000006",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "095847261",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2024-02-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/7c263c14-e3ae-4f2b-bc5f-a5a5052ee016",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "openbaar",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- zaakgeometrie: null,
- bronorganisatie: "517439943",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-01-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/9feb00c0-1c79-40e3-aa59-96d8999de624",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "openbaar",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "78b6dd10-261b-4a40-99e2-1eea3e38bc99",
- url: "http://localhost:8000/zaken/api/v1/zaken/78b6dd10-261b-4a40-99e2-1eea3e38bc99",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/927eb71c-d99b-4c5d-b3e2-94a07ce85923",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-02-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
+ {
+ uuid: "409a291a-9cf0-4c40-9f31-25e9452a8e79",
+ url: "http://localhost:8000/zaken/api/v1/zaken/409a291a-9cf0-4c40-9f31-25e9452a8e79",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/684b9c68-a36f-4c72-b044-fa9cdcb17ec9",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2019-01-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak JQG084",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2019-0000000001",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "517439943",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-01-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "openbaar",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- toelichting: "",
- omschrijving: "Test zaak CI0GFH",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000007",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
+ {
+ uuid: "1188687c-392b-439e-9d5f-4d17bac822bf",
+ url: "http://localhost:8000/zaken/api/v1/zaken/1188687c-392b-439e-9d5f-4d17bac822bf",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/e4f2a6b0-9377-400a-b0ce-ed66c0a315da",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-02-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak P7VDXB",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000005",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "517439943",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-01-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/a9158b2a-304f-4a6e-bc3d-9f73c83e26b1",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "geheim",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- zaakgeometrie: null,
- bronorganisatie: "517439943",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-01-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/d2217461-6b9d-414c-b7ce-ba306f38fc2d",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "geheim",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "64bec25d-5752-48a9-b2f9-6c27085a469f",
- url: "http://localhost:8000/zaken/api/v1/zaken/64bec25d-5752-48a9-b2f9-6c27085a469f",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/927eb71c-d99b-4c5d-b3e2-94a07ce85923",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-05-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
+ {
+ uuid: "5d816422-7f1c-42b4-9a4c-715d2e07aca3",
+ url: "http://localhost:8000/zaken/api/v1/zaken/5d816422-7f1c-42b4-9a4c-715d2e07aca3",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/e4f2a6b0-9377-400a-b0ce-ed66c0a315da",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-05-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak KVD4YL",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000004",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "095847261",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-02-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/9e3ff7a9-90db-45e2-ab0a-1129ec026243",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "openbaar",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- toelichting: "",
- omschrijving: "Test zaak 5EQDCS",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000006",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
+ {
+ uuid: "2e803c71-49c4-4dc0-bfd1-42f2a3da99f9",
+ url: "http://localhost:8000/zaken/api/v1/zaken/2e803c71-49c4-4dc0-bfd1-42f2a3da99f9",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/3206d651-d0f2-4690-933d-cc690444184f",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-02-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak D8JVVN",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000003",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "517439943",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-01-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/26a87623-aa50-48fd-861d-61d8f3456d36",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "geheim",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- zaakgeometrie: null,
- bronorganisatie: "095847261",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2024-02-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/7c263c14-e3ae-4f2b-bc5f-a5a5052ee016",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "openbaar",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "409a291a-9cf0-4c40-9f31-25e9452a8e79",
- url: "http://localhost:8000/zaken/api/v1/zaken/409a291a-9cf0-4c40-9f31-25e9452a8e79",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/684b9c68-a36f-4c72-b044-fa9cdcb17ec9",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2019-01-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
- },
- toelichting: "",
- omschrijving: "Test zaak JQG084",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2019-0000000001",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
+ {
+ uuid: "bd6cdd85-d578-47fa-9ddb-846354088a47",
+ url: "http://localhost:8000/zaken/api/v1/zaken/bd6cdd85-d578-47fa-9ddb-846354088a47",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/3206d651-d0f2-4690-933d-cc690444184f",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-05-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak MJ3N0F",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000002",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "095847261",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-02-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [
+ "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/99fa414b-7fc5-4eef-bf8f-3920333df7b4",
+ ],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "openbaar",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- zaakgeometrie: null,
- bronorganisatie: "517439943",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-01-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "openbaar",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "1188687c-392b-439e-9d5f-4d17bac822bf",
- url: "http://localhost:8000/zaken/api/v1/zaken/1188687c-392b-439e-9d5f-4d17bac822bf",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/e4f2a6b0-9377-400a-b0ce-ed66c0a315da",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-02-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
+ {
+ uuid: "2ca5f28c-397b-4cc6-ac76-4ef6cab19f59",
+ url: "http://localhost:8000/zaken/api/v1/zaken/2ca5f28c-397b-4cc6-ac76-4ef6cab19f59",
+ rollen: [],
+ status: null,
+ zaaktype:
+ "http://localhost:8000/catalogi/api/v1/zaaktypen/773b6b77-486a-4b6c-be3e-cf13f4387cf3",
+ deelzaken: [],
+ einddatum: null,
+ hoofdzaak: null,
+ kenmerken: [],
+ resultaat: null,
+ startdatum: "2021-05-01",
+ verlenging: null,
+ opschorting: {
+ reden: "",
+ indicatie: false,
+ },
+ toelichting: "",
+ omschrijving: "Test zaak S75OKU",
+ zaakobjecten: [],
+ archiefstatus: "nog_te_archiveren",
+ eigenschappen: [],
+ identificatie: "ZAAK-2021-0000000001",
+ processobject: {
+ objecttype: "",
+ registratie: "",
+ datumkenmerk: "",
+ identificatie: "",
+ },
+ zaakgeometrie: null,
+ bronorganisatie: "095847261",
+ publicatiedatum: null,
+ archiefnominatie: "vernietigen",
+ einddatumGepland: null,
+ registratiedatum: "2024-03-25",
+ archiefactiedatum: "2021-02-01",
+ processobjectaard: "",
+ betalingsindicatie: "",
+ communicatiekanaal: "",
+ laatsteBetaaldatum: null,
+ productenOfDiensten: [],
+ selectielijstklasse: "",
+ relevanteAndereZaken: [],
+ zaakinformatieobjecten: [],
+ startdatumBewaartermijn: null,
+ betalingsindicatieWeergave: "",
+ opdrachtgevendeOrganisatie: "",
+ vertrouwelijkheidaanduiding: "openbaar",
+ uiterlijkeEinddatumAfdoening: null,
+ verantwoordelijkeOrganisatie: "104567387",
},
- toelichting: "",
- omschrijving: "Test zaak P7VDXB",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000005",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
- },
- zaakgeometrie: null,
- bronorganisatie: "517439943",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-01-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/a9158b2a-304f-4a6e-bc3d-9f73c83e26b1",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "geheim",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "5d816422-7f1c-42b4-9a4c-715d2e07aca3",
- url: "http://localhost:8000/zaken/api/v1/zaken/5d816422-7f1c-42b4-9a4c-715d2e07aca3",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/e4f2a6b0-9377-400a-b0ce-ed66c0a315da",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-05-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
- },
- toelichting: "",
- omschrijving: "Test zaak KVD4YL",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000004",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
- },
- zaakgeometrie: null,
- bronorganisatie: "095847261",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-02-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/9e3ff7a9-90db-45e2-ab0a-1129ec026243",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "openbaar",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "2e803c71-49c4-4dc0-bfd1-42f2a3da99f9",
- url: "http://localhost:8000/zaken/api/v1/zaken/2e803c71-49c4-4dc0-bfd1-42f2a3da99f9",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/3206d651-d0f2-4690-933d-cc690444184f",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-02-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
- },
- toelichting: "",
- omschrijving: "Test zaak D8JVVN",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000003",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
- },
- zaakgeometrie: null,
- bronorganisatie: "517439943",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-01-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/26a87623-aa50-48fd-861d-61d8f3456d36",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "geheim",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
- {
- uuid: "bd6cdd85-d578-47fa-9ddb-846354088a47",
- url: "http://localhost:8000/zaken/api/v1/zaken/bd6cdd85-d578-47fa-9ddb-846354088a47",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/3206d651-d0f2-4690-933d-cc690444184f",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-05-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
- },
- toelichting: "",
- omschrijving: "Test zaak MJ3N0F",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000002",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
- },
- zaakgeometrie: null,
- bronorganisatie: "095847261",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-02-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [
- "http://localhost:8000/zaken/api/v1/zaakinformatieobjecten/99fa414b-7fc5-4eef-bf8f-3920333df7b4",
- ],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "openbaar",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
- },
+ ],
+ },
+ selectedZaken: [],
+ zaaktypeChoices: [
{
- uuid: "2ca5f28c-397b-4cc6-ac76-4ef6cab19f59",
- url: "http://localhost:8000/zaken/api/v1/zaken/2ca5f28c-397b-4cc6-ac76-4ef6cab19f59",
- rollen: [],
- status: null,
- zaaktype:
- "http://localhost:8000/catalogi/api/v1/zaaktypen/773b6b77-486a-4b6c-be3e-cf13f4387cf3",
- deelzaken: [],
- einddatum: null,
- hoofdzaak: null,
- kenmerken: [],
- resultaat: null,
- startdatum: "2021-05-01",
- verlenging: null,
- opschorting: {
- reden: "",
- indicatie: false,
- },
- toelichting: "",
- omschrijving: "Test zaak S75OKU",
- zaakobjecten: [],
- archiefstatus: "nog_te_archiveren",
- eigenschappen: [],
- identificatie: "ZAAK-2021-0000000001",
- processobject: {
- objecttype: "",
- registratie: "",
- datumkenmerk: "",
- identificatie: "",
- },
- zaakgeometrie: null,
- bronorganisatie: "095847261",
- publicatiedatum: null,
- archiefnominatie: "vernietigen",
- einddatumGepland: null,
- registratiedatum: "2024-03-25",
- archiefactiedatum: "2021-02-01",
- processobjectaard: "",
- betalingsindicatie: "",
- communicatiekanaal: "",
- laatsteBetaaldatum: null,
- productenOfDiensten: [],
- selectielijstklasse: "",
- relevanteAndereZaken: [],
- zaakinformatieobjecten: [],
- startdatumBewaartermijn: null,
- betalingsindicatieWeergave: "",
- opdrachtgevendeOrganisatie: "",
- vertrouwelijkheidaanduiding: "openbaar",
- uiterlijkeEinddatumAfdoening: null,
- verantwoordelijkeOrganisatie: "104567387",
+ label: "Melding klein kansspel",
+ value:
+ "https://test.openzaak.nl/catalogi/api/v1/zaaktypen/e95d9bdf-588d-4965-a469-378d9e0ca91e",
+ extra: "MKK",
},
],
};
diff --git a/frontend/src/pages/destructionlist/DestructionListCreate.tsx b/frontend/src/pages/destructionlist/DestructionListCreate.tsx
index 3e71cb675..da3258afa 100644
--- a/frontend/src/pages/destructionlist/DestructionListCreate.tsx
+++ b/frontend/src/pages/destructionlist/DestructionListCreate.tsx
@@ -1,21 +1,30 @@
import {
AttributeData,
+ Button,
DataGridProps,
+ H2,
+ Input,
ListTemplate,
TypedField,
} from "@maykin-ui/admin-ui";
-import React from "react";
+import { ActionFunctionArgs } from "@remix-run/router/utils";
+import React, { useState } from "react";
import {
+ useActionData,
useLoaderData,
useNavigation,
useSearchParams,
+ useSubmit,
} from "react-router-dom";
+import { createDestructionList } from "../../lib/api/destructionLists";
import { loginRequired } from "../../lib/api/loginRequired";
import { ZaaktypeChoice, listZaaktypeChoices } from "../../lib/api/private";
import { PaginatedZaken, listZaken } from "../../lib/api/zaken";
import {
addToZaakSelection,
+ clearZaakSelection,
+ getZaakSelection,
isZaakSelected,
removeFromZaakSelection,
} from "../../lib/zaakSelection/zaakSelection";
@@ -57,6 +66,27 @@ export const destructionListCreateLoader = loginRequired(
},
);
+/**
+ * React Router action.
+ * @param request
+ */
+export async function destructionListCreateAction({
+ request,
+}: ActionFunctionArgs) {
+ const formData = await request.formData();
+ const name = formData.get("name") as string;
+ const zaakUrls = formData.getAll("zaakUrls") as string[];
+ const assigneeIds = formData.getAll("assigneeIds") as string[];
+
+ try {
+ await createDestructionList(name, zaakUrls, assigneeIds);
+ } catch (e: unknown) {
+ return await (e as Response).json();
+ }
+ await clearZaakSelection(DESTRUCTION_LIST_CREATE_KEY);
+ return true;
+}
+
export type DestructionListCreateProps = Omit<
React.ComponentProps<"main">,
"onChange" | "onSelect"
@@ -68,12 +98,19 @@ export type DestructionListCreateProps = Omit<
export function DestructionListCreatePage({
...props
}: DestructionListCreateProps) {
+ // Loader/Action I/O.
const { zaken, selectedZaken, zaaktypeChoices } =
useLoaderData() as DestructionListCreateContext;
+ const errors = useActionData() || {};
+ const submit = useSubmit();
+
const [searchParams, setSearchParams] = useSearchParams();
const objectList = zaken.results as unknown as AttributeData[];
const { state } = useNavigation();
+ const [isEditingNameState, setIsEditingNameState] = useState(true);
+ const [nameState, setNameState] = useState("Naam van de vernietigingslijst");
+
const fields: TypedField[] = [
{
name: "identificatie",
@@ -193,8 +230,27 @@ export function DestructionListCreatePage({
);
};
+ /**
+ * Get called when the selection is submitted.
+ */
+ const onCreate = async () => {
+ const zaakSelection = await getZaakSelection(DESTRUCTION_LIST_CREATE_KEY);
+ const zaakUrls = Object.entries(zaakSelection)
+ .filter(([, selected]) => selected)
+ .map(([url]) => url);
+ const assigneeIds = [1]; // TODO: Add a modal with actual assignees
+
+ const data = new FormData();
+ data.append("name", nameState);
+ zaakUrls.forEach((url) => data.append("zaakUrls", url));
+ assigneeIds.forEach((id) => data.append("assigneeIds", String(id)));
+
+ submit(data, { method: "POST" });
+ };
+
return (
setNameState(e.target.value)}
+ onFocus={(e) => e.target.select()}
+ onBlur={() => setIsEditingNameState(false)}
+ onKeyUp={(e) =>
+ e.code === "Enter" && setIsEditingNameState(false)
+ }
+ />
+ ) : (
+
+ ),
boolProps: {
explicit: true,
},