diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java index 5fedcbcae2f1aa5fc028dace4634df10794564c6..619986d45e4ad01ac04dd5df7979adaea0a907a5 100644 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/EntryData.java @@ -27,6 +27,7 @@ public class EntryData { private String formId; @JsonProperty("name") private String formName; + private Servicekonto serviceKonto; @Builder @Getter @@ -35,4 +36,20 @@ public class EntryData { private String address; } } + + @Builder + @Getter + @Jacksonized + public static class Servicekonto { + private String type; + private PostfachAddress postfachAddress; + } + + @Builder + @Getter + @Jacksonized + public static class PostfachAddress { + private String identifier; + private String type; + } } diff --git a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java index 287a9e4c71a00c916f70b4c180860111e55047f5..7ea8b6c58306e61584cd80aa02ddc5a0bdd59ac5 100644 --- a/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java +++ b/enterprise-adapter/src/main/java/de/ozgcloud/eingang/enterprise/entry/FormDataMapper.java @@ -10,6 +10,9 @@ import org.mapstruct.Mapping; import de.ozgcloud.eingang.common.formdata.FormData; import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.formdata.PostfachAddressIdentifier; +import de.ozgcloud.eingang.common.formdata.ServiceKonto.PostfachAddress; +import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; import de.ozgcloud.eingang.common.formdata.ZustaendigeStelle; @Mapper @@ -32,11 +35,12 @@ public interface FormDataMapper { @Mapping(target = "zustaendigeStelle", source = "control.zustaendigeStelle") FormData mapEntryData(EntryData entryData); + @Mapping(target = "vorgangNummer", ignore = true) @Mapping(target = "createdAt", ignore = true) @Mapping(target = "formEngineName", constant = "EnterpriseSoftware") @Mapping(target = "requestId", source = "transactionId") @Mapping(target = "sender", ignore = true) // TODO fill from authentication - @Mapping(target = "serviceKonto", ignore = true) + @Mapping(target = "serviceKonto.postfachAddresses", ignore = true) FormHeader mapHeader(EntryData.ControlData controlData); default ZustaendigeStelle fromId(String organisationsEinheitenId) { @@ -57,4 +61,29 @@ public interface FormDataMapper { return Map.of(LABEL_KEY, subForm.getLabel(), VALUE_KEY, mapFormItems(subForm.getFormItems())); } + default PostfachAddress map(de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress address) { + return PostfachAddress.builder() + .version("1") + .type(toNumericType(address.getType())) + .identifier(StringBasedIdentifier.builder().postfachId(address.getIdentifier()).build()) + .build(); + } + + default int toNumericType(String type) { + switch (type) { + case "privat": + return 0; + case "unternehmen": + return 1; + case "behoerde": + return 2; + default: + return -1; + } + } + + default PostfachAddressIdentifier map(String value) { + return StringBasedIdentifier.builder().postfachId(value).build(); + } + } diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java index 9f26f3e2c8262ba57cbc3eb69385636f737c5e3a..d2b7a571e5d619310929af44261dbf1be7347122 100644 --- a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ControlDataTestFactory.java @@ -25,6 +25,7 @@ public class ControlDataTestFactory { .leikaIds(LEIKA_IDS) .resultEndpoint(ResultEndpoint.builder().address(RESULT_ENDPOIN_ADDRESS).build()) .formId(FORM_ID) - .formName(NAME); + .formName(NAME) + .serviceKonto(ServicekontoTestFactory.create()); } } diff --git a/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..b8c62f7b4b0e3b4d8436e6f88bf17bfc6ab9d0c9 --- /dev/null +++ b/enterprise-adapter/src/test/java/de/ozgcloud/eingang/enterprise/entry/ServicekontoTestFactory.java @@ -0,0 +1,25 @@ +package de.ozgcloud.eingang.enterprise.entry; + +import de.ozgcloud.eingang.enterprise.entry.EntryData.PostfachAddress; +import de.ozgcloud.eingang.enterprise.entry.EntryData.Servicekonto; + +public class ServicekontoTestFactory { + + private static final String TYPE = "OSI"; + private static final String IDENTIFIER = "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0"; + private static final String POSTFACH_TYPE = "privat"; + + public static Servicekonto create() { + return createBuilder().build(); + } + + public static Servicekonto.ServicekontoBuilder createBuilder() { + return Servicekonto.builder() + .type(TYPE) + .postfachAddress(PostfachAddress.builder() + .identifier(IDENTIFIER) + .type(POSTFACH_TYPE) + .build()); + + } +} diff --git a/enterprise-adapter/src/test/resources/request/simple.json b/enterprise-adapter/src/test/resources/request/simple.json index de767a2355614a0426a6c6bcfe295a2d56713336..11bd6e9cdb3d6cf7429b7239ca28ac3fb4ffe0bf 100644 --- a/enterprise-adapter/src/test/resources/request/simple.json +++ b/enterprise-adapter/src/test/resources/request/simple.json @@ -10,7 +10,14 @@ "address": "https://idalabs.de/backend/api" }, "formId": "KFAS_LIVE_KI_10_Haltverbot_befristet", - "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)" + "name": "Anmeldung zur Einrichtung einer zeitlich befristeten Haltverbotszone gem. § 45 Abs. 1 Straßenverkehrsordnung (StVO)", + "serviceKonto": { + "type": "OSI", + "postfachAddress": { + "identifier": "76f1ae54-1cf1-4ae1-c0b4-08d950d6cfc0", + "type": "privat" + } + } }, "formData": [ {