From c435bcfc7107cbae3783c0f2e8ea51f9c36ddfaa Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 28 Jun 2021 11:45:42 +0200
Subject: [PATCH] OZG-928 Eingang um zustaendige Stelle erweitert

---
 .../vorgang-forward-form.component.ts         |  9 ++++++--
 .../vorgang-forward.formservice.ts            |  4 ++++
 .../vorgang-forward-formular.component.html   | 15 ++++++-------
 .../vorgang-shared/src/lib/vorgang.model.ts   |  3 ++-
 .../java/de/itvsh/goofy/vorgang/Eingang.java  |  2 +-
 .../de/itvsh/goofy/vorgang/EingangMapper.java |  4 ++--
 .../goofy/vorgang/ZustaendigeStelle.java      |  9 ++++++++
 .../vorgang/ZustaendigeStelleMapper.java      | 10 +++++++++
 .../GrpcZustaendigeStelleTestFactory.java     | 18 ++++++++++++++++
 .../vorgang/ZustaendigeStelleMapperTest.java  | 21 +++++++++++++++++++
 .../vorgang/ZustaendigeStelleTestFactory.java | 16 ++++++++++++++
 11 files changed, 98 insertions(+), 13 deletions(-)
 create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelle.java
 create mode 100644 goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapper.java
 create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcZustaendigeStelleTestFactory.java
 create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapperTest.java
 create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleTestFactory.java

diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts
index 31d90c28ac..dc4c850b7a 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward-form.component.ts
@@ -3,6 +3,7 @@ import { FormGroup } from '@angular/forms';
 import { CommandResource } from '@goofy-client/command-shared';
 import { StateResource } from '@goofy-client/tech-shared';
 import { VorgangForwardFormService } from './vorgang-forward.formservice';
