using Mirea.Api.Dto.Common;
using System;

namespace Mirea.Api.Endpoint.Common.MapperDto;

public static class TwoFactorAuthenticationConverter
{
    public static TwoFactorAuthentication ConvertToDto(this Security.Common.Model.TwoFactorAuthenticator authenticator) =>
        authenticator switch
        {
            Security.Common.Model.TwoFactorAuthenticator.None => TwoFactorAuthentication.None,
            Security.Common.Model.TwoFactorAuthenticator.Totp => TwoFactorAuthentication.TotpRequired,
            _ => throw new ArgumentOutOfRangeException(nameof(authenticator), authenticator, null)
        };

    public static Security.Common.Model.TwoFactorAuthenticator ConvertFromDto(this TwoFactorAuthentication authentication) =>
        authentication switch
        {
            TwoFactorAuthentication.None => Security.Common.Model.TwoFactorAuthenticator.None,
            TwoFactorAuthentication.TotpRequired => Security.Common.Model.TwoFactorAuthenticator.Totp,
            _ => throw new ArgumentOutOfRangeException(nameof(authentication), authentication, null)
        };
}