package com.airlock.iam.flow.shared.application.configuration.fido;

import com.airlock.iam.base.api.domain.model.validation.ValidationResult;
import com.airlock.iam.base.domain.service.validation.ValidationErrorFactory;

public final class FidoDisplayNameValidation {
   private static final String DISPLAY_NAME_FIELD = "displayName";

   public static Boolean isValid(String toValidate) {
      return doValidation(toValidate).isValid();
   }

   public static ValidationResult validate(String toValidate) {
      return doValidation(toValidate);
   }

   private static ValidationResult doValidation(String displayName) {
      if (displayName == null) {
         return ValidationResult.invalid(ValidationErrorFactory.fieldRequiredError("displayName"));
      } else if (displayName.length() > 100) {
         return ValidationResult.invalid(ValidationErrorFactory.maxLengthError("displayName", 100, displayName.length()));
      } else if (displayName.isEmpty()) {
         return ValidationResult.invalid(ValidationErrorFactory.minLengthError("displayName", 1, 0));
      } else {
         return displayName.isBlank() ? ValidationResult.invalid(ValidationErrorFactory.invalidValueError("displayName")) : ValidationResult.valid();
      }
   }
}
