From 779ae118612ce3788fa9c1b331c97f72ecb0f22d Mon Sep 17 00:00:00 2001
From: Anton Romanov <a.romanov@ulstu.ru>
Date: Wed, 29 Jan 2025 10:31:57 +0400
Subject: [PATCH] Add indicator proof docs description

---
 .../ru/ulstu/admin/model/IndicatorForm.java   | 10 ++++++
 .../ru/ulstu/admin/service/AdminService.java  |  1 +
 .../ru/ulstu/indicator/model/Indicator.java   | 14 ++++++++
 .../resources/templates/editIndicator.html    | 35 ++++++++++++++++---
 4 files changed, 56 insertions(+), 4 deletions(-)

diff --git a/src/main/java/ru/ulstu/admin/model/IndicatorForm.java b/src/main/java/ru/ulstu/admin/model/IndicatorForm.java
index 2ef8d45..adeb8d0 100644
--- a/src/main/java/ru/ulstu/admin/model/IndicatorForm.java
+++ b/src/main/java/ru/ulstu/admin/model/IndicatorForm.java
@@ -7,6 +7,8 @@ public class IndicatorForm {
 
     private int max;
 
+    private String proofDocuments;
+
     public String getName() {
         return name;
     }
@@ -30,4 +32,12 @@ public class IndicatorForm {
     public void setMax(int max) {
         this.max = max;
     }
+
+    public String getProofDocuments() {
+        return proofDocuments;
+    }
+
+    public void setProofDocuments(String proofDocuments) {
+        this.proofDocuments = proofDocuments;
+    }
 }
diff --git a/src/main/java/ru/ulstu/admin/service/AdminService.java b/src/main/java/ru/ulstu/admin/service/AdminService.java
index 6151795..07bf447 100644
--- a/src/main/java/ru/ulstu/admin/service/AdminService.java
+++ b/src/main/java/ru/ulstu/admin/service/AdminService.java
@@ -25,6 +25,7 @@ public class AdminService {
                 : indicatorService.getIndicatorById(indicatorForm.getId());
         indicator.setName(indicatorForm.getName());
         indicator.setMax(indicatorForm.getMax());
+        indicator.setProofDocuments(indicatorForm.getProofDocuments());
         indicatorService.save(indicator);
     }
 
diff --git a/src/main/java/ru/ulstu/indicator/model/Indicator.java b/src/main/java/ru/ulstu/indicator/model/Indicator.java
index 6a8beca..a60e21f 100644
--- a/src/main/java/ru/ulstu/indicator/model/Indicator.java
+++ b/src/main/java/ru/ulstu/indicator/model/Indicator.java
@@ -1,6 +1,7 @@
 package ru.ulstu.indicator.model;
 
 import jakarta.persistence.Entity;
+import jakarta.persistence.Lob;
 import jakarta.validation.constraints.Max;
 import jakarta.validation.constraints.Min;
 import jakarta.validation.constraints.NotBlank;
@@ -17,12 +18,17 @@ public class Indicator extends BaseEntity {
     @Max(30)
     private int max;
 
+    @NotBlank
+    @Lob
+    private String proofDocuments;
+
     public Indicator() {
     }
 
     public Indicator(IndicatorForm indicatorForm) {
         this.name = indicatorForm.getName();
         this.max = indicatorForm.getMax();
+        this.proofDocuments = indicatorForm.getProofDocuments();
     }
 
     public String getName() {
@@ -40,4 +46,12 @@ public class Indicator extends BaseEntity {
     public void setMax(int max) {
         this.max = max;
     }
+
+    public String getProofDocuments() {
+        return proofDocuments;
+    }
+
+    public void setProofDocuments(String proofDocuments) {
+        this.proofDocuments = proofDocuments;
+    }
 }
diff --git a/src/main/resources/templates/editIndicator.html b/src/main/resources/templates/editIndicator.html
index 6fb8fbb..6d9146c 100644
--- a/src/main/resources/templates/editIndicator.html
+++ b/src/main/resources/templates/editIndicator.html
@@ -11,15 +11,42 @@
         <input type="hidden" th:field="*{id}">
         <div class="form-group">
             <label for="name">Название</label>
-            <input type="text" required class="form-control" id="name" th:field="*{name}"
+            <input th:field="*{name}"
+                   id="name"
+                   type="text"
+                   required
+                   class="form-control"
                    placeholder="Название показателя">
-            <p th:if="${#fields.hasErrors('name')}" th:class="${#fields.hasErrors('name')}? error">
-                Не может быть пустым</p>
+            <p th:if="${#fields.hasErrors('name')}"
+               th:class="${#fields.hasErrors('name')}? error">
+                Не может быть пустым
+            </p>
         </div>
 
         <div class="form-group">
             <label for="name">Максимальная сумма баллов</label>
-            <input type="number" required class="form-control" id="max" min="0" , max="30" th:field="*{max}">
+            <input th:field="*{max}"
+                   required
+                   id="max"
+                   type="number"
+                   class="form-control"
+                   min="0"
+                   max="30">
+        </div>
+
+        <div class="form-group">
+            <label for="name">Описание подтверждающих документов</label>
+            <textarea th:field="*{proofDocuments}"
+                      required
+                      id="proofDocuments"
+                      class="form-control"
+                      placeholder="Описание подтверждающих документов"
+                      style="height: 100px">
+            </textarea>
+            <p th:if="${#fields.hasErrors('proofDocuments')}"
+               th:class="${#fields.hasErrors('proofDocuments')}? error">
+                Не может быть пустым
+            </p>
         </div>
 
         <button name="save" type="submit" class="btn btn-outline-dark">Сохранить</button>