aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java71
-rw-r--r--src/main/resources/templates/partnerContactEdit.html44
-rw-r--r--src/main/resources/templates/partnerContacts.html50
-rw-r--r--src/main/resources/templates/partnerEdit.html3
4 files changed, 161 insertions, 7 deletions
diff --git a/src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java b/src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java
index 22d2d78..fbcb1a4 100644
--- a/src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java
+++ b/src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java
@@ -4,13 +4,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import ru.mrfoxygmfr.warehouse_accounting.db.dao.PartnerDAO;
-import ru.mrfoxygmfr.warehouse_accounting.db.dao.specs.PartnerSpecs;
-import ru.mrfoxygmfr.warehouse_accounting.db.models.Partner;
-import ru.mrfoxygmfr.warehouse_accounting.db.models.PartnerType;
+import org.springframework.web.bind.annotation.*;
+import ru.mrfoxygmfr.warehouse_accounting.db.dao.*;
+import ru.mrfoxygmfr.warehouse_accounting.db.dao.specs.*;
+import ru.mrfoxygmfr.warehouse_accounting.db.models.*;
import java.util.List;
@@ -18,6 +15,8 @@ import java.util.List;
public class PartnersController {
@Autowired
private PartnerDAO partnerDAO;
+ @Autowired
+ private PartnerContactDAO partnerContactDAO;
@GetMapping("partners")
public String partners(@RequestParam(name = "partnerName", required = false) String name,
@@ -79,4 +78,62 @@ public class PartnersController {
model.addAttribute("newItem", true);
return "partnerEdit";
}
+
+
+ @RequestMapping("/partnerContacts/{partnerId}")
+ public String partnerContacts(@PathVariable(value = "partnerId") Integer partnerId,
+ Model model) {
+
+ Partner partner = partnerDAO.findById(partnerId).orElseThrow();
+ model.addAttribute("partnerContacts", partner.getContacts());
+ model.addAttribute("partnerId", partnerId);
+ return "partnerContacts";
+ }
+
+ @GetMapping("partnerContact")
+ public String partnerContact(@RequestParam(name = "id") Integer id, Model model) {
+ PartnerContact contact = partnerContactDAO.findById(id).orElseThrow();
+ model.addAttribute("partnerContact", contact);
+ return "partnerContactEdit";
+ }
+
+ @PostMapping("partnerContact")
+ public String partnerContact(@RequestParam(name = "partnerId") Integer partnerId,
+ @RequestParam(name = "partnerContactId") Integer id,
+ @RequestParam(name = "partnerContactSurname") String surname,
+ @RequestParam(name = "partnerContactName") String name,
+ @RequestParam(name = "partnerContactEmail") String email,
+ @RequestParam(name = "partnerContactPhone") String phone,
+ @RequestParam(name = "partnerContactPosition") String position) {
+ Partner partner = partnerDAO.findById(partnerId).orElseThrow();
+ PartnerContact contact;
+ if (id == -1) {
+ contact = new PartnerContact(partner, surname, name, position, phone, email);
+ } else {
+ contact = partnerContactDAO.findById(id).orElseThrow();
+ contact.setSurname(name);
+ contact.setName(name);
+ contact.setEmail(email);
+ contact.setPhone(phone);
+ contact.setPosition(position);
+ partner.addContact(contact);
+ }
+ partnerDAO.save(partner);
+ partnerContactDAO.save(contact);
+ return String.format("redirect:/partnerContacts/%d", partnerId);
+ }
+
+ @GetMapping("/newPartnerContact/{partnerId}")
+ public String newPartnerContact(@PathVariable(value = "partnerId") Integer partnerId,
+ Model model) {
+ Partner partner = partnerDAO.findById(partnerId).orElseThrow();
+
+ PartnerContact contact = new PartnerContact();
+ contact.setId(-1);
+ contact.setPartner(partner);
+
+ model.addAttribute("partnerContact", contact);
+ model.addAttribute("newItem", true);
+ return "partnerContactEdit";
+ }
}
diff --git a/src/main/resources/templates/partnerContactEdit.html b/src/main/resources/templates/partnerContactEdit.html
new file mode 100644
index 0000000..15a089d
--- /dev/null
+++ b/src/main/resources/templates/partnerContactEdit.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML>
+<html xmlns:th="http://www.thymeleaf.org" lang="en">
+<div th:replace="~{common :: head}"></div>
+
+<body>
+<div th:replace="~{common :: page-header}"></div>
+
+<div class="indent">
+ <div id="updateToggleSelector">
+ <button id="updateBtn" class="btn btn-primary" onclick="toggleDisabled()">Изменить</button><br><br>
+ </div>
+
+ <form method="post" action="/partnerContact">
+ <input disabled hidden id="partnerId" name="partnerId" th:value="${partnerContact.getPartner().getId()}">
+ <input disabled hidden id="partnerContactId" name="partnerContactId" th:value="${partnerContact.getId()}">
+
+ <label for="partnerContactSurname">Фамилия:</label>
+ <input disabled type="text" id="partnerContactSurname" name="partnerContactSurname" required th:value="${partnerContact.getSurname()}"><br><br>
+
+
+ <label for="partnerContactName">Имя:</label>
+ <input disabled type="text" id="partnerContactName" name="partnerContactName" required th:value="${partnerContact.getName()}"><br><br>
+
+ <label for="partnerContactEmail">Email:</label>
+ <input disabled type="text" id="partnerContactEmail" name="partnerContactEmail" required th:value="${partnerContact.getEmail()}"><br><br>
+
+ <label for="partnerContactPhone">Телефон:</label>
+ <input disabled type="text" id="partnerContactPhone" name="partnerContactPhone" required th:value="${partnerContact.getPhone()}"><br><br>
+
+ <label for="partnerContactPosition">Должность:</label>
+ <input disabled type="text" id="partnerContactPosition" name="partnerContactPosition" required th:value="${partnerContact.getPosition()}"><br><br>
+
+ <input id="saveBtn" type="submit" value="Сохранить" class="btn btn-primary" hidden>
+
+ </form>
+</div>
+
+
+<div th:replace="~{common :: site-footer}"></div>
+<div th:replace="~{common :: site-script}"></div>
+<div th:replace="~{common :: editFieldsToggle}"></div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/src/main/resources/templates/partnerContacts.html b/src/main/resources/templates/partnerContacts.html
new file mode 100644
index 0000000..a44e969
--- /dev/null
+++ b/src/main/resources/templates/partnerContacts.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<html xmlns:th="http://www.thymeleaf.org" lang="en">
+<div th:replace="~{common :: head}"></div>
+
+<body>
+<div th:replace="~{common :: page-header}"></div>
+
+<div class="indent">
+ <form method="get" th:action="'/newPartnerContact/' + ${partnerId}">
+ <button id="newPartnerContactBtn" type="submit" class="btn btn-primary">Создать новое контактное лицо партнера</button>
+ </form>
+ <br>
+
+ <table class="table table-bordered table-warning">
+ <thead class="thead-dark">
+ <tr>
+ <th scope="col">ФИ</th>
+ <th scope="col">Email</th>
+ <th scope="col">Телефон</th>
+ <th scope="col">Должность</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr th:if="${partnerContacts.isEmpty()}">
+ <td colspan="6">У данного партнера нет ни одного контактного лица.</td>
+ </tr>
+ <tr th:each="partnerContact : ${partnerContacts}">
+ <td>
+ <a th:href="'/partnerContact?id=' + ${partnerContact.getId()}">
+ <span th:text="${partnerContact.getSurname()} + ' ' + ${partnerContact.getName()}"></span>
+ </a>
+ </td>
+ <td>
+ <span th:text="${partnerContact.getEmail()}"></span>
+ </td>
+ <td>
+ <span th:text="${partnerContact.getPhone()}"></span>
+ </td>
+ <td>
+ <span th:text="${partnerContact.getPosition()}"></span>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+<div th:replace="~{common :: site-footer}"></div>
+<div th:replace="~{common :: site-script}"></div>
+</body>
+</html> \ No newline at end of file
diff --git a/src/main/resources/templates/partnerEdit.html b/src/main/resources/templates/partnerEdit.html
index a02a8e5..9bcebed 100644
--- a/src/main/resources/templates/partnerEdit.html
+++ b/src/main/resources/templates/partnerEdit.html
@@ -11,6 +11,9 @@
<a th:href="@{/operations(operationPartnerName=${partner.getName()})}">
<button class="btn btn-primary">Операции партнера</button>
</a><br><br>
+ <a th:href="'/partnerContacts/' + ${partner.getId()}">
+ <button class="btn btn-primary">Контактные лица партнера</button>
+ </a><br><br>
</div>
<form method="post" action="/partner">