source: src/main/java/com/example/autopartz/controller/UserController.java@ d4b888e

main
Last change on this file since d4b888e was d4b888e, checked in by andrejtodorovski <82031894+andrejtodorovski@…>, 18 months ago

Added full functionality for adding review

  • Property mode set to 100644
File size: 6.0 KB
RevLine 
[2e46f06]1package com.example.autopartz.controller;
2
[d4b888e]3import com.example.autopartz.model.*;
4import com.example.autopartz.model.views.RepairsForUser;
[f484b14]5import com.example.autopartz.repository.*;
6import com.example.autopartz.service.CarService;
[d4b888e]7import com.example.autopartz.service.RepairService;
[ab952ab]8import com.example.autopartz.service.UserService;
[feffc2f]9import org.springframework.stereotype.Controller;
10import org.springframework.ui.Model;
[d4b888e]11import org.springframework.web.bind.annotation.*;
[2e46f06]12
[ab952ab]13import javax.servlet.http.HttpServletRequest;
[f484b14]14import javax.servlet.http.HttpServletResponse;
15import java.io.IOException;
[d4b888e]16import java.util.ArrayList;
17import java.util.List;
[ab952ab]18
[feffc2f]19@Controller
[2e46f06]20@RequestMapping("/")
21public class UserController {
[23a2bc5]22 private final OrdersForUserRepository ordersForUserRepository;
23 private final RepairsForUserRepository repairsForUserRepository;
24 private final ReviewsForUserRepository reviewsForUserRepository;
[ab952ab]25 private final UserService userService;
[f484b14]26 private final CarService carService;
27 private final CarSampleRepository carSampleRepository;
28 private final ServiceBookRepository serviceBookRepository;
[d4b888e]29 private final RepairService repairService;
30 private final ReviewRepository reviewRepository;
31 private final RepairRepository repairRepository;
32 private final OrderRepository orderRepository;
33
34 public UserController(OrdersForUserRepository ordersForUserRepository, RepairsForUserRepository repairsForUserRepository, ReviewsForUserRepository reviewsForUserRepository, UserService userService, CarService carService, CarSampleRepository carSampleRepository, ServiceBookRepository serviceBookRepository, RepairService repairService, ReviewRepository reviewRepository,
35 RepairRepository repairRepository,
36 OrderRepository orderRepository) {
[23a2bc5]37 this.ordersForUserRepository = ordersForUserRepository;
38 this.repairsForUserRepository = repairsForUserRepository;
39 this.reviewsForUserRepository = reviewsForUserRepository;
[ab952ab]40 this.userService = userService;
[f484b14]41 this.carService = carService;
42 this.carSampleRepository = carSampleRepository;
43 this.serviceBookRepository = serviceBookRepository;
[d4b888e]44 this.repairService = repairService;
45 this.reviewRepository = reviewRepository;
46 this.repairRepository = repairRepository;
47 this.orderRepository = orderRepository;
[2e46f06]48 }
[ab952ab]49 @GetMapping("orders")
50 public String getOrdersForUser(Model model, HttpServletRequest request){
[676144b]51 Integer id = userService.findByUsername(request.getRemoteUser()).getId();
[feffc2f]52 model.addAttribute("userOrders",ordersForUserRepository.findAllByUserid(id));
[60de3eb]53 model.addAttribute("bodyContent","ordersForUser");
54 return "master-template";
[23a2bc5]55 }
[ab952ab]56 @GetMapping("repairs")
57 public String getRepairsForUser(Model model, HttpServletRequest request){
[676144b]58 Integer id = userService.findByUsername(request.getRemoteUser()).getId();
[feffc2f]59 model.addAttribute("userRepairs",repairsForUserRepository.findAllByUserid(id));
[d4b888e]60 List<Boolean> hasReview = new ArrayList<>(100);
61 for (int i = 0; i < orderRepository.findAll().size(); i++) {
62 hasReview.add(false);
63 }
64 for(RepairsForUser rfu: repairsForUserRepository.findAll()){
65 if(reviewRepository.findByRepair(repairService.findById(rfu.getRepairid()))==null){
66 hasReview.set(rfu.getRepairid(),false);
67 }
68 else {
69 hasReview.set(rfu.getRepairid(),true);
70 }
71 }
72 model.addAttribute("hasReview", hasReview);
[60de3eb]73 model.addAttribute("bodyContent","repairsForUser");
74 return "master-template";
[23a2bc5]75 }
[ab952ab]76 @GetMapping("reviews")
77 public String getReviewsForUser(Model model,HttpServletRequest request){
[676144b]78 Integer id = userService.findByUsername(request.getRemoteUser()).getId();
[feffc2f]79 model.addAttribute("userReviews",reviewsForUserRepository.findAllByUserid(id));
[60de3eb]80 model.addAttribute("bodyContent","reviewsForUser");
81 return "master-template";
[23a2bc5]82 }
[f484b14]83 @GetMapping("/addCarSampleForUser")
84 public String addCarSampleForUser(Model model){
85 model.addAttribute("bodyContent","addCarSampleForUser");
86 model.addAttribute("cars",carService.findAll());
87 return "master-template";
88 }
89 @PostMapping("/addCarSampleForUser")
90 public void addCarSampleForUser(@RequestParam Integer vin, @RequestParam Integer year, @RequestParam Integer power,
91 @RequestParam Integer displacement, @RequestParam String fuel,
92 @RequestParam Integer km, @RequestParam Integer cartype,
93 HttpServletRequest request, HttpServletResponse response){
94 CarSample cs = new CarSample(vin,year,power,displacement,fuel,km, (Client) userService.findByUsername(request.getRemoteUser()),carService.findById(cartype));
95 carSampleRepository.save(cs);
96 serviceBookRepository.save(new ServiceBook(cs));
97 try {
98 response.sendRedirect("/");
99 } catch (IOException e) {
100 throw new RuntimeException(e);
101 }
102 }
[d4b888e]103 @GetMapping("/repairs/addReview/{id}")
104 public String addReviewFor(@PathVariable Integer id, Model model){
105 model.addAttribute("bodyContent","addReviewPage");
106 model.addAttribute("repair", repairService.findById(id));
107 return "master-template";
108 }
109 @PostMapping("/repairs/addReview/{id}")
110 public void addReview(@PathVariable Integer id, @RequestParam Integer rating, @RequestParam(required = false) String comment,
111 Model model, HttpServletResponse response, HttpServletRequest request){
112 Client client = (Client) userService.findByUsername(request.getRemoteUser());
113 Repair repair = repairService.findById(id);
114 reviewRepository.save(new Review(rating,
115 comment==null ? "" : comment, repair,client));
116 try {
117 response.sendRedirect("/repairs");
118 } catch (IOException e) {
119 throw new RuntimeException(e);
120 }
121 }
[2e46f06]122}
Note: See TracBrowser for help on using the repository browser.