package com.airlock.iam.oauth2.domain.service.acr;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.flow.api.domain.model.step.FlowCondition;
import com.airlock.iam.oauth2.application.configuration.OpenIdConnectFlowConditionToAcrMappingConfig;
import com.airlock.iam.oauth2.domain.model.acr.OpenIdConnectAcrValue;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import java.util.Optional;

@LogicForConfig(OpenIdConnectFlowConditionToAcrMappingConfig.class)
public final class OpenIdConnectFlowConditionAcr {
   private final Provider<FlowCondition> condition;
   private final OpenIdConnectFlowConditionToAcrMappingConfig config;

   @Inject
   public OpenIdConnectFlowConditionAcr(Provider<FlowCondition> condition, OpenIdConnectFlowConditionToAcrMappingConfig config) {
      this.condition = condition;
      this.config = config;
   }

   public Optional<OpenIdConnectAcrValue> acrOnConditionFulfilled() {
      return ((FlowCondition)this.condition.get()).isFulfilled() ? Optional.of(OpenIdConnectAcrValue.of(this.config.getAcrValue())) : Optional.empty();
   }
}
