ReportClaimMessageProcessor.java

package uk.gov.dhsc.htbhf.claimant.message.processor;

import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import uk.gov.dhsc.htbhf.claimant.entity.Message;
import uk.gov.dhsc.htbhf.claimant.message.MessageStatus;
import uk.gov.dhsc.htbhf.claimant.message.MessageType;
import uk.gov.dhsc.htbhf.claimant.message.MessageTypeProcessor;
import uk.gov.dhsc.htbhf.claimant.message.context.MessageContextLoader;
import uk.gov.dhsc.htbhf.claimant.message.context.ReportClaimMessageContext;
import uk.gov.dhsc.htbhf.claimant.reporting.MIReporter;

/**
 * Responsible for reporting new and updated claims for MI reporting purposes.
 * Fetches location data for a claim if it doesn't already exist, then reports the claim.
 */
@Component
@AllArgsConstructor
public class ReportClaimMessageProcessor implements MessageTypeProcessor {

    private final MIReporter miReporter;
    private final MessageContextLoader messageContextLoader;

    @Override
    public MessageStatus processMessage(Message message) {
        ReportClaimMessageContext context = messageContextLoader.loadReportClaimMessageContext(message);
        miReporter.reportClaim(context);
        return MessageStatus.COMPLETED;
    }

    @Override
    public MessageType supportsMessageType() {
        return MessageType.REPORT_CLAIM;
    }
}