From 998cb34ae9fc2b67745ca33e84d14f38b0408e70 Mon Sep 17 00:00:00 2001 From: Mario Diaz Date: Wed, 24 Jan 2024 20:32:04 +0100 Subject: [PATCH 1/2] ADDED: Adding getbyid and getbyclientid methods --- .../operador/controller/LoansController.java | 22 +++++++ .../operador/service/LoanService.java | 60 ++++++++++++------- 2 files changed, 61 insertions(+), 21 deletions(-) diff --git a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java index c7aad4c..993ba2b 100644 --- a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java +++ b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java @@ -64,4 +64,26 @@ public ResponseEntity addLoan(@RequestBody LoanRequest loanRequest return ResponseEntity.internalServerError().build(); } } + + @GetMapping("/loans/{id}") + public ResponseEntity getLoanById(Long id) { + try { + LoanResponse response = service.getLoanById(id); + return ResponseEntity.ok(response); + } + catch(Exception e) { + return ResponseEntity.internalServerError().build(); + } + } + + @GetMapping("/loans/client/{clientId}") + public ResponseEntity> getLoanByClientId(Long clientId) { + try { + List response = service.getLoansByClientId(clientId); + return ResponseEntity.ok(Objects.requireNonNullElse(response, Collections.emptyList())); + } + catch(Exception e) { + return ResponseEntity.internalServerError().build(); + } + } } diff --git a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java index a45fa90..5afd898 100644 --- a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java +++ b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java @@ -42,26 +42,7 @@ public List getAllLoans(Long bookId, Long clientId, Date loanDate, else loanList = loanRepository.findAll(); - List loansResponse = new ArrayList<>(); - - if(loanList != null) { - for(Loan loan : loanList) { - LoanResponse loanResponse = LoanResponse.builder() - - .bookId(loan.getBookId()) - .clientId(loan.getClientId()) - .loanDate(loan.getLoanDate()) - .dueDate(loan.getDueDate()) - .returnDate(loan.getReturnDate()) - .isReturned(loan.getIsReturned()) - .renewalCount(loan.getRenewalCount()) - .build(); - - loansResponse.add(loanResponse); - } - } - - return loansResponse.isEmpty() ? null : loansResponse; + return getLoanResponses(loanList); } catch(Exception e) { throw new RuntimeException("Database failed: " + e.getMessage()); @@ -109,12 +90,49 @@ public LoanResponse createLoan(LoanRequest request) throws RuntimeException { @Override public LoanResponse getLoanById(Long id) throws RuntimeException { + Loan loan = loanRepository.findById(id); + if(loan != null) { + return LoanResponse.builder() + .id(loan.getId()) + .bookId(loan.getBookId()) + .clientId(loan.getClientId()) + .loanDate(loan.getLoanDate()) + .dueDate(loan.getDueDate()) + .returnDate(loan.getReturnDate()) + .isReturned(loan.getIsReturned()) + .renewalCount(loan.getRenewalCount()) + .build(); + } return null; } @Override public List getLoansByClientId(Long clientId) throws RuntimeException { - return null; + List loansList = loanRepository.findByClientId(clientId); + return getLoanResponses(loansList); + } + + private List getLoanResponses(List loansList) { + List loansResponse = new ArrayList<>(); + + if(loansList != null) { + for(Loan loan : loansList) { + LoanResponse loanResponse = LoanResponse.builder() + .id(loan.getId()) + .bookId(loan.getBookId()) + .clientId(loan.getClientId()) + .loanDate(loan.getLoanDate()) + .dueDate(loan.getDueDate()) + .returnDate(loan.getReturnDate()) + .isReturned(loan.getIsReturned()) + .renewalCount(loan.getRenewalCount()) + .build(); + + loansResponse.add(loanResponse); + } + } + + return loansResponse.isEmpty() ? null : loansResponse; } @Override From 5f372f63669efb7a19edec5f9d1a451e0e40d316 Mon Sep 17 00:00:00 2001 From: Mario Diaz Date: Wed, 24 Jan 2024 21:13:30 +0100 Subject: [PATCH 2/2] ADDED: Adding getbyid and getbyclientid methods --- .../operador/controller/LoansController.java | 4 +- .../operador/service/LoanService.java | 102 +++++++++++++----- 2 files changed, 77 insertions(+), 29 deletions(-) diff --git a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java index 993ba2b..8c76078 100644 --- a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java +++ b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/controller/LoansController.java @@ -7,7 +7,6 @@ import net.unir.missi.desarrollowebfullstack.bookabook.operador.model.api.LoanResponse; import net.unir.missi.desarrollowebfullstack.bookabook.operador.service.LoanService; -import org.apache.http.protocol.ResponseServer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -53,6 +52,9 @@ public ResponseEntity> getAllLoans( public ResponseEntity addLoan(@RequestBody LoanRequest loanRequest) { try { if(loanRequest != null) { + if(!service.validateLoan(loanRequest)) { + return ResponseEntity.notFound().build(); + } LoanResponse newLoan = service.createLoan(loanRequest); return ResponseEntity.status(HttpStatus.CREATED).body(newLoan); } diff --git a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java index 5afd898..1fdd484 100644 --- a/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java +++ b/src/main/java/net/unir/missi/desarrollowebfullstack/bookabook/operador/service/LoanService.java @@ -1,16 +1,22 @@ package net.unir.missi.desarrollowebfullstack.bookabook.operador.service; import lombok.extern.slf4j.Slf4j; +import net.unir.missi.desarrollowebfullstack.bookabook.operador.clients.BuscadorClient; +import net.unir.missi.desarrollowebfullstack.bookabook.operador.model.api.BookResponse; +import net.unir.missi.desarrollowebfullstack.bookabook.operador.model.api.ClientResponse; import net.unir.missi.desarrollowebfullstack.bookabook.operador.model.api.LoanRequest; import net.unir.missi.desarrollowebfullstack.bookabook.operador.model.api.LoanResponse; import net.unir.missi.desarrollowebfullstack.bookabook.operador.model.sql.Loan; import net.unir.missi.desarrollowebfullstack.bookabook.operador.repository.LoanRepository; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import java.awt.print.Book; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.logging.Logger; @Service @Slf4j @@ -26,6 +32,9 @@ public class LoanService implements ILoanService { @Autowired private LoanRepository loanRepository; + + @Autowired + private BuscadorClient buscadorClient; @Override public List getAllLoans(Long bookId, Long clientId, Date loanDate, Date returnDate, Date dueDate, Boolean isReturned, Integer renewalCount) throws RuntimeException { @@ -58,34 +67,38 @@ public LoanResponse createLoan(LoanRequest request) throws RuntimeException { && request.getDueDate() != null && request.getReturnDate() != null && request.getIsReturned() != null - && request.getRenewalCount() != null - - ) { - Loan newLoan = Loan.builder() - .bookId(request.getBookId()) - .clientId(request.getClientId()) - .loanDate(request.getLoanDate()) - .dueDate(request.getDueDate()) - .returnDate(request.getReturnDate()) - .isReturned(request.getIsReturned()) - .renewalCount(request.getRenewalCount()) - .build(); - - Loan createdLoan = loanRepository.save(newLoan); - - return LoanResponse.builder() - .id(createdLoan.getId()) - .bookId(createdLoan.getBookId()) - .clientId(createdLoan.getClientId()) - .loanDate(createdLoan.getLoanDate()) - .returnDate(createdLoan.getReturnDate()) - .dueDate(createdLoan.getDueDate()) - .isReturned(createdLoan.getIsReturned()) - .renewalCount(createdLoan.getRenewalCount()).build(); - - } - - return null; + && request.getRenewalCount() != null) { + + boolean bookExists = validateBookExists(request.getBookId().toString()); + + if(!bookExists) { + return null; + } + + Loan newLoan = Loan.builder() + .bookId(request.getBookId()) + .clientId(request.getClientId()) + .loanDate(request.getLoanDate()) + .dueDate(request.getDueDate()) + .returnDate(request.getReturnDate()) + .isReturned(request.getIsReturned()) + .renewalCount(request.getRenewalCount()) + .build(); + + Loan createdLoan = loanRepository.save(newLoan); + + return LoanResponse.builder() + .id(createdLoan.getId()) + .bookId(createdLoan.getBookId()) + .clientId(createdLoan.getClientId()) + .loanDate(createdLoan.getLoanDate()) + .returnDate(createdLoan.getReturnDate()) + .dueDate(createdLoan.getDueDate()) + .isReturned(createdLoan.getIsReturned()) + .renewalCount(createdLoan.getRenewalCount()).build(); + + } + return null; } @Override @@ -135,6 +148,39 @@ private List getLoanResponses(List loansList) { return loansResponse.isEmpty() ? null : loansResponse; } + private boolean validateBookExists(String id) { + try { + ResponseEntity book = buscadorClient.getBook(id); + return true; + } + catch(Exception e) { + Logger.getGlobal().warning(e.getStackTrace().toString()); + return false; + } + } + + private boolean validateClientExists(String id) { + try { + ResponseEntity client = buscadorClient.getClient(id); + return true; + } + catch(Exception e) { + Logger.getGlobal().warning(e.getStackTrace().toString()); + return false; + } + } + public boolean validateLoan(LoanRequest request) { + try { + validateClientExists(request.getClientId().toString()); + validateBookExists(request.getBookId().toString()); + return true; + } + catch(Exception e) { + Logger.getGlobal().warning(e.getMessage().toString()); + return false; + } + } + @Override public LoanResponse modifyAllLoanData(LoanRequest preData, LoanRequest loanData) throws RuntimeException { return null;