From 32abde013d2f103ddefae167c2b459b1b024f395 Mon Sep 17 00:00:00 2001 From: mrfoxygmfr Date: Mon, 28 Apr 2025 13:32:27 +0300 Subject: feat: partner contacts controller + pages --- .../http/controllers/PartnersController.java | 71 +++++++++++++++++++--- .../resources/templates/partnerContactEdit.html | 44 ++++++++++++++ src/main/resources/templates/partnerContacts.html | 50 +++++++++++++++ src/main/resources/templates/partnerEdit.html | 3 + 4 files changed, 161 insertions(+), 7 deletions(-) create mode 100644 src/main/resources/templates/partnerContactEdit.html create mode 100644 src/main/resources/templates/partnerContacts.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 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 @@ + + +
+ + +
+ +
+
+

+
+ +
+ + + + +

+ + + +

+ + +

+ + +

+ + +

+ + + +
+
+ + +
+
+
+ + + \ 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 @@ + + +
+ + +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
ФИEmailТелефонДолжность
У данного партнера нет ни одного контактного лица.
+ + + + + + + + + +
+
+ +
+
+ + \ 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 @@

+ + +

-- cgit mrf-deployment