diff --git a/src/main/java/com/webtutsplus/ecommerce/controller/UserController.java b/src/main/java/com/webtutsplus/ecommerce/controller/UserController.java index 471ad27..9d4ee58 100644 --- a/src/main/java/com/webtutsplus/ecommerce/controller/UserController.java +++ b/src/main/java/com/webtutsplus/ecommerce/controller/UserController.java @@ -46,18 +46,4 @@ public ResponseDto Signup(@RequestBody SignupDto signupDto) throws CustomExcepti public SignInResponseDto Signup(@RequestBody SignInDto signInDto) throws CustomException { return userService.signIn(signInDto); } - -// @PostMapping("/updateUser") -// public ResponseDto updateUser(@RequestParam("token") String token, @RequestBody UserUpdateDto userUpdateDto) { -// authenticationService.authenticate(token); -// return userService.updateUser(token, userUpdateDto); -// } - - -// @PostMapping("/createUser") -// public ResponseDto updateUser(@RequestParam("token") String token, @RequestBody UserCreateDto userCreateDto) -// throws CustomException, AuthenticationFailException { -// authenticationService.authenticate(token); -// return userService.createUser(token, userCreateDto); -// } } diff --git a/src/main/java/com/webtutsplus/ecommerce/controller/WishListController.java b/src/main/java/com/webtutsplus/ecommerce/controller/WishListController.java index 910ffc6..fa0db1b 100644 --- a/src/main/java/com/webtutsplus/ecommerce/controller/WishListController.java +++ b/src/main/java/com/webtutsplus/ecommerce/controller/WishListController.java @@ -22,34 +22,56 @@ @RestController @RequestMapping("/wishlist") public class WishListController { + @Autowired + WishListService wishListService; + + @Autowired + AuthenticationService authenticationService; + + + // save product as wishlist item + @PostMapping("/add") + public ResponseEntity addToWishList(@RequestBody Product product, + @RequestParam("token") String token) { + // authenticate the token + authenticationService.authenticate(token); + + + // find the user + + User user = authenticationService.getUser(token); + + // save the item in wishlist + + WishList wishList = new WishList(user, product); + + wishListService.createWishlist(wishList); + + ApiResponse apiResponse = new ApiResponse(true, "Added to wishlist"); + return new ResponseEntity<>(apiResponse, HttpStatus.CREATED); + + } + + + // get all wishlist item for a user + + @GetMapping("/{token}") + public ResponseEntity> getWishList(@PathVariable("token") String token) { + + // authenticate the token + authenticationService.authenticate(token); + + + // find the user + + User user = authenticationService.getUser(token); + + List productDtos = wishListService.getWishListForUser(user); + + return new ResponseEntity<>(productDtos, HttpStatus.OK); + + } - @Autowired - private WishListService wishListService; - - @Autowired - private AuthenticationService authenticationService; - - @GetMapping("/{token}") - public ResponseEntity> getWishList(@PathVariable("token") String token) { - int user_id = authenticationService.getUser(token).getId(); - List body = wishListService.readWishList(user_id); - List products = new ArrayList(); - for (WishList wishList : body) { - products.add(ProductService.getDtoFromProduct(wishList.getProduct())); - } - - return new ResponseEntity>(products, HttpStatus.OK); - } - - @PostMapping("/add") - public ResponseEntity addWishList(@RequestBody Product product, @RequestParam("token") String token) { - authenticationService.authenticate(token); - User user = authenticationService.getUser(token); - WishList wishList = new WishList(user, product); - wishListService.createWishlist(wishList); - return new ResponseEntity(new ApiResponse(true, "Add to wishlist"), HttpStatus.CREATED); - - } } diff --git a/src/main/java/com/webtutsplus/ecommerce/model/User.java b/src/main/java/com/webtutsplus/ecommerce/model/User.java index 569e57e..acadddd 100644 --- a/src/main/java/com/webtutsplus/ecommerce/model/User.java +++ b/src/main/java/com/webtutsplus/ecommerce/model/User.java @@ -23,10 +23,6 @@ public class User { @Column(name = "email") private String email; - @Enumerated(EnumType.STRING) - @Column(name = "role") - private Role role; - @Column(name = "password") private String password; @@ -67,14 +63,6 @@ public void setEmail(String email) { this.email = email; } - public Role getRole() { - return role; - } - - public void setRole(Role role) { - this.role = role; - } - public String getPassword() { return password; } @@ -83,11 +71,10 @@ public void setPassword(String password) { this.password = password; } - public User(String firstName, String lastName, String email, Role role, String password) { + public User(String firstName, String lastName, String email, String password) { this.firstName = firstName; this.lastName = lastName; this.email = email; - this.role = role; this.password = password; } diff --git a/src/main/java/com/webtutsplus/ecommerce/repository/WishListRepository.java b/src/main/java/com/webtutsplus/ecommerce/repository/WishListRepository.java index 488c02e..f1bfbd6 100644 --- a/src/main/java/com/webtutsplus/ecommerce/repository/WishListRepository.java +++ b/src/main/java/com/webtutsplus/ecommerce/repository/WishListRepository.java @@ -1,6 +1,7 @@ package com.webtutsplus.ecommerce.repository; +import com.webtutsplus.ecommerce.model.User; import com.webtutsplus.ecommerce.model.WishList; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -10,7 +11,5 @@ @Repository public interface WishListRepository extends JpaRepository { - List findAllByUserIdOrderByCreatedDateDesc(Integer userId); - - + List findAllByUserOrderByCreatedDateDesc(User user); } diff --git a/src/main/java/com/webtutsplus/ecommerce/service/ProductService.java b/src/main/java/com/webtutsplus/ecommerce/service/ProductService.java index 111b55b..02f9e4b 100644 --- a/src/main/java/com/webtutsplus/ecommerce/service/ProductService.java +++ b/src/main/java/com/webtutsplus/ecommerce/service/ProductService.java @@ -32,6 +32,17 @@ public static ProductDto getDtoFromProduct(Product product) { return productDto; } + public ProductDto getProductDto(Product product) { + ProductDto productDto = new ProductDto(); + productDto.setDescription(product.getDescription()); + productDto.setImageURL(product.getImageURL()); + productDto.setName(product.getName()); + productDto.setCategoryId(product.getCategory().getId()); + productDto.setPrice(product.getPrice()); + productDto.setId(product.getId()); + return productDto; + } + public static Product getProductFromDto(ProductDto productDto, Category category) { Product product = new Product(productDto, category); return product; diff --git a/src/main/java/com/webtutsplus/ecommerce/service/UserService.java b/src/main/java/com/webtutsplus/ecommerce/service/UserService.java index 5b2173b..174e673 100644 --- a/src/main/java/com/webtutsplus/ecommerce/service/UserService.java +++ b/src/main/java/com/webtutsplus/ecommerce/service/UserService.java @@ -55,7 +55,7 @@ public ResponseDto signUp(SignupDto signupDto) throws CustomException { } - User user = new User(signupDto.getFirstName(), signupDto.getLastName(), signupDto.getEmail(), Role.user, encryptedPassword ); + User user = new User(signupDto.getFirstName(), signupDto.getLastName(), signupDto.getEmail(), encryptedPassword ); User createdUser; try { @@ -111,51 +111,4 @@ String hashPassword(String password) throws NoSuchAlgorithmException { return myHash; } - public ResponseDto createUser(String token, UserCreateDto userCreateDto) throws CustomException, AuthenticationFailException { - User creatingUser = authenticationService.getUser(token); - if (!canCrudUser(creatingUser.getRole())) { - // user can't create new user - throw new AuthenticationFailException(MessageStrings.USER_NOT_PERMITTED); - } - String encryptedPassword = userCreateDto.getPassword(); - try { - encryptedPassword = hashPassword(userCreateDto.getPassword()); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - logger.error("hashing password failed {}", e.getMessage()); - } - - User user = new User(userCreateDto.getFirstName(), userCreateDto.getLastName(), userCreateDto.getEmail(), userCreateDto.getRole(), encryptedPassword ); - User createdUser; - try { - createdUser = userRepository.save(user); - final AuthenticationToken authenticationToken = new AuthenticationToken(createdUser); - authenticationService.saveConfirmationToken(authenticationToken); - return new ResponseDto(ResponseStatus.success.toString(), USER_CREATED); - } catch (Exception e) { - // handle user creation fail error - throw new CustomException(e.getMessage()); - } - - } - - boolean canCrudUser(Role role) { - if (role == Role.admin || role == Role.manager) { - return true; - } - return false; - } - - boolean canCrudUser(User userUpdating, Integer userIdBeingUpdated) { - Role role = userUpdating.getRole(); - // admin and manager can crud any user - if (role == Role.admin || role == Role.manager) { - return true; - } - // user can update his own record, but not his role - if (role == Role.user && userUpdating.getId() == userIdBeingUpdated) { - return true; - } - return false; - } } diff --git a/src/main/java/com/webtutsplus/ecommerce/service/WishListService.java b/src/main/java/com/webtutsplus/ecommerce/service/WishListService.java index 9ba0d2a..ce40654 100644 --- a/src/main/java/com/webtutsplus/ecommerce/service/WishListService.java +++ b/src/main/java/com/webtutsplus/ecommerce/service/WishListService.java @@ -1,9 +1,14 @@ package com.webtutsplus.ecommerce.service; +import java.util.ArrayList; import java.util.List; import javax.transaction.Transactional; + +import com.webtutsplus.ecommerce.dto.product.ProductDto; +import com.webtutsplus.ecommerce.model.User; import com.webtutsplus.ecommerce.model.WishList; import com.webtutsplus.ecommerce.repository.WishListRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -13,6 +18,9 @@ public class WishListService { private final WishListRepository wishListRepository; + @Autowired + ProductService productService; + public WishListService(WishListRepository wishListRepository) { this.wishListRepository = wishListRepository; } @@ -21,7 +29,13 @@ public void createWishlist(WishList wishList) { wishListRepository.save(wishList); } - public List readWishList(Integer userId) { - return wishListRepository.findAllByUserIdOrderByCreatedDateDesc(userId); + public List getWishListForUser(User user) { + final List wishLists = wishListRepository.findAllByUserOrderByCreatedDateDesc(user); + List productDtos = new ArrayList<>(); + for (WishList wishList: wishLists) { + productDtos.add(productService.getProductDto(wishList.getProduct())); + } + + return productDtos; } }