Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.

Commit

Permalink
Merge pull request #2 from UNIR-WG/feature/loans_api
Browse files Browse the repository at this point in the history
ADDED: Adding Loan Controller, create and getall methods
  • Loading branch information
devmariodiaz authored Jan 24, 2024
2 parents 6be1e13 + 4846fdf commit dc3ee71
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package net.unir.missi.desarrollowebfullstack.bookabook.operador.controller;

import io.swagger.v3.oas.annotations.Parameter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.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;
import org.springframework.web.bind.annotation.*;

import java.util.*;

@RestController
@RequiredArgsConstructor
@Slf4j
public class LoansController {
@Autowired
private final LoanService service;

@GetMapping("/loans")
public ResponseEntity<List<LoanResponse>> getAllLoans(
@Parameter(name="bookId", example = "")
@RequestParam(required = false) Long bookId,
@Parameter(name="clientId", example = "")
@RequestParam(required = false) Long clientId,
@Parameter(name="loanDate", example = "")
@RequestParam(required = false)Date loanDate,
@Parameter(name="returnDate", example = "")
@RequestParam(required = false)Date returnDate,
@Parameter(name="dueDate", example = "")
@RequestParam(required = false)Date dueDate,
@Parameter(name="isReturned", example = "")
@RequestParam(required = false)Boolean isReturned,
@Parameter(name="renewalCount", example = "")
@RequestParam(required = false)Integer renewalCount
) {

try {
List<LoanResponse> response = service.getAllLoans(bookId, clientId, loanDate, returnDate, dueDate, isReturned, renewalCount);
return ResponseEntity.ok(Objects.requireNonNullElse(response, Collections.emptyList()));
}
catch(Exception e) {
return ResponseEntity.internalServerError().build();
}
}

@PostMapping("/loans")
public ResponseEntity<LoanResponse> addLoan(@RequestBody LoanRequest loanRequest) {
try {
if(loanRequest != null) {
LoanResponse newLoan = service.createLoan(loanRequest);
return ResponseEntity.status(HttpStatus.CREATED).body(newLoan);
}
else
{
return ResponseEntity.badRequest().build();
}
} catch(Exception e) {
return ResponseEntity.internalServerError().build();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package net.unir.missi.desarrollowebfullstack.bookabook.operador.model.sql;


import lombok.*;
import java.util.Date;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,40 @@ public List<LoanResponse> getAllLoans(Long bookId, Long clientId, Date loanDate,

@Override
public LoanResponse createLoan(LoanRequest request) throws RuntimeException {
if(request != null
&& request.getBookId() != 0
&& request.getClientId() != 0
&& request.getLoanDate() != null
&& 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;
}

Expand Down

0 comments on commit dc3ee71

Please sign in to comment.