57 public ResponseEntity<List<Loan>>
getAllLoans(@RequestParam(
"token") String token) {
58 User user = userService.getUserByToken(token);
59 if (user ==
null || user.getAdmin()==
false) {
60 return new ResponseEntity<>(
new ArrayList<>(),HttpStatus.UNAUTHORIZED);
62 return new ResponseEntity<>(loanService.getAllLoans(),HttpStatus.OK);
73 public ResponseEntity<Loan> getLoanById(@PathVariable Long
id, @RequestParam("token") String token) {
74 User user = userService.getUserByToken(token);
77 user.getId() != loanService.getLoanById(
id).get().getLender() &&
78 user.getId() != loanService.getLoanById(
id).get().getBorrower())) {
79 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
82 Optional<Loan> loanOpt = loanService.getLoanById(
id);
83 if (loanOpt.isEmpty()) {
84 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
86 Loan loan = loanOpt.get();
87 return new ResponseEntity<>(loan, HttpStatus.OK);
98 public ResponseEntity<List<Loan>> getLoansByLender() {
99 User user = getAuthenticatedUser();
101 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
104 List<Loan> loans = loanService.getLoansByLender(user.getId());
105 return new ResponseEntity<>(loans, HttpStatus.OK);
107 }
catch (RuntimeException e) {
108 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
120 public ResponseEntity<List<Loan>> getLoansByBorrower() {
122 User user = getAuthenticatedUser();
124 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
127 List<Loan> loans = loanService.getLoansByBorrower(user.getId());
128 return new ResponseEntity<>(loans, HttpStatus.OK);
138 public ResponseEntity<String> createLoan(@RequestBody LoanRecord loanRecord) {
139 User user = getAuthenticatedUser();
141 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
144 Loan loanEntity = convertToLoan(loanRecord);
145 loanEntity.setBorrower(user.getId());
147 loanService.createLoan(loanEntity);
148 }
catch (RuntimeException e) {
149 return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
152 return new ResponseEntity<>(HttpStatus.CREATED);
165 public ResponseEntity<String> updateLoan(@PathVariable Long
id, @RequestBody LoanRecord loan, @RequestHeader("Authorization") String authHeader) {
166 if (authHeader ==
null || !authHeader.startsWith(
"Bearer ")) {
167 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
170 String token = authHeader.substring(7);
172 User user = userService.getUserByToken(token);
173 Loan existingLoan = loanService.getLoanById(
id).get();
174 if (user ==
null || user.getId()!=existingLoan.getLender() && user.getId()!=existingLoan.getBorrower() && user.getAdmin()==
false) {
175 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
179 existingLoan.setLender(loan.lender()==
null ? existingLoan.getLender() : loan.lender());
180 existingLoan.setBorrower(loan.borrower()==
null ? existingLoan.getBorrower() : loan.borrower());
181 existingLoan.setItem(loan.item()==
null ? existingLoan.getItem() : loan.item());
182 existingLoan.setLoanDate(loan.loanDate()==
null ? existingLoan.getLoanDate() : Date.valueOf(loan.loanDate()));
183 existingLoan.setEstimatedReturnDate(loan.estimatedReturnDate()==
null ? existingLoan.getEstimatedReturnDate() : Date.valueOf(loan.estimatedReturnDate()));
184 existingLoan.setRealReturnDate(loan.realReturnDate()==
null ? existingLoan.getRealReturnDate() : Date.valueOf(loan.realReturnDate()));
185 existingLoan.setLoanStatus(loan.loanStatus()==
null ? existingLoan.getLoanStatus() : Loan.Status.valueOf(loan.loanStatus()));
186 existingLoan.setRating(loan.rating()==
null ? existingLoan.getRating() : Double.valueOf(loan.rating()));
187 existingLoan.setObservations(loan.observations()==
null ? existingLoan.getObservations() : loan.observations());
188 loanService.saveLoan(existingLoan);
189 return new ResponseEntity<>(HttpStatus.OK);
190 }
catch (RuntimeException e) {
191 return new ResponseEntity<>(e.getMessage(),HttpStatus.NOT_FOUND);
202 public ResponseEntity<Void> returnLoan(@PathVariable Long itemId) {
203 User user = getAuthenticatedUser();
205 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
208 boolean updated = loanService.returnLoan(itemId, user.getId());
210 return new ResponseEntity<>(HttpStatus.OK);
212 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
214 }
catch (Exception e) {
215 return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
228 public ResponseEntity<String> deleteLoan(@PathVariable Long
id, @RequestParam("token") String token) {
229 User user = userService.getUserByToken(token);
230 if (user ==
null || user.getId()!=loanService.getLoanById(
id).get().getLender() && user.getId()!=loanService.getLoanById(
id).get().getBorrower() && user.getAdmin()==
false) {
231 return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
234 loanService.deleteLoan(
id);
235 return new ResponseEntity<>(HttpStatus.OK);
236 }
catch (RuntimeException e) {
237 return new ResponseEntity<>(HttpStatus.NOT_FOUND);