From 9172604227cd8e24105a3a25fbe604528266e75e Mon Sep 17 00:00:00 2001 From: mrfoxygmfr Date: Mon, 28 Apr 2025 00:46:27 +0300 Subject: feat: partners controller + pages --- .../http/controllers/PartnersController.java | 82 ++++++++++++++++++++ src/main/resources/templates/partnerEdit.html | 48 ++++++++++++ src/main/resources/templates/partners.html | 87 ++++++++++++++++++++++ 3 files changed, 217 insertions(+) create mode 100644 src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java create mode 100644 src/main/resources/templates/partnerEdit.html create mode 100644 src/main/resources/templates/partners.html (limited to 'src/main') 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 new file mode 100644 index 0000000..22d2d78 --- /dev/null +++ b/src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java @@ -0,0 +1,82 @@ +package ru.mrfoxygmfr.warehouse_accounting.http.controllers; + +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 java.util.List; + +@Controller +public class PartnersController { + @Autowired + private PartnerDAO partnerDAO; + + @GetMapping("partners") + public String partners(@RequestParam(name = "partnerName", required = false) String name, + @RequestParam(name = "partnerType", required = false) PartnerType type, + @RequestParam(name = "partnerTaxNumber", required = false) String taxNumber, + Model model) { + Specification spec = Specification.where(null); + if (name != null && !name.isEmpty()) { + spec = spec.and(PartnerSpecs.partnerNameLike(name)); + model.addAttribute("partnerNameFilter", name); + } + if (type != null) { + spec = spec.and(PartnerSpecs.partnerTypeEqual(type)); + model.addAttribute("partnerTypeFilter", type.toString()); + System.out.println(model.getAttribute("partnerTypeFilter") == "ISSUER"); + } + if (taxNumber != null && !taxNumber.isEmpty()) { + spec = spec.and(PartnerSpecs.partnerTaxNumberLike(taxNumber)); + model.addAttribute("partnerTaxNumberFilter", taxNumber); + } + + List partners = partnerDAO.findAll(spec); + model.addAttribute("partners", partners); + return "partners"; + } + + @GetMapping("partner") + public String partner(@RequestParam(name = "id") Integer id, Model model) { + Partner partner = partnerDAO.findById(id).orElseThrow(); + model.addAttribute("partner", partner); + return "partnerEdit"; + } + + @PostMapping("partner") + public String partner(@RequestParam(name = "partnerId") Integer id, + @RequestParam(name = "partnerName") String name, + @RequestParam(name = "partnerTaxNumber") String taxNumber, + @RequestParam(name = "partnerType") PartnerType type, + @RequestParam(name = "partnerAddress") String address) { + Partner partner; + if (id == -1) { + partner = new Partner(name, taxNumber, type, address); + } else { + partner = partnerDAO.findById(id).orElseThrow(); + partner.setName(name); + partner.setTaxNumber(taxNumber); + partner.setType(type); + partner.setAddress(address); + } + partnerDAO.save(partner); + return "redirect:/partners"; + } + + @GetMapping("newPartner") + public String newPartner(Model model) { + Partner partner = new Partner(); + partner.setId(-1); + model.addAttribute("partner", partner); + model.addAttribute("newItem", true); + return "partnerEdit"; + } +} diff --git a/src/main/resources/templates/partnerEdit.html b/src/main/resources/templates/partnerEdit.html new file mode 100644 index 0000000..a02a8e5 --- /dev/null +++ b/src/main/resources/templates/partnerEdit.html @@ -0,0 +1,48 @@ + + +
+ + +
+ +
+ + +
+ + + +

+ + +

+ + +

+ + +

+ +

Контактные лица делают брррр TODO FIXME

+ + + +
+
+ + +
+
+
+ + + \ No newline at end of file diff --git a/src/main/resources/templates/partners.html b/src/main/resources/templates/partners.html new file mode 100644 index 0000000..7687f3a --- /dev/null +++ b/src/main/resources/templates/partners.html @@ -0,0 +1,87 @@ + + +
+ + +
+ +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
Фильтры
Название + +
Тип + +
ИНН + +
+
+ + + + + + + + + + + + + + + + + + + + + +
НазваниеИННТипАдрес
Данному фильтру не удовлетворяет ни одного партнера.
+ + + + + + + + + +
+
+ +
+
+ + \ No newline at end of file -- cgit mrf-deployment