source: src/main/java/project/fmo/app/projcetfmo/Web/ProductController.java@ d14176d

main
Last change on this file since d14176d was d14176d, checked in by HristijanMitic00 <hristijan.mitic.01@…>, 12 months ago

First commit

  • Property mode set to 100644
File size: 8.0 KB
Line 
1package project.fmo.app.projcetfmo.Web;
2
3
4import org.springframework.format.annotation.DateTimeFormat;
5import org.springframework.stereotype.Controller;
6import org.springframework.ui.Model;
7import org.springframework.web.bind.annotation.*;
8import project.fmo.app.projcetfmo.Model.*;
9import project.fmo.app.projcetfmo.Service.*;
10
11
12import java.sql.Date;
13import java.text.ParseException;
14
15import java.time.LocalDate;
16import java.util.List;
17
18
19@Controller
20@RequestMapping("/products")
21public class ProductController {
22
23 private final ProduktService produktService;
24 private final KategorijaService kategorijaService;
25 private final ProduktEOdKategorijaService produktEOdKategorijaService;
26 private final CenaService cenaService;
27 private final NarackaService narackaService;
28 private final NarackaSodrziProduktService narackaSodrziProduktService;
29 private final KupuvacService kupuvacService;
30 private final KorisnikService korisnikService;
31
32 public ProductController(ProduktService produktService, KategorijaService kategorijaService, ProduktEOdKategorijaService produktEOdKategorijaService, CenaService cenaService, NarackaService narackaService, NarackaSodrziProduktService narackaSodrziProduktService, KupuvacService kupuvacService, KorisnikService korisnikService) {
33 this.produktService = produktService;
34 this.kategorijaService = kategorijaService;
35 this.produktEOdKategorijaService = produktEOdKategorijaService;
36 this.cenaService = cenaService;
37 this.narackaService = narackaService;
38 this.narackaSodrziProduktService = narackaSodrziProduktService;
39 this.kupuvacService = kupuvacService;
40 this.korisnikService = korisnikService;
41 }
42
43 @GetMapping
44 public String getProductPage(Model model) {
45 List<Produkt> products = this.produktService.findAll();
46 model.addAttribute("products", products);
47 model.addAttribute("kat", kategorijaService.findAll());
48 model.addAttribute("categories", produktEOdKategorijaService.findAll());
49 model.addAttribute("prices", cenaService.findAll());
50 model.addAttribute("bodyContent", "products");
51 return "master_template";
52 }
53
54 @GetMapping("/{id}")
55 public String getProductInfo(Model model, @PathVariable Integer id){
56 Produkt p = produktService.findById(id).orElse(null);
57 Cena c = cenaService.findByIdProdukt(id);
58 ProduktEOdKategorija pk = produktEOdKategorijaService.findByIdProdukt(id);
59 List<Kategorija> k = kategorijaService.findAll();
60 Kategorija kat = null;
61 for ( Kategorija kategorija : k){
62 if (kategorija.getIdKategorija() == pk.getIdKategorija()){
63 kat=kategorija;
64 }
65 }
66 model.addAttribute("product", p);
67 model.addAttribute("price", c);
68 model.addAttribute("category",pk);
69 if(kat != null) {
70 model.addAttribute("kat", kat);
71 }
72 model.addAttribute("bodyContent", "product_info");
73 return "master_template";
74 }
75
76 @PostMapping("{id}/add-to-cart")
77 public String addProductToCart(@PathVariable Integer id,
78 @RequestParam String idKorisnik,
79 @RequestParam int cena,
80 @RequestParam int quantity){
81 Korisnik kOrisnik = korisnikService.findbyImePrezime(idKorisnik);
82 Kupuvac k = kupuvacService.findById(kOrisnik.getIdKorisnik());
83 Naracka n = narackaService.findByIdKorisniktAndStatus(k.getIdKorisnik(),"aktivna");
84 if (n == null){
85 //Naracka narackaNova = new Naracka(cena*quantity, Date.valueOf(LocalDate.now()), "aktivna", "/", k);
86 Naracka narackaNova = narackaService.save(cena*quantity, Date.valueOf(LocalDate.now()), "aktivna", "/", k);
87 NarackaSodrziProdukt nsp = new NarackaSodrziProdukt(id,narackaNova.getIdNaracka(),quantity,cena);
88 narackaSodrziProduktService.save(id,narackaNova.getIdNaracka(),quantity,cena);
89
90 return "redirect:/products";
91 }
92 else {
93 narackaService.edit(cena*quantity,n.getStatus(),n.getAdresa(),k.getIdKorisnik(),n.getIdNaracka());
94 NarackaSodrziProdukt narackaSodrziProdukt = narackaSodrziProduktService.findByIdProduktAndIdNaracka(id,n.getIdNaracka());
95 if(narackaSodrziProdukt == null){
96 NarackaSodrziProdukt nova = new NarackaSodrziProdukt(id,n.getIdNaracka(),quantity,cena);
97 narackaSodrziProduktService.save(id,n.getIdNaracka(),quantity,cena);
98 }
99 else{
100 narackaSodrziProduktService.edit(id,n.getIdNaracka(),quantity,cena);
101 }
102 return "redirect:/products";
103 }
104 }
105
106 @DeleteMapping("/delete/{id}")
107 public String deleteProduct(@PathVariable Integer id,Model model) {
108 if(narackaSodrziProduktService.findByIdProdukt(id).size() != 0){
109 model.addAttribute("bodyContent", "not_valid_delete");
110 return "master_template";
111 }
112 this.cenaService.deleteByIdProdukt(id);
113 this.produktEOdKategorijaService.deleteByIdProdukt(id);
114 this.produktService.deleteById(id);
115 return "redirect:/products";
116 }
117
118 @GetMapping("/edit-form/{id}")
119 public String editProductPage(@PathVariable Integer id, Model model) {
120 if (this.produktService.findById(id).isPresent()) {
121 Produkt product = this.produktService.findById(id).get();
122 Cena c = cenaService.findByIdProdukt(product.getIdProdukt());
123 ProduktEOdKategorija produktEOdKategorija = produktEOdKategorijaService.findByIdProdukt(product.getIdProdukt());
124 model.addAttribute("chosen", produktEOdKategorija);
125 model.addAttribute("price", c);
126 List<Kategorija> categories = this.kategorijaService.findAll();
127 model.addAttribute("categories", categories);
128 model.addAttribute("product", product);
129 model.addAttribute("bodyContent", "add_product");
130 return "master_template";
131 }
132 return "redirect:/products";
133 }
134
135 @GetMapping("/add-form")
136 public String addProductPage(Model model) {
137 List<Kategorija> categories = this.kategorijaService.findAll();
138 model.addAttribute("categories", categories);
139 model.addAttribute("bodyContent", "add_product");
140 return "master_template";
141 }
142
143 @PostMapping("/add")
144 public String saveProduct(
145 @RequestParam(required = false) Integer id,
146 @RequestParam String name,
147 @RequestParam(required = false) String description,
148 @RequestParam Integer category,
149 @RequestParam Date date,
150 @RequestParam(required = false) String dateTo,
151 @RequestParam int price) throws ParseException {
152 if(dateTo.length() != 0) {
153 Date d = Date.valueOf(dateTo);
154
155 if (id != null) {
156 this.produktService.edit(id, name, description);
157 this.cenaService.edit(id, date, d, price);
158 this.produktEOdKategorijaService.edit(id, category);
159
160 } else {
161 Produkt p = this.produktService.save(name, description);
162 this.cenaService.save(p.getIdProdukt(), date, d, price);
163 this.produktEOdKategorijaService.save(p.getIdProdukt(), category);
164 }
165 }
166 else{
167 if (id != null) {
168 this.produktService.edit(id, name, description);
169 this.cenaService.edit(id, date, null, price);
170 this.produktEOdKategorijaService.edit(id, category);
171
172 } else {
173 Produkt p = this.produktService.save(name, description);
174 this.cenaService.save(p.getIdProdukt(), date, null, price);
175 this.produktEOdKategorijaService.save(p.getIdProdukt(), category);
176 }
177
178 }
179 return "redirect:/products";
180 }
181
182
183
184
185}
Note: See TracBrowser for help on using the repository browser.