From 3f604ad926524179a3696d410b050fd210a661f9 Mon Sep 17 00:00:00 2001
From: Tom Zhao <tom.zhao@dsv.su.se>
Date: Mon, 7 Apr 2025 12:50:34 +0200
Subject: [PATCH] 87: Refactor out status message to view layer

---
 .../split/SplitOrRestartProjectService.java   | 22 +++++--------------
 .../admin/pages/AdminSplitProjectPanel.java   | 18 ++++++++++-----
 .../AdminSplitProjectPanel.utf8.properties    |  7 +++++-
 3 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/core/src/main/java/se/su/dsv/scipro/project/split/SplitOrRestartProjectService.java b/core/src/main/java/se/su/dsv/scipro/project/split/SplitOrRestartProjectService.java
index 0ae111bc44..43b69e7780 100644
--- a/core/src/main/java/se/su/dsv/scipro/project/split/SplitOrRestartProjectService.java
+++ b/core/src/main/java/se/su/dsv/scipro/project/split/SplitOrRestartProjectService.java
@@ -6,22 +6,12 @@ import se.su.dsv.scipro.reviewing.RoughDraftApproval;
 
 public interface SplitOrRestartProjectService {
     enum SplittableStatus {
-        NOT_EXIST("Project does not exist."),
-        NOT_ACTIVE("Only active project can be split."),
-        NOT_TWO_PARTICIPANTS("To be able to split a project, it needs to have 2 participants."),
-        PHASE_TWO_STARTED("Phase 2 (Review) is already started, can't split right now."),
-        FINAL_SEMINAR_PHASE_STARTED("Final seminar phase has been started, too late to split."),
-        OK("Ok to split.");
-
-        private final String message;
-
-        SplittableStatus(String message) {
-            this.message = message;
-        }
-
-        public String getMessage() {
-            return message;
-        }
+        NOT_EXIST,
+        NOT_ACTIVE,
+        NOT_TWO_PARTICIPANTS,
+        PHASE_TWO_STARTED,
+        FINAL_SEMINAR_PHASE_STARTED,
+        OK,
     }
 
     record SplittableStatusRecord(
diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java
index 9d4a095e41..ba322bf238 100644
--- a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java
+++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.java
@@ -56,12 +56,7 @@ public class AdminSplitProjectPanel extends Panel {
         };
         add(splitProjectLink);
 
-        add(
-            new Label(
-                "splitInfo",
-                Model.of(ldModel.getObject() == SplittableStatus.OK ? "" : ldModel.getObject().getMessage())
-            )
-        );
+        add(new Label("splitInfo", Model.of(getStatusMessage(ldModel.getObject()))));
     }
 
     @Override
@@ -69,4 +64,15 @@ public class AdminSplitProjectPanel extends Panel {
         super.onConfigure();
         setVisibilityAllowed(SciProSession.get().authorizedForRole(Roles.ADMIN));
     }
+
+    private String getStatusMessage(SplittableStatus status) {
+        return switch (status) {
+            case OK -> "";
+            case NOT_EXIST -> getString("status_not_exist");
+            case NOT_ACTIVE -> getString("status_not_active");
+            case NOT_TWO_PARTICIPANTS -> getString("status_not_two_participants");
+            case PHASE_TWO_STARTED -> getString("status_phase_two_started");
+            case FINAL_SEMINAR_PHASE_STARTED -> getString("status_final_seminar_phase_started");
+        };
+    }
 }
diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties
index 2683bf299a..b3ec52b2aa 100644
--- a/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties
+++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/AdminSplitProjectPanel.utf8.properties
@@ -1 +1,6 @@
-splitButton = Split Project
\ No newline at end of file
+splitButton = Split Project
+status_not_exit = Project does not exist.
+status_not_active = Only active project can be split.
+status_not_two_participants = To be able to split a project, it needs to have 2 participants.
+status_phase_two_started = Phase 2 (Review) is already started, can't split right now.
+status_final_seminar_phase_started = Final seminar phase has been started, too late to split.