package com.airlock.iam.flow.domain.model.selection.condition;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.base.misc.log.LogUtil;
import com.airlock.iam.flow.api.domain.model.session.FlowSession;
import com.airlock.iam.flow.api.domain.model.step.FlowCondition;
import com.airlock.iam.flow.application.configuration.selection.condition.RedFlagConditionConfig;
import jakarta.inject.Inject;
import jakarta.inject.Provider;

@LogicForConfig(RedFlagConditionConfig.class)
public class RedFlagCondition implements FlowCondition {
   private final Provider<FlowSession> flowSession;
   private final RedFlagConditionConfig config;

   @Inject
   public RedFlagCondition(Provider<FlowSession> flowSession, RedFlagConditionConfig config) {
      this.flowSession = flowSession;
      this.config = config;
   }

   @Override
   public boolean isFulfilled() {
      return ((FlowSession)this.flowSession.get()).getRedFlags().contains(this.config.getRedFlag().toRedFlag());
   }

   @Override
   public String displayName() {
      return "Has Red Flag " + LogUtil.quote(this.config.getRedFlag().getName());
   }
}
