diff --git a/button/src/main/java/com/button/model/entity/ProductList.java b/button/src/main/java/com/button/model/entity/ProductList.java index aaae8b7..96389e3 100644 --- a/button/src/main/java/com/button/model/entity/ProductList.java +++ b/button/src/main/java/com/button/model/entity/ProductList.java @@ -19,12 +19,15 @@ public class ProductList { @ManyToMany( fetch = FetchType.EAGER, cascade = CascadeType.PERSIST + ) + @JoinTable( name = "users_product_list", joinColumns = {@JoinColumn(name = "product_list_id")}, inverseJoinColumns = {@JoinColumn(name = "user_id")} ) + private Set users = new HashSet<>(); @OneToMany( diff --git a/button/src/main/java/com/button/model/entity/ProductProperty.java b/button/src/main/java/com/button/model/entity/ProductProperty.java index c432b24..a5719a3 100644 --- a/button/src/main/java/com/button/model/entity/ProductProperty.java +++ b/button/src/main/java/com/button/model/entity/ProductProperty.java @@ -19,11 +19,11 @@ public class ProductProperty { @JoinColumn(name = "product_list_id", referencedColumnName = "id") private ProductList productList; - private Float quantity; + private Float quantity = 1.0f; - private Boolean state; + private Boolean state = false; - private String units; + private String units = "шт"; public ProductProperty() {} diff --git a/button/src/main/java/com/button/web/controller/ListProductsPageController.java b/button/src/main/java/com/button/web/controller/ListProductsPageController.java index e42808b..3f155bb 100644 --- a/button/src/main/java/com/button/web/controller/ListProductsPageController.java +++ b/button/src/main/java/com/button/web/controller/ListProductsPageController.java @@ -42,17 +42,32 @@ public String addProductPage(Model model, @PathVariable("list_id") Integer listI public String addProductToList(@PathVariable("list_id") Integer listId, @ModelAttribute("new_product") Product newProduct) { - Product product = productRepository.findProductByName(newProduct.getName()); - if (product == null) { - product = productRepository.save(newProduct); - } + boolean isNewProductEqualsNothing = newProduct.getName() == null || newProduct.getName().trim().length() == 0; + + if ( ! isNewProductEqualsNothing) { + if (product == null) { + newProduct.setName(newProduct.getName().trim()); + product = productRepository.save(newProduct); + } - ProductProperty productProperty = new ProductProperty(); - productProperty.setProductId(product.getId()); - productProperty.setProductListId(listId); - productPropertyRepository.save(productProperty); + ProductProperty productProperty = new ProductProperty(); + productProperty.setProductId(product.getId()); + productProperty.setProductListId(listId); + //наличие продукта в ProductList увеличивает его количество на 1, копирует остальные данные + Iterable listProducts = productPropertyRepository.findProductsByProductListId(listId); + for (ProductProperty productProperty1: listProducts) { + if (productProperty1.getProduct().getId().intValue() == product.getId().intValue()) { + productProperty.setId(productProperty1.getId()); + productProperty.setQuantity(productProperty1.getQuantity()); + productProperty.setUnits(productProperty1.getUnits()); + productProperty.setState(false); + } + } + + productPropertyRepository.save(productProperty); + } return "redirect:/list_products/" + listId; } } diff --git a/button/src/main/java/com/button/web/controller/ProductListPageController.java b/button/src/main/java/com/button/web/controller/ProductListPageController.java index 4e1ce1d..4de9718 100644 --- a/button/src/main/java/com/button/web/controller/ProductListPageController.java +++ b/button/src/main/java/com/button/web/controller/ProductListPageController.java @@ -44,6 +44,7 @@ public String addNewProductList(@ModelAttribute("product_list") @Valid ProductLi @GetMapping("/delete/{id}") public String deleteProductListPage(@PathVariable Integer id) { + ProductList productList = productListRepository.findById(id).get(); Set users = productList.getUsers(); for (User user : users) { @@ -51,7 +52,6 @@ public String deleteProductListPage(@PathVariable Integer id) { } userRepository.saveAll(users); productListRepository.delete(productList); - return "redirect:/index"; }