HandleCardPendingCancellationJob.java
package uk.gov.dhsc.htbhf.claimant.scheduler;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import uk.gov.dhsc.htbhf.claimant.entity.Claim;
import uk.gov.dhsc.htbhf.claimant.message.MessageQueueClient;
import uk.gov.dhsc.htbhf.claimant.message.payload.MessagePayload;
import uk.gov.dhsc.htbhf.claimant.repository.ClaimRepository;
import javax.transaction.Transactional;
import static uk.gov.dhsc.htbhf.claimant.communications.EmailMessagePayloadFactory.buildEmailMessagePayloadWithFirstAndLastNameOnly;
import static uk.gov.dhsc.htbhf.claimant.entity.CardStatus.SCHEDULED_FOR_CANCELLATION;
import static uk.gov.dhsc.htbhf.claimant.message.MessageType.SEND_EMAIL;
import static uk.gov.dhsc.htbhf.claimant.message.payload.EmailType.CARD_IS_ABOUT_TO_BE_CANCELLED;
@Component
@AllArgsConstructor
@Slf4j
public class HandleCardPendingCancellationJob {
private MessageQueueClient messageQueueClient;
private final ClaimRepository claimRepository;
/**
* Notifies claimants that their card is soon to be cancelled and sets the claim's card status to SCHEDULED_FOR_CANCELLATION.
* @param claim the claim whose card is to be scheduled for cancellation
*/
@Transactional
public void handleCardPendingCancellation(Claim claim) {
MessagePayload messagePayload = buildEmailMessagePayloadWithFirstAndLastNameOnly(claim, CARD_IS_ABOUT_TO_BE_CANCELLED);
if (StringUtils.isNotEmpty(claim.getClaimant().getEmailAddress())) {
messageQueueClient.sendMessage(messagePayload, SEND_EMAIL);
}
claim.updateCardStatus(SCHEDULED_FOR_CANCELLATION);
claimRepository.save(claim);
}
}