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

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.flow.api.domain.model.step.FlowCondition;
import com.airlock.iam.flow.application.configuration.selection.condition.LogicalNotFlowConditionConfig;
import jakarta.inject.Inject;

@LogicForConfig(LogicalNotFlowConditionConfig.class)
public class LogicalNotFlowCondition implements FlowCondition {
   private final FlowCondition innerCondition;

   @Inject
   public LogicalNotFlowCondition(FlowCondition innerCondition) {
      this.innerCondition = innerCondition;
   }

   @Override
   public boolean isFulfilled() {
      return !this.innerCondition.isFulfilled();
   }

   @Override
   public String displayName() {
      return "NOT(" + this.innerCondition.displayName() + ")";
   }
}
