Skip to content

Commit

Permalink
Adding external API notification on travel alert
Browse files Browse the repository at this point in the history
  • Loading branch information
gabcamilo committed May 27, 2021
1 parent e3a7bd7 commit 10998e4
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
Expand All @@ -49,7 +52,7 @@ private void blockCreditCardInTheExternalApi(CreditCard creditCard) throws Feign
//TODO: make "proposta" a constant
creditCardApiClient.blockCreditCard(
creditCard.getNumber(),
new BlockRequestBody()
new CreditCardBlockExternalApiRequest()
);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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.*;
Expand All @@ -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
Expand All @@ -26,7 +25,7 @@ ResponseEntity<CreditCardTravelAlertResponse> 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));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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(
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);

}
Original file line number Diff line number Diff line change
@@ -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";
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
}

0 comments on commit 10998e4

Please sign in to comment.