diff options
Diffstat (limited to 'src/main/java/ru/mrfoxygmfr')
-rw-r--r-- | src/main/java/ru/mrfoxygmfr/warehouse_accounting/http/controllers/PartnersController.java | 82 |
1 files changed, 82 insertions, 0 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 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<Partner> 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<Partner> 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"; + } +} |