Ignore:
Timestamp:
07/26/23 19:26:35 (16 months ago)
Author:
andrejtodorovski <82031894+andrejtodorovski@…>
Branches:
main
Parents:
e02787e
Message:

Added transactional methods to secure the database integrity and refactoring

Location:
src/main/java/com/example/autopartz/controller
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/com/example/autopartz/controller/AdminController.java

    re02787e r2a552fe  
    22
    33import com.example.autopartz.model.*;
    4 import com.example.autopartz.model.manytomany.PartIsAppropriateForCar;
    5 import com.example.autopartz.model.manytomany.PartIsFromCategory;
    6 import com.example.autopartz.model.manytomany.PartIsInStockInWarehouse;
    7 import com.example.autopartz.model.manytomany.RsForCm;
    84import com.example.autopartz.repository.*;
    9 import com.example.autopartz.service.PriceService;
     5import com.example.autopartz.service.PartService;
     6import com.example.autopartz.service.RepairShopService;
    107import com.example.autopartz.service.UserService;
    118import org.springframework.stereotype.Controller;
     
    2421    private final UserService userService;
    2522    private final CarManufacturerRepository carManufacturerRepository;
    26     private final PartIsFromCategoryRepository partIsFromCategoryRepository;
    27     private final PartIsAppropriateForCarRepository partIsAppropriateForCarRepository;
    2823    private final WarehousemanRepository warehousemanRepository;
    29     private final PartIsInStockInWarehouseRepository partIsInStockInWarehouseRepository;
    3024    private final DeliverymanRepository deliverymanRepository;
    3125    private final CategoryRepository categoryRepository;
    32     private final PartRepository partRepository;
    3326    private final WarehouseRepository warehouseRepository;
    3427    private final CarRepository carRepository;
    3528    private final PartManufacturerRepository partManufacturerRepository;
    36     private final PriceService priceService;
    37     private final RepairShopRepository repairShopRepository;
    38     private final RsForCmRepository rsForCmRepository;
     29    private final PartService partService;
     30    private final RepairShopService repairShopService;
    3931
    40     public AdminController(UserService userService, CarManufacturerRepository carManufacturerRepository, PartIsFromCategoryRepository partIsFromCategoryRepository, PartIsAppropriateForCarRepository partIsAppropriateForCarRepository, WarehousemanRepository warehousemanRepository, PartIsInStockInWarehouseRepository partIsInStockInWarehouseRepository, DeliverymanRepository deliverymanRepository, CategoryRepository categoryRepository, PartRepository partRepository, WarehouseRepository warehouseRepository, CarRepository carRepository, PartManufacturerRepository partManufacturerRepository, PriceService priceService, RepairShopRepository repairShopRepository, RsForCmRepository rsForCmRepository) {
     32    public AdminController(UserService userService, CarManufacturerRepository carManufacturerRepository, WarehousemanRepository warehousemanRepository, DeliverymanRepository deliverymanRepository, CategoryRepository categoryRepository, WarehouseRepository warehouseRepository, CarRepository carRepository, PartManufacturerRepository partManufacturerRepository, PartService partService, RepairShopService repairShopService) {
    4133        this.userService = userService;
    4234        this.carManufacturerRepository = carManufacturerRepository;
    43         this.partIsFromCategoryRepository = partIsFromCategoryRepository;
    44         this.partIsAppropriateForCarRepository = partIsAppropriateForCarRepository;
    4535        this.warehousemanRepository = warehousemanRepository;
    46         this.partIsInStockInWarehouseRepository = partIsInStockInWarehouseRepository;
    4736        this.deliverymanRepository = deliverymanRepository;
    4837        this.categoryRepository = categoryRepository;
    49         this.partRepository = partRepository;
    5038        this.warehouseRepository = warehouseRepository;
    5139        this.carRepository = carRepository;
    5240        this.partManufacturerRepository = partManufacturerRepository;
    53         this.priceService = priceService;
    54         this.repairShopRepository = repairShopRepository;
    55         this.rsForCmRepository = rsForCmRepository;
     41        this.partService = partService;
     42        this.repairShopService = repairShopService;
    5643    }
    5744
     
    10794                        @RequestParam List<Category> categories, @RequestParam Integer warehouse,
    10895                        @RequestParam Integer quantity, @RequestParam Integer amount, HttpServletResponse response){
    109         // Part(String name, String description, PartManufacturer manufacturer, List<Category> categoryList, List<Warehouse> warehouseList, List<Car> carList) {
    110         Part newPart = new Part(name, description==null ? "" : description, partManufacturerRepository.findById(manufacturer).get(),
    111                 categories, List.of(warehouseRepository.findById(warehouse).get()),cars);
    112         partRepository.save(newPart);
    113         priceService.save(new Price(amount, LocalDate.now(),newPart));
    114         partIsInStockInWarehouseRepository.save(new PartIsInStockInWarehouse(newPart.getId(),warehouse,quantity));
    115         for (Category c:categories
    116              ) {
    117             partIsFromCategoryRepository.save(new PartIsFromCategory(newPart.getId(),c.getId()));
    118         }
    119         for (Car car:cars){
    120             partIsAppropriateForCarRepository.save(new PartIsAppropriateForCar(newPart.getId(),car.getId()));
    121         }
     96        partService.addPart(name,description,manufacturer,cars,categories,warehouse,quantity,amount);
    12297        try {
    12398            response.sendRedirect("/");
     
    133108    @PostMapping("/addCarManufacturer")
    134109    public void saveCarManufacturer(@RequestParam String name,@RequestParam String location,
    135                                     Model model, HttpServletResponse response) {
     110                                    HttpServletResponse response) {
    136111        carManufacturerRepository.save(new CarManufacturer(name,location));
    137112        try {
     
    148123    @PostMapping("/addPartManufacturer")
    149124    public void savePartManufacturer(@RequestParam String name,@RequestParam String location,
    150                                     Model model, HttpServletResponse response) {
     125                                    HttpServletResponse response) {
    151126        partManufacturerRepository.save(new PartManufacturer(name,location));
    152127        try {
     
    163138    @PostMapping("/addCategory")
    164139    public void saveCategory(@RequestParam String name,
    165                                     Model model, HttpServletResponse response) {
     140                             HttpServletResponse response) {
    166141        categoryRepository.save(new Category(name));
    167142        try {
     
    198173                        @RequestParam String number,@RequestParam Integer carMId,
    199174                        HttpServletResponse response) {
    200         RepairShop newRs = new RepairShop(name,location,number,
    201                 List.of(carManufacturerRepository.findById(carMId).get()));
    202         repairShopRepository.save(newRs);
    203         rsForCmRepository.save(new RsForCm(newRs.getId(), carMId));
     175        repairShopService.save(name,location,number,carMId);
    204176        try {
    205177            response.sendRedirect("/");
  • src/main/java/com/example/autopartz/controller/HomeController.java

    re02787e r2a552fe  
    11package com.example.autopartz.controller;
    22
    3 import com.example.autopartz.model.*;
    43import com.example.autopartz.model.DTO.CurrentOrderDTO;
    54import com.example.autopartz.model.DTO.OrderInfo;
     5import com.example.autopartz.model.*;
    66import com.example.autopartz.model.manytomany.OrderContainsPart;
    77import com.example.autopartz.model.manytomany.PartIsInStockInWarehouse;
    8 import com.example.autopartz.model.manytomany.PartIsInStockInWarehouseId;
    98import com.example.autopartz.model.views.DeliveriesInProgress;
    109import com.example.autopartz.model.views.PartsForCarTypeAndCategory;
     
    2019import java.io.IOException;
    2120import java.util.ArrayList;
    22 import java.util.Comparator;
    2321import java.util.List;
    2422import java.util.Objects;
     
    103101            int total = 0;
    104102            List<OrderContainsPart> qList = orderContainsPartRepository.findAllByOrderid(o.getOrderid());
    105             for (int i = 0; i < qList.size(); i++) {
    106                 int pr = qList.get(i).getQuantity_order()*
    107                         priceService.findPriceForPart(partService.findById(qList.get(i).getPartid())).stream().findFirst().get().getAmount();
     103            for (OrderContainsPart orderContainsPart : qList) {
     104                int pr = orderContainsPart.getQuantity_order() *
     105                        priceService.findPriceForPart(partService.findById(orderContainsPart.getPartid())).stream().findFirst().get().getAmount();
    108106                CurrentOrderDTO temp = new CurrentOrderDTO(
    109                         partService.findById(qList.get(i).getPartid()).getName(),
    110                         partService.findById(qList.get(i).getPartid()).getManufacturer().getName(),
    111                         qList.get(i).getQuantity_order(),
     107                        partService.findById(orderContainsPart.getPartid()).getName(),
     108                        partService.findById(orderContainsPart.getPartid()).getManufacturer().getName(),
     109                        orderContainsPart.getQuantity_order(),
    112110                        pr);
    113111                list.add(temp);
    114                 total+=pr;
     112                total += pr;
    115113            }
    116114            model.addAttribute("total",total);
     
    188186    }
    189187    @PostMapping("/finishRegister")
    190     public void handleWarehousemanRegister(@RequestParam String location,Model model, HttpServletResponse response, HttpSession session){
     188    public void handleWarehousemanRegister(@RequestParam String location, HttpServletResponse response, HttpSession session){
    191189        System.out.println("here?");
    192190        String username = (String) session.getAttribute("username");
     
    243241    }
    244242    @PostMapping("/finishDelivery/{id}")
    245     public void finishDelivery(@PathVariable Integer id, Model model, HttpServletResponse response){
     243    public void finishDelivery(@PathVariable Integer id, HttpServletResponse response){
    246244        Delivery d = deliveryService.findByOrder(orderService.findById(id));
    247245        d.setStatus("finished");
     
    257255        List<OrderContainsPart> list = orderContainsPartRepository.findAllByOrderid(id);
    258256        List<OrderInfo> partList = new ArrayList<>();
    259         for (int i = 0; i < list.size(); i++) {
    260             OrderInfo oi = new OrderInfo(partService.findById(list.get(i).getPartid()).getName(),
    261                     list.get(i).getQuantity_order(),partService.findById(list.get(i).getPartid()).getManufacturer().getName());
     257        for (OrderContainsPart orderContainsPart : list) {
     258            OrderInfo oi = new OrderInfo(partService.findById(orderContainsPart.getPartid()).getName(),
     259                    orderContainsPart.getQuantity_order(), partService.findById(orderContainsPart.getPartid()).getManufacturer().getName());
    262260            partList.add(oi);
    263261        }
     
    301299        Warehouse wh = whm.getWarehouse();
    302300        Integer whId = wh.getId();
    303         PartIsInStockInWarehouseId tmp = new PartIsInStockInWarehouseId(pId,whId);
    304         PartIsInStockInWarehouse temp = partIsInStockInWarehouseRepository.findById(tmp).get();
    305         temp.setQuantity(temp.getQuantity()+quantity);
    306         partIsInStockInWarehouseRepository.save(temp);
     301        partService.addPartToWarehouse(pId,quantity,whId);
    307302        try {
    308303            response.sendRedirect("/myWarehouseReport");
  • src/main/java/com/example/autopartz/controller/PartController.java

    re02787e r2a552fe  
    7171    }
    7272    @PostMapping("/repairshopdelivery")
    73     public void setRepairShopDelivery(@RequestParam Integer vin, HttpServletResponse response, HttpSession session, HttpServletRequest request){
     73    public void setRepairShopDelivery(@RequestParam Integer vin, HttpServletResponse response, HttpSession session){
    7474        // insert into project.repair (vin, id_repair_shop, id_service_book) values (1111,3,1)
    7575        session.setAttribute("carVin",vin);
     
    107107        RepairShop repairShop = repairShopService.getById(rs);
    108108        repairRepository.save(new Repair(o,repairShop,sb));
    109 //        o.setOrder_status("finished");
    110 //        orderService.save(o);
    111109        session.removeAttribute("order");
    112110        try {
     
    125123        Deliveryman dm = deliverymanList.get(deliverer);
    126124        deliveryRepository.save(new Delivery("in progress",address,dm,o));
    127 //        o.setOrder_status("finished");
    128 //        orderService.save(o);
    129125        session.removeAttribute("order");
    130126        try {
     
    138134        if(session.getAttribute("order")==null){
    139135            User u = userService.findByUsername(request.getRemoteUser());
    140             Order newOrder = orderService.create((Client) u);
     136            Order newOrder = orderService.createOrderAndAddPartToOrder((Client) u, id, quantity);
    141137            session.setAttribute("order",newOrder);
     138        } else {
     139            Order order = (Order) session.getAttribute("order");
     140            orderContainsPartRepository.save(new OrderContainsPart(id, order.getOrderid(), quantity));
    142141        }
    143         Order order = (Order) session.getAttribute("order");
    144         orderContainsPartRepository.save(new OrderContainsPart(id,order.getOrderid(),quantity));
    145142        try {
    146143            response.sendRedirect("/products");
  • src/main/java/com/example/autopartz/controller/UserController.java

    re02787e r2a552fe  
    2525    private final UserService userService;
    2626    private final CarService carService;
    27     private final CarSampleRepository carSampleRepository;
    28     private final ServiceBookRepository serviceBookRepository;
    2927    private final RepairService repairService;
    3028    private final ReviewRepository reviewRepository;
    31     private final RepairRepository repairRepository;
    3229    private final OrderRepository orderRepository;
    3330
    34     public UserController(OrdersForUserRepository ordersForUserRepository, RepairsForUserRepository repairsForUserRepository, ReviewsForUserRepository reviewsForUserRepository, UserService userService, CarService carService, CarSampleRepository carSampleRepository, ServiceBookRepository serviceBookRepository, RepairService repairService, ReviewRepository reviewRepository,
    35                           RepairRepository repairRepository,
     31    public UserController(OrdersForUserRepository ordersForUserRepository, RepairsForUserRepository repairsForUserRepository, ReviewsForUserRepository reviewsForUserRepository, UserService userService, CarService carService, RepairService repairService, ReviewRepository reviewRepository,
    3632                          OrderRepository orderRepository) {
    3733        this.ordersForUserRepository = ordersForUserRepository;
     
    4036        this.userService = userService;
    4137        this.carService = carService;
    42         this.carSampleRepository = carSampleRepository;
    43         this.serviceBookRepository = serviceBookRepository;
    4438        this.repairService = repairService;
    4539        this.reviewRepository = reviewRepository;
    46         this.repairRepository = repairRepository;
    4740        this.orderRepository = orderRepository;
    4841    }
     
    9285                                    @RequestParam Integer km, @RequestParam Integer cartype,
    9386                                    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));
     87        userService.addCarSampleForUser(vin,year,power,displacement,fuel,km,cartype,request.getRemoteUser());
    9788        try {
    9889            response.sendRedirect("/");
     
    109100    @PostMapping("/repairs/addReview/{id}")
    110101    public void addReview(@PathVariable Integer id, @RequestParam Integer rating, @RequestParam(required = false) String comment,
    111                           Model model, HttpServletResponse response, HttpServletRequest request){
     102                          HttpServletResponse response, HttpServletRequest request){
    112103        Client client = (Client) userService.findByUsername(request.getRemoteUser());
    113104        Repair repair = repairService.findById(id);
Note: See TracChangeset for help on using the changeset viewer.