package com.airlock.iam.flow.shared.domain.model.item;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.base.api.domain.model.validation.Validator;
import com.airlock.iam.flow.shared.api.domain.model.item.info.UserDataItemInfo;
import com.airlock.iam.flow.shared.api.domain.model.item.info.UserDataItemInfoFactory;
import com.airlock.iam.flow.shared.application.configuration.item.BooleanContextDataItemDefinitionConfig;
import jakarta.annotation.Nonnull;
import jakarta.inject.Inject;
import java.util.List;
import java.util.Optional;

@LogicForConfig(BooleanContextDataItemDefinitionConfig.class)
public class BooleanContextDataItemDefinition extends ContextDataItemDefinitionBase<Boolean> {
   @Inject
   public BooleanContextDataItemDefinition(BooleanContextDataItemDefinitionConfig config, List<Validator<Boolean>> validators) {
      super(config, validators);
   }

   @Override
   protected Optional<Boolean> convertInternal(@Nonnull Object value) {
      return value instanceof Boolean ? Optional.of((Boolean)value) : Optional.empty();
   }

   @Override
   public UserDataItemInfo<Boolean> getItemInfo(Optional<Boolean> currentValue) {
      return UserDataItemInfoFactory.createBooleanUserDataItemInfo(this.getFieldName(), currentValue, this.isRequired(), this.getAllValidationInfos());
   }
}
