package com.airlock.iam.flow.shared.infrastructure.mapper;

import com.airlock.iam.base.api.domain.model.validation.ValidationResult;
import com.airlock.iam.common.api.domain.model.password.PasswordPolicyViolation;
import com.airlock.iam.common.application.service.password.PasswordPolicyValidator;
import com.airlock.iam.flow.api.domain.model.flow.FlowResult;
import com.airlock.iam.flow.shared.domain.model.password.PasswordPolicyViolationsData;
import java.util.List;

public final class PasswordPolicyViolationDataMapper {
   private PasswordPolicyViolationDataMapper() {
   }

   public static ValidationResult validatePasswordPolicy(FlowResult result, String fieldName) {
      if (result.data().isPresent() && result.data().get() instanceof PasswordPolicyViolationsData) {
         List<PasswordPolicyViolation> violations = result.data(PasswordPolicyViolationsData.class).get().getViolations();
         return PasswordPolicyValidator.getValidationResultForViolations(violations, fieldName);
      } else {
         return ValidationResult.valid();
      }
   }
}
