DetermineEntitlementNotificationHandler.java

package uk.gov.dhsc.htbhf.claimant.communications;

import lombok.AllArgsConstructor;
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.EmailMessagePayload;
import uk.gov.dhsc.htbhf.claimant.message.payload.EmailType;
import uk.gov.dhsc.htbhf.claimant.message.payload.MessagePayload;

import java.util.Map;

import static uk.gov.dhsc.htbhf.claimant.communications.EmailMessagePayloadFactory.createEmailPersonalisationWithFirstAndLastNameOnly;
import static uk.gov.dhsc.htbhf.claimant.message.MessageType.SEND_EMAIL;

@Component
@AllArgsConstructor
public class DetermineEntitlementNotificationHandler {

    private final MessageQueueClient messageQueueClient;

    public void sendClaimNoLongerEligibleEmailIfPresent(Claim claim) {
        if (StringUtils.isNotEmpty(claim.getClaimant().getEmailAddress())) {
            MessagePayload messagePayload = buildClaimIsNoLongerEligibleNotificationEmailPayload(claim);
            messageQueueClient.sendMessage(messagePayload, SEND_EMAIL);
        }
    }

    public void sendNoChildrenOnFeedClaimNoLongerEligibleEmailIfPresent(Claim claim) {
        if (StringUtils.isNotEmpty(claim.getClaimant().getEmailAddress())) {
            MessagePayload messagePayload = buildNoChildrenOnFeedClaimIsNoLongerEligibleNotificationEmailPayload(claim);
            messageQueueClient.sendMessage(messagePayload, SEND_EMAIL);
        }
    }

    private EmailMessagePayload buildClaimIsNoLongerEligibleNotificationEmailPayload(Claim claim) {
        return buildNoLongerEligibleEmailPayload(claim, EmailType.CLAIM_NO_LONGER_ELIGIBLE);
    }

    private EmailMessagePayload buildNoChildrenOnFeedClaimIsNoLongerEligibleNotificationEmailPayload(Claim claim) {
        return buildNoLongerEligibleEmailPayload(claim, EmailType.NO_CHILD_ON_FEED_NO_LONGER_ELIGIBLE);
    }

    private EmailMessagePayload buildNoLongerEligibleEmailPayload(Claim claim, EmailType emailType) {
        Map<String, Object> emailPersonalisation = createEmailPersonalisationWithFirstAndLastNameOnly(claim.getClaimant());
        return EmailMessagePayload.builder()
                .claimId(claim.getId())
                .emailType(emailType)
                .emailPersonalisation(emailPersonalisation)
                .build();
    }
}