diff --git a/src/main/java/sg/com/smartinventory/controllers/CustomerController.java b/src/main/java/sg/com/smartinventory/controllers/CustomerController.java index 3de76c3..9339dc7 100644 --- a/src/main/java/sg/com/smartinventory/controllers/CustomerController.java +++ b/src/main/java/sg/com/smartinventory/controllers/CustomerController.java @@ -2,6 +2,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +// import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -10,6 +11,7 @@ import jakarta.validation.Valid; import sg.com.smartinventory.entities.Customer; +// import sg.com.smartinventory.entities.Review; import sg.com.smartinventory.services.CustomerService; @RestController @@ -32,4 +34,12 @@ public ResponseEntity createCustomer(@Valid @RequestBody Customer cust Customer newCustomer = customerService.createCustomer(customer); return new ResponseEntity<>(newCustomer, HttpStatus.CREATED); } + + // // Nested route - Add review to customer. + // @PostMapping("/{id}/reviews") + // public ResponseEntity addReviewToCustomer(@PathVariable Long id, + // @Valid @RequestBody Review review) { + // Review newReview = customerService.addReviewToCustomer(id, review); + // return new ResponseEntity<>(newReview, HttpStatus.CREATED); + // } } \ No newline at end of file diff --git a/src/main/java/sg/com/smartinventory/controllers/ReviewController.java b/src/main/java/sg/com/smartinventory/controllers/ReviewController.java index 11d627f..2681a6a 100644 --- a/src/main/java/sg/com/smartinventory/controllers/ReviewController.java +++ b/src/main/java/sg/com/smartinventory/controllers/ReviewController.java @@ -1,8 +1,14 @@ package sg.com.smartinventory.controllers; +import java.util.ArrayList; + import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -31,4 +37,32 @@ public ResponseEntity createReview(@Valid @RequestBody Review review) { Review newReview = reviewService.createReview(review); return new ResponseEntity<>(newReview, HttpStatus.CREATED); } + + // READ (GET ALL). + @GetMapping("") + public ResponseEntity> getAllReviews() { + ArrayList allReviews = reviewService.getAllReviews(); + return new ResponseEntity<>(allReviews, HttpStatus.OK); + } + + // READ (GET ONE). + @GetMapping("/{id}") + public ResponseEntity getReview(@PathVariable long id) { + Review foundReview = reviewService.getReview(id); + return new ResponseEntity<>(foundReview, HttpStatus.OK); + } + + // UPDATE. + @PutMapping("/{id}") + public ResponseEntity updateReview(@PathVariable long id, @RequestBody Review review) { + Review updatedReview = reviewService.updateReview(id, review); + return new ResponseEntity<>(updatedReview, HttpStatus.OK); + } + + // DELETE. + @DeleteMapping("/{id}") + public ResponseEntity deleteReview(@PathVariable long id) { + reviewService.deleteReview(id); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } } \ No newline at end of file diff --git a/src/main/java/sg/com/smartinventory/serviceImpls/CustomerServiceImpl.java b/src/main/java/sg/com/smartinventory/serviceImpls/CustomerServiceImpl.java index 70170a3..7ff203e 100644 --- a/src/main/java/sg/com/smartinventory/serviceImpls/CustomerServiceImpl.java +++ b/src/main/java/sg/com/smartinventory/serviceImpls/CustomerServiceImpl.java @@ -3,6 +3,8 @@ import org.springframework.stereotype.Service; import sg.com.smartinventory.entities.Customer; +// import sg.com.smartinventory.entities.Review; +// import sg.com.smartinventory.exceptions.CustomerNotFoundException; import sg.com.smartinventory.repositories.CustomerRepository; import sg.com.smartinventory.services.CustomerService; @@ -21,4 +23,19 @@ public Customer createCustomer(Customer customer) { return newCustomer; } + + // @Override + // public Review addReviewToCustomer(long customerId, long productId, Review + // review) { + // // retrieve the customer from the database. + // Customer selectedCustomer = + // customerRepository.findById(customerId).orElseThrow(() -> new + // CustomerNotFoundException(customerId)); + + // // add the customer to the review + // review.setCustomer(selectedCustomer); + + // // save the review to the database + // return reviewRepository.save(review); + // } } \ No newline at end of file diff --git a/src/main/java/sg/com/smartinventory/serviceImpls/ReviewServiceImpl.java b/src/main/java/sg/com/smartinventory/serviceImpls/ReviewServiceImpl.java index d623ccc..29addfb 100644 --- a/src/main/java/sg/com/smartinventory/serviceImpls/ReviewServiceImpl.java +++ b/src/main/java/sg/com/smartinventory/serviceImpls/ReviewServiceImpl.java @@ -1,8 +1,12 @@ package sg.com.smartinventory.serviceImpls; +import java.util.ArrayList; +import java.util.List; + import org.springframework.stereotype.Service; import sg.com.smartinventory.entities.Review; +// import sg.com.smartinventory.exceptions.ReviewNotFoundException; import sg.com.smartinventory.repositories.ReviewRepository; import sg.com.smartinventory.services.ReviewService; @@ -21,4 +25,58 @@ public Review createReview(Review review) { return newReview; } + + @Override + public Review getReview(long id) { + // Optional optionalReview = reviewRepository.findById(id); + // if(optionalReview.isPresent()) { + // Review foundReview = optionalReview.get(); + // return foundReview; + // } + // throw new ReviewNotFoundException(id); + // return reviewRepository.findById(id).orElseThrow(() -> new + // ReviewNotFoundException(id)); + return reviewRepository.findById(id).get(0); + } + + @Override + public ArrayList getAllReviews() { + List allReviews = reviewRepository.findAll(); + return (ArrayList) allReviews; + } + + @Override + public Review updateReview(long id, Review review) { + // Retrieve the review from the database. + // Review reviewToUpdate = reviewRepository.findById(id).orElseThrow(() -> new + // ReviewNotFoundException(id)); + Review reviewToUpdate = reviewRepository.findById(id).get(0); + + // Update the review retrieved from the database. + reviewToUpdate.setCategory(review.getCategory()); + reviewToUpdate.setReviewContent(review.getReviewContent()); + reviewToUpdate.setRating(review.getRating()); + reviewToUpdate.setCustomerId(review.getCustomerId()); + reviewToUpdate.setProductId(review.getProductId()); + + // Save the updated review back to the database. + return reviewRepository.save(reviewToUpdate); + } + + @Override + public void deleteReview(long id) { + reviewRepository.deleteById(id); + } + + @Override + public ArrayList searchCustomerReviews(long customerId) { + List foundReviews = reviewRepository.findByCustomerId(customerId); + return (ArrayList) foundReviews; + } + + @Override + public ArrayList searchProductReviews(long productId) { + List foundReviews = reviewRepository.findByProductId(productId); + return (ArrayList) foundReviews; + } } \ No newline at end of file diff --git a/src/main/java/sg/com/smartinventory/services/CustomerService.java b/src/main/java/sg/com/smartinventory/services/CustomerService.java index d621136..c8d6e2a 100644 --- a/src/main/java/sg/com/smartinventory/services/CustomerService.java +++ b/src/main/java/sg/com/smartinventory/services/CustomerService.java @@ -1,7 +1,10 @@ package sg.com.smartinventory.services; import sg.com.smartinventory.entities.Customer; +// import sg.com.smartinventory.entities.Review; public interface CustomerService { Customer createCustomer(Customer customer); + + // Review addReviewToCustomer(long customerId, long productId, Review review); } \ No newline at end of file diff --git a/src/main/java/sg/com/smartinventory/services/ReviewService.java b/src/main/java/sg/com/smartinventory/services/ReviewService.java index ccb4c12..de37da9 100644 --- a/src/main/java/sg/com/smartinventory/services/ReviewService.java +++ b/src/main/java/sg/com/smartinventory/services/ReviewService.java @@ -1,7 +1,21 @@ package sg.com.smartinventory.services; +import java.util.ArrayList; + import sg.com.smartinventory.entities.Review; public interface ReviewService { Review createReview(Review review); + + Review getReview(long id); + + ArrayList getAllReviews(); + + Review updateReview(long id, Review review); + + void deleteReview(long id); + + ArrayList searchCustomerReviews(long customerId); + + ArrayList searchProductReviews(long productId); } \ No newline at end of file