From fb08993361ac067e709644463a85dbdf7fbe0596 Mon Sep 17 00:00:00 2001
From: Bibi Aysha Enaitullah
 <bibi_aysha.enaitullah@student.reutlingen-university.de>
Date: Wed, 25 Jun 2025 10:13:16 +0000
Subject: [PATCH] Klassendiagram stand 25.06

---
 Klasssendiagram Stand 25.06 | 113 ++++++++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)
 create mode 100644 Klasssendiagram Stand 25.06

diff --git a/Klasssendiagram Stand 25.06 b/Klasssendiagram Stand 25.06
new file mode 100644
index 0000000..ae20f15
--- /dev/null
+++ b/Klasssendiagram Stand 25.06	
@@ -0,0 +1,113 @@
+@startuml
+
+  ' MODEL LAYER
+  package "Model Layer" {
+    class Project {
+      + ObjectID ID
+      + UUID UUID
+      + String ProjectID
+      + String Shortcut
+      + String Name
+      + String Description
+      + Date StartDate
+      + Date EndDate
+      + UUID CreatedBy
+      + Date CreatedAt
+      + Date UpdatedAt
+      + ProjectToUpdate ToUpdate()
+    }
+
+    class RequirementSummary {
+      + ObjectID ID
+      + UUID UUID
++ String RequirementID
+      + String Shortcut
+      + String Condition
+      + String System
+      + String Requirement
+      + String Status
+      + Date CreatedAt
+    }
+
+    class ProjectToCreate {
+      + String ProjectID
+      + String Shortcut
+      + String Name
+      + String Description
+      + Date StartDate
+      + Date EndDate
+      + UUID CreatedBy
+    }
+
+    class ProjectToUpdate {
+      + ObjectID ID
+      + String Shortcut
+       + String Name
+      + String Description
+      + Date StartDate
+      + Date EndDate
+    }
+
+    class ProjectWithRequirements {
+      + Project *Project
+      + List<RequirementSummary> Requirements
+      + int RequirementCount
+    }
+  }
+
+  ' SERVICE LAYER
+  package "Service Layer" {
+    class ProjectService {
+      - ProjectRepository repo
+      
+      + Project CreateProject(ProjectToCreate)
+      + List<Project> GetProjectsByUser(UUID)
+      + ProjectWithRequirements GetProjectWithRequirements(ObjectID)
+      + Project UpdateProject(ProjectToUpdate)
+      + void DeleteProject(ObjectID)
+      + List<Project> SearchProjects(String, UUID)
+ + ProjectWithRequirements FindWithRequirements(ObjectID)
+      + Project Update(ProjectToUpdate)
+      + void Delete(ObjectID)
+      + List<Project> Search(String, UUID)
+      + void CloneRequirement(ObjectID, String, String)
+    }
+
+    class MongoProjectRepository {
+      - Database db
+      
+      + Project Create(ProjectToCreate)
+      + Project FindByID(ObjectID)
+      + Project FindByProjectID(String)
+      + Project FindByShortcut(String)
+      + List<Project> FindByCreatedBy(UUID)
+      + ProjectWithRequirements FindWithRequirements(ObjectID)
+      + Project Update(ProjectToUpdate)
+      + void Delete(ObjectID)
+      + List<Project> Search(String, UUID)
+      + void CloneRequirement(ObjectID, String, String)
+    }
+  }
+
+  ' INFRASTRUCTURE LAYER
+ package "Infrastructure Layer" {
+    class MongoManager {
+      - Client client
+      - Database db
+      
+      + Database GetDatabase()
+      + void Close()
+    }
+  }
+
+  ' RELATIONSHIPS
+  Project "1" -- "0.." RequirementSummary : contains
+  ProjectWithRequirements *-- "1" Project : aggregates
+  ProjectWithRequirements -- "0.." RequirementSummary : aggregates
+  ProjectService --> ProjectRepository : uses
+  MongoProjectRepository ..|> ProjectRepository : implements
+  MongoManager ..> MongoProjectRepository : provides database
+  ProjectToCreate ..> Project : creates
+  ProjectToUpdate ..> Project : updates
+
+  @enduml
-- 
GitLab