From 1df19b74e8ce07cb5dea133516063e766d6342a0 Mon Sep 17 00:00:00 2001
From: nkyriakoulis <nickkyriakoulis1996@gmail.com>
Date: Thu, 11 Apr 2024 10:20:37 +0300
Subject: [PATCH] Update Supporting Services' end date upon Service Order
 Expected Completion Date update

---
 .../reposervices/ServiceOrderRepoService.java   | 14 +++++++++++---
 .../api/ServiceOrderIntegrationTest.java        | 17 ++++++++++++++---
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java
index d7214c4..cd5a502 100644
--- a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java
+++ b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java
@@ -539,6 +539,7 @@ public class ServiceOrderRepoService {
 		
 		ServiceOrder so = this.findByUuid(id);
 		boolean stateChanged = false;
+		boolean expectedCompletionDateChanged = false;
 
 		//logger.info("so:" + so.toString());		
 		for (ServiceOrderItem oi : so.getOrderItem() ) {
@@ -590,7 +591,7 @@ public class ServiceOrderRepoService {
 
 		if ( serviceOrderUpd.getExpectedCompletionDate()!= null ) {
 			so.setExpectedCompletionDate(serviceOrderUpd.getExpectedCompletionDate());
-
+			expectedCompletionDateChanged = true;
 		}
 
 		if ( serviceOrderUpd.getStartDate()!= null ) {
@@ -655,8 +656,15 @@ public class ServiceOrderRepoService {
 			so.addNoteItem(noteItem);				
 		}
 		
-		
-		
+		// Update each Service's end date to the updated Service Order's expected completion date
+		if (expectedCompletionDateChanged) {
+			List<String> services = serviceRepoService.getServicesFromOrderID(id);
+
+			for (String serviceId : services) {
+				org.etsi.osl.tmf.sim638.model.Service service = serviceRepoService.findByUuid(serviceId);
+				service.setEndDate(so.getExpectedCompletionDate());
+			}
+		}
 
 		
 
diff --git a/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java b/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java
index 3368f21..017804b 100644
--- a/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java
+++ b/src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java
@@ -33,6 +33,7 @@ import java.net.URI;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.RoutesBuilder;
@@ -355,9 +356,19 @@ public class ServiceOrderIntegrationTest {
 		ServiceOrder sspeccr1SO = JsonUtils.toJsonObj(sspectextSO, ServiceOrder.class);
 
 		assertThat(sspeccr1SO).isNotNull();
-		
-		
-		
+
+		// Ensure that all Services' end dates were updated correctly
+		boolean allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = true;
+		List<String> services = serviceRepoService.getServicesFromOrderID(responseSO.getId());
+
+		for (String serviceId : services) {
+			Service service = serviceRepoService.findByUuid(serviceId);
+			if (!service.getEndDate().equals(responseSOUpd.getExpectedCompletionDate())) {
+				allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = false;
+				break;
+			}
+		}
+		assertThat(allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate).isTrue();
 	}
 
 	@WithMockUser(username="osadmin", roles = {"USER"})
-- 
GitLab