From 6ca3426bc7bd01530ae8adf29344b6ed6a61ce8f Mon Sep 17 00:00:00 2001
From: agoer <alexander.goerlitz@student.reutlingen-university.de>
Date: Tue, 18 Jun 2024 23:03:25 +0200
Subject: [PATCH] Implemented fully teamMember and created the method
 getOperationTeamOPStaff(Id<OperationTeam>)

---
 .../src/main/java/OperationTeamService.java   |  3 --
 opp/core/src/main/java/Repository.java        |  2 ++
 opp/core/src/main/java/TeamMemberImpl.java    |  6 ++++
 opp/core/src/main/java/TeamMemberService.java |  4 +++
 .../src/main/java/JDBCRepository.java         | 28 +++++++++++++++++++
 opp/jdbc-repo-impl/src/test/java/Tests.java   | 26 ++++++++++++++---
 6 files changed, 62 insertions(+), 7 deletions(-)

diff --git a/opp/core/src/main/java/OperationTeamService.java b/opp/core/src/main/java/OperationTeamService.java
index 59cbfef..4a77bbd 100644
--- a/opp/core/src/main/java/OperationTeamService.java
+++ b/opp/core/src/main/java/OperationTeamService.java
@@ -10,7 +10,4 @@ public interface OperationTeamService {
 
     public List<OperationTeam> getOperationTeams() throws SQLException;
 
-    //public Optional<OPStaff> getOperationTeamOPStaff(Id<OperationTeam> operationTeamId);
-
-
 }
diff --git a/opp/core/src/main/java/Repository.java b/opp/core/src/main/java/Repository.java
index f540cac..7baa7b3 100644
--- a/opp/core/src/main/java/Repository.java
+++ b/opp/core/src/main/java/Repository.java
@@ -93,4 +93,6 @@ public interface Repository {
     Id<TeamMember> teamMemberId();
 
     void saveTeamMember(TeamMember teamMember) throws Exception;
+
+    List<OPStaff> getOperationTeamOPStaffImpl(Id<OperationTeam> operationTeamId);
 }
diff --git a/opp/core/src/main/java/TeamMemberImpl.java b/opp/core/src/main/java/TeamMemberImpl.java
index d4ea406..2f4a271 100644
--- a/opp/core/src/main/java/TeamMemberImpl.java
+++ b/opp/core/src/main/java/TeamMemberImpl.java
@@ -1,4 +1,5 @@
 import java.time.Instant;
+import java.util.List;
 
 public class TeamMemberImpl implements TeamMemberService{
 
@@ -15,6 +16,11 @@ public class TeamMemberImpl implements TeamMemberService{
         };
     }
 
+    @Override
+    public List<OPStaff> getOperationTeamOPStaff(Id<OperationTeam> operationTeamId) {
+        return repo.getOperationTeamOPStaffImpl(operationTeamId);
+    }
+
     private TeamMember assignStaffimpl(TeamMember.AssignStaff as) {
         TeamMember teammember =
                 new TeamMember(
diff --git a/opp/core/src/main/java/TeamMemberService.java b/opp/core/src/main/java/TeamMemberService.java
index faa401b..ac73201 100644
--- a/opp/core/src/main/java/TeamMemberService.java
+++ b/opp/core/src/main/java/TeamMemberService.java
@@ -1,4 +1,8 @@
+import java.util.List;
+
 public interface TeamMemberService {
 
     public TeamMember process(TeamMember.Command cmd) throws Exception;
+
+    List<OPStaff> getOperationTeamOPStaff(Id<OperationTeam> operationTeamId);
 }
diff --git a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
index eb7e067..ff3928c 100644
--- a/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
+++ b/opp/jdbc-repo-impl/src/main/java/JDBCRepository.java
@@ -730,6 +730,34 @@ class JDBCRepository implements Repository
     );
   """;
 
+  @Override
+  public List<OPStaff> getOperationTeamOPStaffImpl(Id<OperationTeam> operationTeamId){
+
+    try(
+            var result =
+                    conn.createStatement()
+                            .executeQuery("SELECT DISTINCT opstaff.id, opstaff.role, opstaff.specialty, opstaff.lastupdate " +
+                                              "FROM opstaff " +
+                                              "JOIN teammember " +
+                                              "ON (opstaff.id = teammember.opstaffid) " +
+                                              "WHERE teammember.operationteamid= " + sqlValue(operationTeamId.value()) + ";");
+    ) {
+      //SELECT DISTINCT opstaff.id, opstaff.role, opstaff.specialty, opstaff.lastupdate, teammember.operationteamid FROM opstaff JOIN teammember ON (opstaff.id = teammember.opstaffid);
+      //SELECT DISTINCT opstaff.id, opstaff.role, opstaff.specialty, opstaff.lastupdate, teammember.operationteamid FROM opstaff JOIN teammember ON (opstaff.id = teammember.opstaffid) WHERE teammember.operationteamid= '31313131';
+      var opStaffs = new ArrayList<OPStaff>();
+
+      while (result.next()) {
+        opStaffs.add(readOPStaffFromRow(result));
+      }
+      return opStaffs;
+    }catch(SQLException e){
+      throw new RuntimeException(e);
+    }
+  }
+
+
+
+
 }
 
 
diff --git a/opp/jdbc-repo-impl/src/test/java/Tests.java b/opp/jdbc-repo-impl/src/test/java/Tests.java
index fd5c130..6f30ff0 100644
--- a/opp/jdbc-repo-impl/src/test/java/Tests.java
+++ b/opp/jdbc-repo-impl/src/test/java/Tests.java
@@ -52,8 +52,8 @@ public final class Tests
     opService = new OperationServiceImpl(repo);
 
     testOPStaff = new OPStaff(
-            new Id<>("3333"),
-            Role.SURGEON,
+            new Id<>("4444"),
+            Role.ASSISTANT,
             Specialty.urology,
             Instant.now());
 
@@ -70,12 +70,14 @@ public final class Tests
     };
 
     testTeamMember = new TeamMember(
-            new Id<>("newTeamMember1"),
+            new Id<>("TeamMember2"),
             testOperationTeam.operationTeamId(),
             testOPStaff.id(),
             Instant.now()
     );
 
+    teamMemberService = new TeamMemberImpl(repo);
+
   }
 
   //@Test
@@ -342,7 +344,7 @@ public final class Tests
     }
   }
 
-  @Test
+  //@Test
   public void testGetMultipleOperationTeams() throws Exception{
 
 
@@ -356,7 +358,23 @@ public final class Tests
     } catch (Exception e){
       e.printStackTrace();
     }
+  }
+
+  @Test
+  public void testGetTeamMemberFromTeam() throws Exception{
+
+    var id = new Id<OperationTeam>("31313131");
+
+    try{
+      List<OPStaff> opStaff = teamMemberService.getOperationTeamOPStaff(id);
+
+      for(OPStaff opStaffs1 : opStaff){
+        System.out.println(opStaffs1);
+      }
 
+    } catch (Exception e){
+      e.printStackTrace();
+    }
   }
 
 
-- 
GitLab