From 140d7b6c2b362a1c5ac9399882c58b71c00d80a3 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 29 Oct 2024 21:27:50 +0100
Subject: [PATCH] OZG-6991 set client on command

---
 .../src/main/java/de/ozgcloud/command/Command.java       | 2 +-
 .../src/test/java/de/ozgcloud/command/TestCommand.java   | 2 +-
 .../java/de/ozgcloud/vorgang/command/CommandService.java | 1 +
 .../de/ozgcloud/vorgang/command/PersistedCommand.java    | 2 +-
 .../java/de/ozgcloud/vorgang/vorgang/VorgangService.java | 4 ++--
 .../de/ozgcloud/vorgang/command/CommandServiceTest.java  | 9 +++++++++
 .../de/ozgcloud/vorgang/command/CommandTestFactory.java  | 2 +-
 .../de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java  | 2 +-
 8 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/vorgang-manager-command/src/main/java/de/ozgcloud/command/Command.java b/vorgang-manager-command/src/main/java/de/ozgcloud/command/Command.java
index 03beadfa1..4e0940d8a 100644
--- a/vorgang-manager-command/src/main/java/de/ozgcloud/command/Command.java
+++ b/vorgang-manager-command/src/main/java/de/ozgcloud/command/Command.java
@@ -44,7 +44,7 @@ public interface Command {
 	public String getCreatedBy();
 	public String getCreatedByName();
 	public CommandStatus getStatus();
-	String getCreatedByClient();
+	String getCreatedByClientName();
 
 	public Map<String, Object> getBodyObject();
 	public Map<String, String> getBody();
diff --git a/vorgang-manager-command/src/test/java/de/ozgcloud/command/TestCommand.java b/vorgang-manager-command/src/test/java/de/ozgcloud/command/TestCommand.java
index 3d2c5d826..98a46f1f9 100644
--- a/vorgang-manager-command/src/test/java/de/ozgcloud/command/TestCommand.java
+++ b/vorgang-manager-command/src/test/java/de/ozgcloud/command/TestCommand.java
@@ -21,7 +21,7 @@ public class TestCommand implements Command {
 	private ZonedDateTime finishedAt;
 	private String createdBy;
 	private String createdByName;
-	private String createdByClient;
+	private String createdByClientName;
 
 	private CommandStatus status;
 
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java
index ff7653e64..e4432b43d 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/CommandService.java
@@ -87,6 +87,7 @@ public class CommandService {
 				.body(request.getBody())
 				.bodyObject(request.getBodyObject());
 
+		userService.findUser().map(CallContextUser::getClientName).ifPresent(builder::createdByClientName);
 		builder = addUserIfExists(builder, Optional.ofNullable(request.getCallContext()).map(CallContext::getUser), userService.findUser());
 		return builder.build();
 	}
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistedCommand.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistedCommand.java
index 0973a3979..7e045d3e1 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistedCommand.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/PersistedCommand.java
@@ -63,7 +63,7 @@ public class PersistedCommand implements Command {
 
 	private String createdBy;
 	private String createdByName;
-	private String createdByClient;
+	private String createdByClientName;
 
 	@Setter
 	private CommandStatus status;
diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
index 801685f1f..ec32c6183 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java
@@ -237,7 +237,7 @@ public class VorgangService {
 	}
 
 	void validateLockCommand(Command command) {
-		if (Objects.isNull(command.getCreatedByClient())) {
+		if (Objects.isNull(command.getCreatedByClientName())) {
 			throw new TechnicalException("Missing client name in lock command");
 		}
 		if (Objects.isNull(getReason(command.getBodyObject()))) {
@@ -247,7 +247,7 @@ public class VorgangService {
 
 	Map<String, Object> buildLockPatch(Command command) {
 		return Map.of(KEY_HEADER_LOCK, Map.of(
-				Lock.FIELD_CLIENT_NAME, command.getCreatedByClient(),
+				Lock.FIELD_CLIENT_NAME, command.getCreatedByClientName(),
 				Lock.FIELD_LOCKED_SINCE, ZonedDateTime.now(ZoneId.of("UTC")),
 				Lock.FIELD_REASON, getReason(command.getBodyObject())));
 	}
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java
index 3f4d68d90..dfb6e5119 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandServiceTest.java
@@ -102,6 +102,15 @@ class CommandServiceTest {
 			assertThat(command.getRelationVersion()).isEqualTo(CreateCommandRequestTestFactory.RELATION_VERSION);
 		}
 
+		@Test
+		void shouldSetClientName() {
+			when(currentUserService.findUser()).thenReturn(Optional.of(CallContextUserTestFactory.create()));
+
+			var command = (PersistedCommand) service.createCommand(request);
+
+			assertThat(command.getCreatedByClientName()).isEqualTo(CallContextTestFactory.CLIENT);
+		}
+
 		@Test
 		void shouldHandleMissingCallContext() {
 			var request = CreateCommandRequestTestFactory.createBuilder().callContext(null).build();
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandTestFactory.java
index 47f9149c3..c87132fce 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandTestFactory.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/command/CommandTestFactory.java
@@ -61,7 +61,7 @@ public class CommandTestFactory {
 				.createdAt(CREATED_AT)
 				.createdBy(CREATED_BY)
 				.createdByName(CREATED_BY_NAME)
-				.createdByClient(CREATED_BY_CLIENT)
+				.createdByClientName(CREATED_BY_CLIENT)
 				.status(STATUS)
 				.relationId(RELATION_ID)
 				.relationVersion(RELATION_VERSION)
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
index db34a67ab..3a3d53b5c 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java
@@ -563,7 +563,7 @@ class VorgangServiceTest {
 
 		@Test
 		void shouldThrowExceptionOnMissingClient() {
-			var command = CommandTestFactory.createBuilder().createdByClient(null).build();
+			var command = CommandTestFactory.createBuilder().createdByClientName(null).build();
 
 			assertThrows(TechnicalException.class, () -> service.validateLockCommand(command));
 		}
-- 
GitLab