package com.airlock.iam.factor.domain.model.airlock2fa;

import java.util.EnumSet;
import java.util.Set;

public enum Airlock2FADeviceCapability {
   ONE_TOUCH,
   TOTP,
   QR_CODE;

   public boolean isRequiredForFactor(Airlock2FAFactor factor) {
      return requiredCapabilitiesForFactor(factor).contains(this);
   }

   public static Set<Airlock2FADeviceCapability> requiredCapabilitiesForFactor(Airlock2FAFactor factor) {
      return EnumSet.of(requiredCapabilityForFactor(factor));
   }

   public static Airlock2FADeviceCapability requiredCapabilityForFactor(Airlock2FAFactor factor) {
      return switch (factor) {
         case ONE_TOUCH -> ONE_TOUCH;
         case PASSCODE -> TOTP;
         case ONLINE_QR_CODE, OFFLINE_QR_CODE, MOBILE_ONLY, USERNAMELESS_QR_CODE -> QR_CODE;
      };
   }
}
