package com.airlock.iam.transactionapproval.application.service;

import com.airlock.iam.flow.api.domain.model.flow.FlowResult;
import com.airlock.iam.flow.domain.model.flow.FlowProvider;
import com.airlock.iam.transactionapproval.domain.model.parameter.TransactionApprovalParameterStep;
import jakarta.inject.Inject;
import java.util.Map;
import java.util.Optional;

public final class TransactionApprovalParameterHandler {
   private final FlowProvider flow;

   @Inject
   public TransactionApprovalParameterHandler(FlowProvider flow) {
      this.flow = flow;
   }

   public FlowResult validateAndConsume(Map<String, String> messageParameters, Optional<String> authTokenId) {
      return this.flow.getCurrentOrStartNew().execute(step -> step.validateAndConsume(messageParameters, authTokenId), TransactionApprovalParameterStep.class);
   }
}
