From 573ac44b625bee2c7af4343dae645e111c4472ca Mon Sep 17 00:00:00 2001
From: Michael Hoennig <michael@hoennig.de>
Date: Tue, 4 Mar 2025 11:15:53 +0100
Subject: [PATCH] code-cleanup

---
 .../partner/HsOfficePartnerController.java    | 42 +++++++++++--------
 ...ficeRelationRepositoryIntegrationTest.java |  1 -
 2 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java b/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java
index d2403078..8f70e1d1 100644
--- a/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java
+++ b/src/main/java/net/hostsharing/hsadminng/hs/office/partner/HsOfficePartnerController.java
@@ -42,10 +42,10 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
     private StrictMapper mapper;
 
     @Autowired
-    private HsOfficePartnerRbacRepository partnerRepo;
+    private HsOfficePartnerRbacRepository rbacPartnerRepo;
 
     @Autowired
-    private HsOfficeRelationRealRepository relationRepo;
+    private HsOfficeRelationRealRepository realRelationRepo;
 
     @PersistenceContext
     private EntityManager em;
@@ -59,7 +59,7 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
             final String name) {
         context.define(currentSubject, assumedRoles);
 
-        final var entities = partnerRepo.findPartnerByOptionalNameLike(name);
+        final var entities = rbacPartnerRepo.findPartnerByOptionalNameLike(name);
 
         final var resources = mapper.mapList(entities, HsOfficePartnerResource.class, ENTITY_TO_RESOURCE_POSTMAPPER);
         return ResponseEntity.ok(resources);
@@ -77,7 +77,7 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
 
         final var entityToSave = createPartnerEntity(body);
 
-        final var saved = partnerRepo.save(entityToSave);
+        final var saved = rbacPartnerRepo.save(entityToSave);
 
         final var uri =
                 MvcUriComponentsBuilder.fromController(getClass())
@@ -98,7 +98,7 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
 
         context.define(currentSubject, assumedRoles);
 
-        final var result = partnerRepo.findByUuid(partnerUuid);
+        final var result = rbacPartnerRepo.findByUuid(partnerUuid);
         if (result.isEmpty()) {
             return ResponseEntity.notFound().build();
         }
@@ -116,7 +116,7 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
 
         context.define(currentSubject, assumedRoles);
 
-        final var result = partnerRepo.findPartnerByPartnerNumber(partnerNumber);
+        final var result = rbacPartnerRepo.findPartnerByPartnerNumber(partnerNumber);
         if (result.isEmpty()) {
             return ResponseEntity.notFound().build();
         }
@@ -133,12 +133,12 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
             final UUID partnerUuid) {
         context.define(currentSubject, assumedRoles);
 
-        final var partnerToDelete = partnerRepo.findByUuid(partnerUuid);
+        final var partnerToDelete = rbacPartnerRepo.findByUuid(partnerUuid);
         if (partnerToDelete.isEmpty()) {
             return ResponseEntity.notFound().build();
         }
 
-        if (partnerRepo.deleteByUuid(partnerUuid) != 1) {
+        if (rbacPartnerRepo.deleteByUuid(partnerUuid) != 1) {
             return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
         }
 
@@ -156,12 +156,12 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
 
         context.define(currentSubject, assumedRoles);
 
-        final var current = partnerRepo.findByUuid(partnerUuid).orElseThrow();
+        final var current = rbacPartnerRepo.findByUuid(partnerUuid).orElseThrow();
         final var previousPartnerRel = current.getPartnerRel();
 
         new HsOfficePartnerEntityPatcher(em, current).apply(body);
 
-        final var saved = partnerRepo.save(current);
+        final var saved = rbacPartnerRepo.save(current);
         optionallyCreateExPartnerRelation(saved, previousPartnerRel);
         optionallyUpdateRelatedRelations(saved, previousPartnerRel);
 
@@ -170,19 +170,27 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
     }
 
     private void optionallyCreateExPartnerRelation(final HsOfficePartnerRbacEntity saved, final HsOfficeRelationRealEntity previousPartnerRel) {
-        if (!saved.getPartnerRel().getUuid().equals(previousPartnerRel.getUuid())) {
-            relationRepo.save(previousPartnerRel.toBuilder().uuid(null)
+
+        final var partnerRelHasChanged = !saved.getPartnerRel().getUuid().equals(previousPartnerRel.getUuid());
+        if (partnerRelHasChanged) {
+            realRelationRepo.save(previousPartnerRel.toBuilder().uuid(null)
                     .type(EX_PARTNER).anchor(saved.getPartnerRel().getHolder())
                     .build());
         }
     }
 
     private void optionallyUpdateRelatedRelations(final HsOfficePartnerRbacEntity saved, final HsOfficeRelationRealEntity previousPartnerRel) {
-//        if (!saved.getPartnerRel().getUuid().equals(previousPartnerRel.getUuid())) {
-//            relationRepo.save(previousPartnerRel.toBuilder().uuid(null)
-//                    .type(EX_PARTNER).anchor(saved.getPartnerRel().getHolder())
-//                    .build());
-//        }
+        final var oldPartnerPerson = previousPartnerRel.getHolder();
+        final var newPartnerPerson = saved.getPartnerRel().getHolder();
+        final var partnerPersonHasChanged = !newPartnerPerson.getUuid().equals(oldPartnerPerson.getUuid());
+        if (partnerPersonHasChanged) {
+//            realRelationRepo.findRelationRelatedToPersonUuid(oldPartnerPerson.getUuid()).forEach( rel -> {
+//                if (rel.getType() == REPRESENTATIVE && rel.getAnchor().getUuid().equals(oldPartnerPerson.getUuid()) ) {
+//
+//                }
+//
+//            }
+        }
     }
 
     private HsOfficePartnerRbacEntity createPartnerEntity(final HsOfficePartnerInsertResource body) {
diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java
index 4a9a1cee..5e8c750b 100644
--- a/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java
+++ b/src/test/java/net/hostsharing/hsadminng/hs/office/relation/HsOfficeRelationRepositoryIntegrationTest.java
@@ -28,7 +28,6 @@ import static net.hostsharing.hsadminng.hs.office.person.HsOfficePersonType.NATU
 import static net.hostsharing.hsadminng.hs.office.person.HsOfficePersonType.UNINCORPORATED_FIRM;
 import static net.hostsharing.hsadminng.rbac.grant.RawRbacGrantEntity.distinctGrantDisplaysOf;
 import static net.hostsharing.hsadminng.rbac.role.RawRbacRoleEntity.distinctRoleNamesOf;
-import static net.hostsharing.hsadminng.rbac.role.RbacRoleType.ADMIN;
 import static net.hostsharing.hsadminng.rbac.test.JpaAttempt.attempt;
 import static org.assertj.core.api.Assertions.assertThat;