ReportPaymentMessageProcessor.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.ReportPaymentMessageContext;
import uk.gov.dhsc.htbhf.claimant.reporting.MIReporter;

/**
 * Responsible for reporting payments for MI reporting purposes.
 */
@Component
@AllArgsConstructor
public class ReportPaymentMessageProcessor implements MessageTypeProcessor {

    private final MIReporter miReporter;
    private final MessageContextLoader messageContextLoader;

    @Override
    public MessageStatus processMessage(Message message) {
        ReportPaymentMessageContext context = messageContextLoader.loadReportPaymentMessageContext(message);
        miReporter.reportPayment(context);
        return MessageStatus.COMPLETED;
    }

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