From 49443f09e4875d1c82a8a5771066df9b3951b46e Mon Sep 17 00:00:00 2001
From: Andreas Svanberg <andreass@dsv.su.se>
Date: Wed, 23 Oct 2024 12:17:37 +0200
Subject: [PATCH] Save note and failing grade on grading templates

---
 .../scipro/report/GradingReportTemplate.java  | 24 +++++++++++++++++++
 .../report/GradingReportTemplateRepoImpl.java |  2 ++
 ...0__failing_grade_and_note_on_templates.sql |  3 +++
 .../pages/grading/EditingGradingTemplate.java |  4 ++--
 .../admin/pages/grading/GradeLimits.java      |  5 +++-
 5 files changed, 35 insertions(+), 3 deletions(-)
 create mode 100644 core/src/main/resources/db/migration/V390__failing_grade_and_note_on_templates.sql

diff --git a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java
index d6eaf522a0..c6aa3a09a3 100644
--- a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java
+++ b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplate.java
@@ -32,6 +32,14 @@ public class GradingReportTemplate extends DomainObject {
     @Column(name = "valid_from")
     private LocalDate validFrom;
 
+    @Basic
+    @Column(name = "note")
+    private String note;
+
+    @Basic
+    @Column(name = "failing_grade")
+    private String failingGrade;
+
     protected GradingReportTemplate() {
 
     }
@@ -92,6 +100,22 @@ public class GradingReportTemplate extends DomainObject {
         this.projectType = projectType;
     }
 
+    public String getNote() {
+        return note;
+    }
+
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    public String getFailingGrade() {
+        return failingGrade;
+    }
+
+    public void setFailingGrade(String failingGrade) {
+        this.failingGrade = failingGrade;
+    }
+
     @Override
     public boolean equals(final Object o) {
         if (o == this) return true;
diff --git a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplateRepoImpl.java b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplateRepoImpl.java
index eaa91cf59b..d793b7c16e 100644
--- a/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplateRepoImpl.java
+++ b/core/src/main/java/se/su/dsv/scipro/report/GradingReportTemplateRepoImpl.java
@@ -66,6 +66,8 @@ public class GradingReportTemplateRepoImpl extends GenericRepo<GradingReportTemp
     public GradingReportTemplate updateTemplate(long templateId, GradingReportTemplateUpdate update) {
         GradingReportTemplate gradingReportTemplate = findOne(templateId);
         gradingReportTemplate.setValidFrom(update.validFrom());
+        gradingReportTemplate.setNote(update.note());
+        gradingReportTemplate.setFailingGrade(update.failingGrade());
 
         gradingReportTemplate.getCriteria().clear();
         for (var criteria : update.criteria()) {
diff --git a/core/src/main/resources/db/migration/V390__failing_grade_and_note_on_templates.sql b/core/src/main/resources/db/migration/V390__failing_grade_and_note_on_templates.sql
new file mode 100644
index 0000000000..31d85e8edf
--- /dev/null
+++ b/core/src/main/resources/db/migration/V390__failing_grade_and_note_on_templates.sql
@@ -0,0 +1,3 @@
+ALTER TABLE `grading_report_template`
+    ADD COLUMN `note` TEXT,
+    ADD COLUMN `failing_grade` VARCHAR(32);
diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java
index 27de115481..95ca4c1b82 100644
--- a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java
+++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/EditingGradingTemplate.java
@@ -16,9 +16,9 @@ class EditingGradingTemplate implements Serializable {
     private GradeLimits gradeLimits;
 
     EditingGradingTemplate(GradingReportTemplate template) {
-        this.note = "";
+        this.note = template.getNote();
         this.validFrom = template.getValidFrom();
-        this.gradeLimits = new GradeLimits();
+        this.gradeLimits = new GradeLimits(template);
         this.criteria = new ArrayList<>();
         for (var criteria : template.getCriteria()) {
             Criteria editingCriteria = new Criteria(criteria);
diff --git a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/GradeLimits.java b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/GradeLimits.java
index 7b69827a3b..093455f4d1 100644
--- a/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/GradeLimits.java
+++ b/view/src/main/java/se/su/dsv/scipro/admin/pages/grading/GradeLimits.java
@@ -1,5 +1,7 @@
 package se.su.dsv.scipro.admin.pages.grading;
 
+import se.su.dsv.scipro.report.GradingReportTemplate;
+
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
@@ -8,8 +10,9 @@ class GradeLimits implements Serializable {
     private List<GradeLimit> gradeLimits;
     private String failingGrade;
 
-    GradeLimits() {
+    GradeLimits(GradingReportTemplate template) {
         this.gradeLimits = new ArrayList<>();
+        this.failingGrade = template.getFailingGrade();
     }
 
     void addNewLimit() {