diff --git a/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/block/CreditCardBlockService.java b/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/block/CreditCardBlockService.java index 5f86d749..8d50f25e 100644 --- a/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/block/CreditCardBlockService.java +++ b/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/block/CreditCardBlockService.java @@ -2,7 +2,7 @@ import br.com.zupacademy.gabriela.proposal.creditCard.CreditCard; import br.com.zupacademy.gabriela.proposal.creditCard.CreditCardService; -import br.com.zupacademy.gabriela.proposal.services.CreditCardService.BlockRequestBody; +import br.com.zupacademy.gabriela.proposal.services.CreditCardService.CreditCardBlockExternalApiRequest; import br.com.zupacademy.gabriela.proposal.services.CreditCardService.CreditCardApiClient; import br.com.zupacademy.gabriela.proposal.shared.enums.CreditCardStatusEnum; import feign.FeignException; @@ -27,7 +27,10 @@ public CreditCardBlockService(CreditCardBlockRepository creditCardBlockRepositor this.creditCardApiClient = creditCardApiClient; } - public CreditCard blockCreditCard(Long creditCardId, HttpServletRequest httpServletRequest) throws Exception { + public CreditCard blockCreditCard( + Long creditCardId, + HttpServletRequest httpServletRequest + ) throws Exception { CreditCard creditCard = creditCardService.obtainCreditCard(creditCardId); testCreditCardIsAlreadyBlocked(creditCard); @@ -49,7 +52,7 @@ private void blockCreditCardInTheExternalApi(CreditCard creditCard) throws Feign //TODO: make "proposta" a constant creditCardApiClient.blockCreditCard( creditCard.getNumber(), - new BlockRequestBody() + new CreditCardBlockExternalApiRequest() ); } diff --git a/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertController.java b/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertController.java index 0c8702db..00cd5ad8 100644 --- a/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertController.java +++ b/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertController.java @@ -1,7 +1,6 @@ package br.com.zupacademy.gabriela.proposal.creditCard.travelAlert; import br.com.zupacademy.gabriela.proposal.creditCard.CreditCard; -import br.com.zupacademy.gabriela.proposal.creditCard.CreditCardService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -12,11 +11,11 @@ @RequestMapping("/api/credit-cards/{creditCardId}/travel-alert") public class CreditCardTravelAlertController { - private final CreditCardTravelAlertService creditTravelAlertCardService; + private final CreditCardTravelAlertService creditCardTravelAlertService; @Autowired public CreditCardTravelAlertController(CreditCardTravelAlertService creditTravelAlertCardService) { - this.creditTravelAlertCardService = creditTravelAlertCardService; + this.creditCardTravelAlertService = creditTravelAlertCardService; } @PostMapping @@ -26,7 +25,7 @@ ResponseEntity createCreditCardTravelAlert ( HttpServletRequest httpServletRequest ) throws Exception { - CreditCard creditCard = creditTravelAlertCardService.createCreditCardTravelAlert(creditCardId, request, httpServletRequest); + CreditCard creditCard = creditCardTravelAlertService.createCreditCardTravelAlert(creditCardId, request, httpServletRequest); return ResponseEntity.ok(new CreditCardTravelAlertResponse(creditCard)); } } diff --git a/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertService.java b/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertService.java index f7d06542..a2d3be41 100644 --- a/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertService.java +++ b/src/main/java/br/com/zupacademy/gabriela/proposal/creditCard/travelAlert/CreditCardTravelAlertService.java @@ -2,6 +2,8 @@ import br.com.zupacademy.gabriela.proposal.creditCard.CreditCard; import br.com.zupacademy.gabriela.proposal.creditCard.CreditCardService; +import br.com.zupacademy.gabriela.proposal.services.CreditCardService.CreditCardApiClient; +import br.com.zupacademy.gabriela.proposal.services.CreditCardService.CreditCardTravelAlertExternalApiRequest; import javassist.NotFoundException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -13,11 +15,13 @@ public class CreditCardTravelAlertService { private final CreditCardTravelAlertRepository creditCardTravelAlertRepository; private final CreditCardService creditCardService; + protected final CreditCardApiClient creditCardApiClient; @Autowired - public CreditCardTravelAlertService(CreditCardTravelAlertRepository creditCardTravelAlertRepository, CreditCardService creditCardService) { + public CreditCardTravelAlertService(CreditCardTravelAlertRepository creditCardTravelAlertRepository, CreditCardService creditCardService, CreditCardApiClient creditCardApiClient) { this.creditCardTravelAlertRepository = creditCardTravelAlertRepository; this.creditCardService = creditCardService; + this.creditCardApiClient = creditCardApiClient; } public CreditCard createCreditCardTravelAlert( @@ -29,12 +33,24 @@ public CreditCard createCreditCardTravelAlert( CreditCard creditCard = creditCardService.obtainCreditCard(creditCardId); CreditCardTravelAlert creditCardTravelAlert = makeCreditCardTravelAlertFromRequest(request, httpServletRequest, creditCard); - + createCreditCardTravelAlertInTheExternalApi(creditCardTravelAlert, creditCard); creditCardTravelAlertRepository.save(creditCardTravelAlert); return creditCard; } + private void createCreditCardTravelAlertInTheExternalApi(CreditCardTravelAlert creditCardTravelAlert, CreditCard creditCard) { + + String creditCardNumber = creditCard.getNumber(); + CreditCardTravelAlertExternalApiRequest creditCardTravelAlertExternalApiRequest = + new CreditCardTravelAlertExternalApiRequest( + creditCardTravelAlert.getDestination(), + creditCardTravelAlert.getTravelEndDate() + ); + + creditCardApiClient.createCreditCardTravelAlert(creditCardNumber, creditCardTravelAlertExternalApiRequest); + } + private CreditCardTravelAlert makeCreditCardTravelAlertFromRequest( CreditCardTravelAlertRequest request, HttpServletRequest httpServletRequest, diff --git a/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardApiClient.java b/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardApiClient.java index 2f7e7bbc..e9a32722 100644 --- a/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardApiClient.java +++ b/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardApiClient.java @@ -10,6 +10,9 @@ public interface CreditCardApiClient { ObtainCreditCardResponse obtainCreditCard(@RequestParam("idProposta") Long idProposal); @PostMapping("/{id}/bloqueios") - void blockCreditCard(@PathVariable("id") String id, BlockRequestBody request); + void blockCreditCard(@PathVariable("id") String id, CreditCardBlockExternalApiRequest request); + + @PostMapping("/{id}/avisos") + void createCreditCardTravelAlert(@PathVariable("id") String id, CreditCardTravelAlertExternalApiRequest request); } diff --git a/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/BlockRequestBody.java b/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardBlockExternalApiRequest.java similarity index 72% rename from src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/BlockRequestBody.java rename to src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardBlockExternalApiRequest.java index e012163d..8a540eaa 100644 --- a/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/BlockRequestBody.java +++ b/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardBlockExternalApiRequest.java @@ -1,9 +1,9 @@ package br.com.zupacademy.gabriela.proposal.services.CreditCardService; -public class BlockRequestBody { +public class CreditCardBlockExternalApiRequest { private final String sistemaResponsavel; - public BlockRequestBody() { + public CreditCardBlockExternalApiRequest() { this.sistemaResponsavel = "proposta"; } diff --git a/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardTravelAlertExternalApiRequest.java b/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardTravelAlertExternalApiRequest.java new file mode 100644 index 00000000..cc404fa5 --- /dev/null +++ b/src/main/java/br/com/zupacademy/gabriela/proposal/services/CreditCardService/CreditCardTravelAlertExternalApiRequest.java @@ -0,0 +1,22 @@ +package br.com.zupacademy.gabriela.proposal.services.CreditCardService; + +import java.time.LocalDate; + +public class CreditCardTravelAlertExternalApiRequest { + + private String destino; + private LocalDate validoAte; + + public CreditCardTravelAlertExternalApiRequest(String destino, LocalDate validoAte) { + this.destino = destino; + this.validoAte = validoAte; + } + + public String getDestino() { + return destino; + } + + public LocalDate getValidoAte() { + return validoAte; + } +}