- Timestamp:
- 01/07/23 01:51:16 (23 months ago)
- Branches:
- main
- Children:
- ed7ef92
- Parents:
- 89865ae
- Location:
- src/main
- Files:
-
- 12 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
src/main/java/com/example/autopartz/config/WebSecurityConfig.java
r89865ae r4d67d70 30 30 .antMatchers("/", "/products", "/services", "/filtered", "/login", "/register","/registerWarehouseman","/finishRegister","/test/*","/access_denied","/carCategoryReport","/partManufacturersReport","/mostPurchasedPart").permitAll() 31 31 .antMatchers("/orders","/repairs","/reviews","/part/*","/currentOrder","/addCarSampleForUser","/repairs/addReview/*").hasRole("CLIENT") 32 .antMatchers("/viewUsers","/approve/*").hasRole("ADMIN") 32 .antMatchers("/viewUsers","/approve/*","/addPart").hasRole("ADMIN") 33 .antMatchers("/myWarehouseReport","myWarehouse").hasRole("WAREHOUSEMAN") 33 34 .anyRequest() 34 35 .authenticated() -
src/main/java/com/example/autopartz/controller/AdminController.java
r89865ae r4d67d70 1 1 package com.example.autopartz.controller; 2 2 3 import com.example.autopartz.model. Deliveryman;4 import com.example.autopartz.model. Role;5 import com.example.autopartz.model. User;6 import com.example.autopartz.model. Warehouseman;7 import com.example.autopartz.repository. DeliverymanRepository;8 import com.example.autopartz. repository.WarehousemanRepository;3 import 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.repository.*; 8 import com.example.autopartz.service.PriceService; 9 9 import com.example.autopartz.service.UserService; 10 10 import org.springframework.stereotype.Controller; 11 11 import org.springframework.ui.Model; 12 import org.springframework.web.bind.annotation.GetMapping; 13 import org.springframework.web.bind.annotation.PathVariable; 14 import org.springframework.web.bind.annotation.PostMapping; 15 import org.springframework.web.bind.annotation.RequestMapping; 12 import org.springframework.web.bind.annotation.*; 16 13 17 14 import javax.servlet.http.HttpServletResponse; 18 15 import java.io.IOException; 19 16 import java.time.LocalDate; 17 import java.time.LocalDateTime; 20 18 import java.util.List; 21 19 import java.util.Objects; … … 25 23 public class AdminController { 26 24 private final UserService userService; 25 private final PartIsFromCategoryRepository partIsFromCategoryRepository; 26 private final PartIsAppropriateForCarRepository partIsAppropriateForCarRepository; 27 27 private final WarehousemanRepository warehousemanRepository; 28 private final PartIsInStockInWarehouseRepository partIsInStockInWarehouseRepository; 28 29 private final DeliverymanRepository deliverymanRepository; 30 private final CategoryRepository categoryRepository; 31 private final PartRepository partRepository; 32 private final WarehouseRepository warehouseRepository; 33 private final CarRepository carRepository; 34 private final PartManufacturerRepository partManufacturerRepository; 35 private final PriceService priceService; 29 36 30 public AdminController(UserService userService, WarehousemanRepository warehousemanRepository, DeliverymanRepository deliverymanRepository) {37 public AdminController(UserService userService, PartIsFromCategoryRepository partIsFromCategoryRepository, PartIsAppropriateForCarRepository partIsAppropriateForCarRepository, WarehousemanRepository warehousemanRepository, PartIsInStockInWarehouseRepository partIsInStockInWarehouseRepository, DeliverymanRepository deliverymanRepository, CategoryRepository categoryRepository, PartRepository partRepository, WarehouseRepository warehouseRepository, CarRepository carRepository, PartManufacturerRepository partManufacturerRepository, PriceService priceService) { 31 38 this.userService = userService; 39 this.partIsFromCategoryRepository = partIsFromCategoryRepository; 40 this.partIsAppropriateForCarRepository = partIsAppropriateForCarRepository; 32 41 this.warehousemanRepository = warehousemanRepository; 42 this.partIsInStockInWarehouseRepository = partIsInStockInWarehouseRepository; 33 43 this.deliverymanRepository = deliverymanRepository; 44 this.categoryRepository = categoryRepository; 45 this.partRepository = partRepository; 46 this.warehouseRepository = warehouseRepository; 47 this.carRepository = carRepository; 48 this.partManufacturerRepository = partManufacturerRepository; 49 this.priceService = priceService; 34 50 } 35 51 … … 66 82 } 67 83 } 84 @GetMapping("/addPart") 85 public String addPart(Model model){ 86 model.addAttribute("categories",categoryRepository.findAll()); 87 model.addAttribute("warehouses",warehouseRepository.findAll()); 88 model.addAttribute("cars",carRepository.findAll()); 89 model.addAttribute("manufacturers",partManufacturerRepository.findAll()); 90 model.addAttribute("bodyContent","addPart"); 91 return "master-template"; 92 } 93 @PostMapping("/addPart") 94 public void addPart(@RequestParam String name, @RequestParam(required = false) String description, 95 @RequestParam Integer manufacturer, @RequestParam List<Car> cars, 96 @RequestParam List<Category> categories, @RequestParam Integer warehouse, 97 @RequestParam Integer quantity, @RequestParam Integer amount, HttpServletResponse response){ 98 // Part(String name, String description, PartManufacturer manufacturer, List<Category> categoryList, List<Warehouse> warehouseList, List<Car> carList) { 99 Part newPart = new Part(name, description==null ? "" : description, partManufacturerRepository.findById(manufacturer).get(), 100 categories, List.of(warehouseRepository.findById(warehouse).get()),cars); 101 partRepository.save(newPart); 102 priceService.save(new Price(amount, LocalDate.now(),newPart)); 103 partIsInStockInWarehouseRepository.save(new PartIsInStockInWarehouse(newPart.getId(),warehouse,quantity)); 104 for (Category c:categories 105 ) { 106 partIsFromCategoryRepository.save(new PartIsFromCategory(newPart.getId(),c.getId())); 107 } 108 for (Car car:cars){ 109 partIsAppropriateForCarRepository.save(new PartIsAppropriateForCar(newPart.getId(),car.getId())); 110 } 111 try { 112 response.sendRedirect("/"); 113 } catch (IOException e) { 114 throw new RuntimeException(e); 115 } 116 } 68 117 } -
src/main/java/com/example/autopartz/controller/HomeController.java
r89865ae r4d67d70 6 6 import com.example.autopartz.model.manytomany.OrderContainsPart; 7 7 import com.example.autopartz.model.manytomany.PartIsInStockInWarehouse; 8 import com.example.autopartz.model.manytomany.PartIsInStockInWarehouseId; 8 9 import com.example.autopartz.model.views.DeliveriesInProgress; 9 10 import com.example.autopartz.model.views.PartsForCarTypeAndCategory; … … 42 43 private final MostPurchasedPartRepository mostPurchasedPartRepository; 43 44 private final PriceService priceService; 45 private final WarehousemanReportRepository warehousemanReportRepository; 46 private final PartRepository partRepository; 44 47 public HomeController(LoginService loginService, PartService partService, PartsForCarTypeAndCategoryRepository partsForCarTypeAndCategoryRepository, CarService carService, CategoryService categoryService, RepairShopReviewSummaryRepository repairShopReviewSummaryRepository, WarehouseRepository warehouseRepository, 45 OrderContainsPartRepository orderContainsPartRepository, OrderService orderService, UserService userService, DeliveriesInProgressRepository deliveriesInProgressRepository, DeliveryService deliveryService, PartIsInStockInWarehouseRepository partIsInStockInWarehouseRepository, CarCategoryReportRepository carCategoryReportRepository, PartManufacturersReportRepository partManufacturersReportRepository, MostPurchasedPartRepository mostPurchasedPartRepository, PriceService priceService ) {48 OrderContainsPartRepository orderContainsPartRepository, OrderService orderService, UserService userService, DeliveriesInProgressRepository deliveriesInProgressRepository, DeliveryService deliveryService, PartIsInStockInWarehouseRepository partIsInStockInWarehouseRepository, CarCategoryReportRepository carCategoryReportRepository, PartManufacturersReportRepository partManufacturersReportRepository, MostPurchasedPartRepository mostPurchasedPartRepository, PriceService priceService, WarehousemanReportRepository warehousemanReportRepository, PartRepository partRepository) { 46 49 this.loginService = loginService; 47 50 this.partService = partService; … … 61 64 this.mostPurchasedPartRepository = mostPurchasedPartRepository; 62 65 this.priceService = priceService; 66 this.warehousemanReportRepository = warehousemanReportRepository; 67 this.partRepository = partRepository; 63 68 } 64 69 … … 201 206 Warehouseman whm = (Warehouseman) userService.findByUsername(request.getRemoteUser()); 202 207 Warehouse warehouse = whm.getWarehouse(); 203 List<PartIsInStockInWarehouse> partIsInStockInWarehouseList = partIsInStockInWarehouseRepository.findAllByWarehouseid(warehouse.getI D_warehouse());208 List<PartIsInStockInWarehouse> partIsInStockInWarehouseList = partIsInStockInWarehouseRepository.findAllByWarehouseid(warehouse.getId()); 204 209 model.addAttribute("bodyContent","myWarehouse"); 205 210 model.addAttribute("warehouse",warehouse); … … 274 279 return "master-template"; 275 280 } 281 @GetMapping("/myWarehouseReport") 282 public String getMyWarehouseReport(Model model, HttpServletRequest request){ 283 Warehouseman whm = (Warehouseman) userService.findByUsername(request.getRemoteUser()); 284 Warehouse wh = whm.getWarehouse(); 285 Integer whId = wh.getId(); 286 model.addAttribute("data", warehousemanReportRepository.findByWid(whId)); 287 model.addAttribute("bodyContent","myWarehouseReport"); 288 return "master-template"; 289 } 290 @PostMapping("/myWarehouse/{pname}") 291 public void addPartToWarehouse(@PathVariable String pname,@RequestParam Integer quantity, HttpServletRequest request, HttpServletResponse response){ 292 Integer pId = partRepository.findAllByName(pname).stream().findFirst().get().getId(); 293 Warehouseman whm = (Warehouseman) userService.findByUsername(request.getRemoteUser()); 294 Warehouse wh = whm.getWarehouse(); 295 Integer whId = wh.getId(); 296 PartIsInStockInWarehouseId tmp = new PartIsInStockInWarehouseId(pId,whId); 297 PartIsInStockInWarehouse temp = partIsInStockInWarehouseRepository.findById(tmp).get(); 298 temp.setQuantity(temp.getQuantity()+quantity); 299 partIsInStockInWarehouseRepository.save(temp); 300 try { 301 response.sendRedirect("/myWarehouseReport"); 302 } catch (IOException e) { 303 throw new RuntimeException(e); 304 } 305 } 276 306 } -
src/main/java/com/example/autopartz/model/Category.java
r89865ae r4d67d70 17 17 public class Category { 18 18 @Id 19 Integer ID_category; 19 @Column(name = "id_category") 20 Integer id; 20 21 @Column(name = "category_name") 21 22 String cname; … … 29 30 if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; 30 31 Category category = (Category) o; 31 return ID_category != null && Objects.equals(ID_category, category.ID_category);32 return id != null && Objects.equals(id, category.id); 32 33 } 33 34 -
src/main/java/com/example/autopartz/model/Part.java
r89865ae r4d67d70 18 18 public class Part { 19 19 @Id 20 @GeneratedValue(strategy = GenerationType.IDENTITY) 20 21 @Column(name = "ID_part") 21 22 Integer id; … … 46 47 List<Car> carList; 47 48 49 public Part(String name, String description, PartManufacturer manufacturer, List<Category> categoryList, List<Warehouse> warehouseList, List<Car> carList) { 50 this.name = name; 51 this.description = description; 52 this.manufacturer = manufacturer; 53 this.categoryList = categoryList; 54 this.warehouseList = warehouseList; 55 this.carList = carList; 56 } 57 48 58 @Override 49 59 public boolean equals(Object o) { -
src/main/java/com/example/autopartz/model/PartManufacturer.java
r89865ae r4d67d70 21 21 public class PartManufacturer { 22 22 @Id 23 Integer ID_part_manufacturer; 23 @Column(name = "id_part_manufacturer") 24 Integer id; 24 25 @Column(name = "pm_name") 25 26 String name; … … 31 32 if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; 32 33 PartManufacturer that = (PartManufacturer) o; 33 return ID_part_manufacturer != null && Objects.equals(ID_part_manufacturer, that.ID_part_manufacturer);34 return id != null && Objects.equals(id, that.id); 34 35 } 35 36 -
src/main/java/com/example/autopartz/model/Price.java
r89865ae r4d67d70 7 7 import org.hibernate.Hibernate; 8 8 9 import javax.persistence.Entity; 10 import javax.persistence.Id; 11 import javax.persistence.JoinColumn; 12 import javax.persistence.ManyToOne; 9 import javax.persistence.*; 13 10 import java.time.LocalDate; 14 11 import java.util.Objects; … … 21 18 public class Price { 22 19 @Id 20 @GeneratedValue(strategy = GenerationType.IDENTITY) 23 21 Integer ID_price; 24 22 Integer amount; … … 28 26 @JoinColumn(name = "id_part") 29 27 Part part; 28 29 public Price(Integer amount, LocalDate price_from, Part part) { 30 this.amount = amount; 31 this.price_from = price_from; 32 this.part = part; 33 } 30 34 31 35 @Override -
src/main/java/com/example/autopartz/model/Warehouse.java
r89865ae r4d67d70 19 19 public class Warehouse { 20 20 @Id 21 Integer ID_warehouse; 21 @Column(name = "id_warehouse") 22 Integer id; 22 23 @Column(name = "warehouse_location") 23 24 String location; … … 28 29 if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false; 29 30 Warehouse warehouse = (Warehouse) o; 30 return ID_warehouse != null && Objects.equals(ID_warehouse, warehouse.ID_warehouse);31 return id != null && Objects.equals(id, warehouse.id); 31 32 } 32 33 -
src/main/java/com/example/autopartz/model/manytomany/PartIsInStockInWarehouse.java
r89865ae r4d67d70 1 1 package com.example.autopartz.model.manytomany; 2 2 3 import lombok.Getter; 4 import lombok.RequiredArgsConstructor; 5 import lombok.Setter; 6 import lombok.ToString; 3 import lombok.*; 7 4 8 5 import javax.persistence.*; … … 12 9 @Setter 13 10 @ToString 14 @ RequiredArgsConstructor11 @NoArgsConstructor 15 12 @Table(name = "`part_is_in_stock_in_warehouse`") 16 13 @IdClass(PartIsInStockInWarehouseId.class) … … 24 21 @Column(name = "quantity_warehouse") 25 22 Integer quantity; 23 24 public PartIsInStockInWarehouse(Integer partid, Integer warehouseid, Integer quantity) { 25 this.partid = partid; 26 this.warehouseid = warehouseid; 27 this.quantity = quantity; 28 } 26 29 } -
src/main/java/com/example/autopartz/model/manytomany/PartIsInStockInWarehouseId.java
r89865ae r4d67d70 9 9 Integer partid; 10 10 Integer warehouseid; 11 12 public PartIsInStockInWarehouseId(Integer pId, Integer whId) { 13 this.partid = pId; 14 this.warehouseid = whId; 15 } 16 17 public PartIsInStockInWarehouseId() { 18 } 11 19 } -
src/main/java/com/example/autopartz/repository/PartRepository.java
r89865ae r4d67d70 5 5 import org.springframework.stereotype.Repository; 6 6 7 import java.util.List; 8 7 9 @Repository 8 10 public interface PartRepository extends JpaRepository<Part,Integer> { 11 List<Part> findAllByName(String name); 9 12 } -
src/main/java/com/example/autopartz/repository/WarehouseRepository.java
r89865ae r4d67d70 8 8 public interface WarehouseRepository extends JpaRepository<Warehouse,Integer> { 9 9 List<Warehouse> findAllByLocation(String location); 10 List<Warehouse> findAllById(Integer id); 10 11 } -
src/main/java/com/example/autopartz/repository/WarehousemanRepository.java
r89865ae r4d67d70 1 1 package com.example.autopartz.repository; 2 2 3 import com.example.autopartz.model.Warehouse; 3 4 import com.example.autopartz.model.Warehouseman; 4 5 import org.springframework.data.jpa.repository.JpaRepository; 5 6 7 import java.util.List; 8 6 9 public interface WarehousemanRepository extends JpaRepository<Warehouseman,Integer> { 10 List<Warehouseman> findAllByWarehouse(Warehouse warehouse); 7 11 } -
src/main/java/com/example/autopartz/service/PriceService.java
r89865ae r4d67d70 8 8 public interface PriceService { 9 9 List<Price> findPriceForPart(Part part); 10 void save(Price p); 10 11 } -
src/main/java/com/example/autopartz/service/impl/PriceServiceImpl.java
r89865ae r4d67d70 22 22 return priceRepository.findAllByPart(part); 23 23 } 24 25 @Override 26 public void save(Price p) { 27 priceRepository.save(p); 28 } 24 29 } -
src/main/resources/templates/carCategoryReport.html
r89865ae r4d67d70 11 11 <tbody> 12 12 <tr th:each="d : ${data}"> 13 <td th:text="${d.getCname }"></td>13 <td th:text="${d.getCname()}"></td> 14 14 <td th:text="${d.getCmname()}"></td> 15 15 <td th:text="${d.getPartsordered()}"></td> -
src/main/resources/templates/fragments/header.html
r89865ae r4d67d70 40 40 </li> 41 41 </th:block> 42 <th:block sec:authorize="hasAuthority('ROLE_WAREHOUSEMAN')"> 43 <li class="nav-item m-auto"> 44 <a class="nav-link active" href="/myWarehouseReport">Информации за потреби</a> 45 </li> 46 </th:block> 42 47 <th:block sec:authorize="hasAuthority('ROLE_DELIVERYMAN')"> 43 48 <li class="nav-item m-auto"> … … 48 53 <li class="nav-item m-auto"> 49 54 <a class="nav-link active" href="/viewUsers">Корисници</a> 55 </li> 56 </th:block> 57 <th:block sec:authorize="hasAuthority('ROLE_ADMIN')"> 58 <li class="nav-item m-auto"> 59 <a class="nav-link active" href="/addPart">Додај дел во системот</a> 50 60 </li> 51 61 </th:block> -
src/main/resources/templates/myDeliveries.html
r89865ae r4d67d70 2 2 <h1 class="mt-3 mb-3">Мои достави</h1> 3 3 <form class="form-signin mt-xl-5" method="get" action="/myNextDeliveries"> 4 <button id="submit" class="btn btn-lg btn-primary btn-block w-50" type="submit">Мои следни нарачки</button>4 <button id="submit" class="btn btn-lg btn-primary btn-block w-50" type="submit">Мои следни достави</button> 5 5 </form> 6 6 <table class="table table-bordered mt-3"> -
src/main/resources/templates/myNextDeliveries.html
r89865ae r4d67d70 1 1 <div> 2 <h1 class="mb-3 mt-3">Мои следни нарачки</h1>2 <h1 class="mb-3 mt-3">Мои следни достави</h1> 3 3 <h1 th:if="${hasError}" th:text="${error}"></h1> 4 4 <div th:if="${!hasError}">
Note:
See TracChangeset
for help on using the changeset viewer.