package com.airlock.iam.oauth2.domain.model.codegrant;

import com.airlock.iam.base.misc.log.LogUtil;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Arrays;

public enum PromptValue {
   NONE("none", true),
   LOGIN("login", true),
   CONSENT("consent", true),
   SELECT_ACCOUNT("select_account", true),
   CREATE("select_account", false);

   private final String paramValue;
   private final boolean supported;

   PromptValue(String value, boolean supported) {
      this.paramValue = value;
      this.supported = supported;
   }

   public static PromptValue fromString(String promptValue) {
      return Arrays.stream(values())
         .filter(v -> v.getParamValue().equals(promptValue))
         .findFirst()
         .orElseThrow(() -> new IllegalArgumentException("Unknown PromptValue: " + LogUtil.logSafeString(promptValue)));
   }

   public static boolean isSupported(String value) {
      return Arrays.stream(values()).anyMatch(v -> v.getParamValue().equals(value) && v.isSupported());
   }

   @SuppressFBWarnings(justification = "generated code")
   public String getParamValue() {
      return this.paramValue;
   }

   @SuppressFBWarnings(justification = "generated code")
   public boolean isSupported() {
      return this.supported;
   }
}
