diff options
author | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-04-28 13:32:27 +0300 |
---|---|---|
committer | mrfoxygmfr <mrfoxygmfr@sch9.ru> | 2025-04-28 13:32:27 +0300 |
commit | 32abde013d2f103ddefae167c2b459b1b024f395 (patch) | |
tree | dabf9de3f0b6b3fc47cf21c437d9402804219c51 | |
parent | 7e5a22ea51142ec0e582684bb0cba54942e3be36 (diff) |
feat: partner contacts controller + pages
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"> |