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

import com.airlock.iam.flow.application.configuration.flow.FlowConfigHash;
import com.airlock.iam.flow.domain.model.session.InternalFlowSession;
import com.airlock.iam.flow.domain.service.FlowNotAllowedException;
import com.airlock.iam.flow.shared.api.domain.model.session.UserSessionStatus;
import com.airlock.iam.flow.shared.domain.model.session.FlowSessionImpl;
import com.airlock.iam.flow.shared.domain.model.session.MultiFlowCapableUserSession;
import com.airlock.iam.flow.shared.domain.service.FlowSessionUserSessionConnector;
import jakarta.inject.Inject;
import java.util.Set;

public final class TransactionApprovalFlowSessionUserSessionConnector implements FlowSessionUserSessionConnector {
   public InternalFlowSession createFlowSessionFromUserSession(FlowConfigHash flowConfigHash, MultiFlowCapableUserSession userSession) {
      if (!userSession.userId().isPresent() && userSession.getTags().isEmpty() && userSession.getStatus() == UserSessionStatus.ACTIVE) {
         return new FlowSessionImpl(flowConfigHash, Set.of());
      } else {
         throw new FlowNotAllowedException();
      }
   }

   public void finalizeFlowSessionToUserSession(InternalFlowSession flowSession, MultiFlowCapableUserSession userSession) {
   }
}