+import { VorgangWithEingangResource } from '@goofy-client/vorgang-shared';
 
 @Component({
 	selector: 'goofy-client-vorgang-forward-form',
@@ -12,14 +13,18 @@ import { VorgangForwardFormService } from './vorgang-forward.formservice';
 export class VorgangForwardFormComponent {
 
 	@Input() forwardStateResource: StateResource<CommandResource>;
+	@Input() vorgang: VorgangWithEingangResource;
 
 	@Output('doSubmit') submit: EventEmitter<void> = new EventEmitter();
 
 	readonly formServiceClass = VorgangForwardFormService;
 
-	constructor(private formService: VorgangForwardFormService) { }
+	constructor(private formService: VorgangForwardFormService) {
+		this.formService.patch({'email': 'test'})
+		this.formService.patchField('email', this.vorgang.aktenzeichen)
+	}
 
 	get form(): FormGroup {
 		return this.formService.form;
 	}
-}
\ No newline at end of file
+}
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
index 7adee7b208..ac2b91a6f7 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice.ts
@@ -20,6 +20,10 @@ export class VorgangForwardFormService extends AbstractFormService {
 		super(formBuilder);
 	}
 
+	patchField(fieldName: string, value: string) {
+		this.form.controls[fieldName].patchValue(value);
+	}
+
 	protected initForm(): FormGroup {
 		return this.form = this.formBuilder.group({
 			[VorgangForwardFormService.FIELD_EMAIL]: new FormControl(),
diff --git a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.html b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.html
index 3c48acd6c7..6f057eb6d4 100644
--- a/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.html
+++ b/goofy-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forward-formular/vorgang-forward-formular.component.html
@@ -1,11 +1,12 @@
 <goofy-client-spinner data-test-id="forwarding-spinner"
-	[diameter]="24"
-	[show]="pendingForwardCommand.resource | hasLink: commandLinkRel.UPDATE"
-	padding="0"
-	text="Vorgang wird weitergeleitet">
+		[diameter]="24"
+		[show]="pendingForwardCommand.resource | hasLink: commandLinkRel.UPDATE"
+		padding="0"
+		text="Vorgang wird weitergeleitet">
 </goofy-client-spinner>
 
 <goofy-client-vorgang-forward-form *ngIf="vorgang | hasLink: vorgangLinkRel.FORWARD" data-test-id="forward-form"
-	[forwardStateResource]="pendingForwardCommand"
-	(doSubmit)="submit.emit()">
-</goofy-client-vorgang-forward-form>
\ No newline at end of file
+		[vorgang]="vorgang"
+		[forwardStateResource]="pendingForwardCommand"
+		(doSubmit)="submit.emit()">
+</goofy-client-vorgang-forward-form>
diff --git a/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts b/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts
index f20ba6f8e2..fcc348cdfc 100644
--- a/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts
+++ b/goofy-client/libs/vorgang-shared/src/lib/vorgang.model.ts
@@ -17,6 +17,7 @@ export interface VorgangWithEingang extends Vorgang {
 export interface Eingang {
 	id: string,
 	antragsteller: Antragsteller,
+	zustaendigeStelle: string,
 	header: EingangHeader,
 	formData: ReadonlyMap<number, string> | object
 }
@@ -97,4 +98,4 @@ export interface CreateAssignUserCommand extends CreateCommand {
 
 export interface AssignUserBody {
 	assignedTo: ResourceUri;
-}
\ No newline at end of file
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java
index 8135edc9c8..69fd514e91 100644
--- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java
+++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java
@@ -14,7 +14,7 @@ public class Eingang {
 	private int numberOfAttachments;
 	private int numberOfRepresentations;
 
-	private String zustaendigestelle;
+	private ZustaendigeStelle zustaendigeStelle;
 	private Antragsteller antragsteller;
 	private EingangHeader header;
 
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java
index c3fe7ecf53..dbee10fb9e 100644
--- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java
+++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/EingangMapper.java
@@ -16,7 +16,7 @@ import de.itvsh.ozg.pluto.vorgang.GrpcFormField;
 import de.itvsh.ozg.pluto.vorgang.GrpcSubForm;
 
 @Mapper(uses = { AntragstellerMapper.class,
-		EingangHeaderMapper.class }, collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
+		EingangHeaderMapper.class, ZustaendigeStelleMapper.class }, collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
 interface EingangMapper {
 
 	@Mapping(source = "formData", target = "formData")
@@ -45,4 +45,4 @@ interface EingangMapper {
 		return fields.stream().collect(Collectors.toMap(GrpcFormField::getName, GrpcFormField::getValue));
 	}
 
-}
\ No newline at end of file
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelle.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelle.java
new file mode 100644
index 0000000000..b575c496e4
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelle.java
@@ -0,0 +1,9 @@
+package de.itvsh.goofy.vorgang;
+
+import lombok.Builder;
+
+@Builder
+public class ZustaendigeStelle {
+    private String organisationseinheitenId;
+    private String email;
+}
diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapper.java
new file mode 100644
index 0000000000..6b79ea7b4c
--- /dev/null
+++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapper.java
@@ -0,0 +1,10 @@
+package de.itvsh.goofy.vorgang;
+
+import de.itvsh.ozg.pluto.vorgang.GrpcZustaendigeStelle;
+import org.mapstruct.Mapper;
+
+@Mapper
+interface ZustaendigeStelleMapper {
+
+    ZustaendigeStelle mapToZustaendigeStelle(GrpcZustaendigeStelle grpcZustaendigeStelle);
+}
diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcZustaendigeStelleTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcZustaendigeStelleTestFactory.java
new file mode 100644
index 0000000000..9f30e7a538
--- /dev/null
+++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcZustaendigeStelleTestFactory.java
@@ -0,0 +1,18 @@
+package de.itvsh.goofy.vorgang;
+
+import de.itvsh.ozg.pluto.vorgang.GrpcZustaendigeStelle;
+
+public class GrpcZustaendigeStelleTestFactory {
+    private static final String EMAIL = ZustaendigeStelleTestFactory.EMAIL;
+    private static final String ORGANISATIONSEINHEITEN_ID = ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID;
+
+    public static GrpcZustaendigeStelle create() {
+        return createBuilder().build();
+    }
+
+    public static GrpcZustaendigeStelle.Builder createBuilder() {
+        return GrpcZustaendigeStelle.newBuilder()
+                .setEmail(EMAIL)
+                .setOrganisationseinheitenId(ORGANISATIONSEINHEITEN_ID);
+    }
+}
diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapperTest.java
new file mode 100644
index 0000000000..c488746f42
--- /dev/null
+++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleMapperTest.java
@@ -0,0 +1,21 @@
+package de.itvsh.goofy.vorgang;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.mapstruct.factory.Mappers;
+
+import static org.assertj.core.api.Assertions.*;
+
+public class ZustaendigeStelleMapperTest {
+    private final ZustaendigeStelleMapper mapper = Mappers.getMapper(ZustaendigeStelleMapper.class);
+
+    @Nested
+    class TestMapToZustaendigeStelle {
+
+        @Test
+        void shouldMap() {
+            var zustaendigeStelle = mapper.mapToZustaendigeStelle(GrpcZustaendigeStelleTestFactory.create());
+            assertThat(zustaendigeStelle).usingRecursiveComparison().isEqualTo(ZustaendigeStelleTestFactory.create());
+        }
+    }
+}
diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleTestFactory.java
new file mode 100644
index 0000000000..fb7735f92a
--- /dev/null
+++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/ZustaendigeStelleTestFactory.java
@@ -0,0 +1,16 @@
+package de.itvsh.goofy.vorgang;
+
+public class ZustaendigeStelleTestFactory {
+    public static final String EMAIL = "test@test.de";
+    public static final String ORGANISATIONSEINHEITEN_ID = "123456";
+
+    public static ZustaendigeStelle create() {
+        return createBuilder().build();
+    }
+
+    public static ZustaendigeStelle.ZustaendigeStelleBuilder createBuilder() {
+        return ZustaendigeStelle.builder()
+                .email(EMAIL)
+                .organisationseinheitenId(ORGANISATIONSEINHEITEN_ID);
+    }
+}
-- 
GitLab