using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MTWorkHR.Core.Global
{
    public class AppSettingsConfiguration
    {
        public ConnectionStrings ConnectionStrings { get; set; }
        public JwtSettings JwtSettings { get; set; }
        public AttachmentSettings AttachmentSettings { get; set; }
        public EnvironmentSettings EnvironmentSettings { get; set; }
        public EmailSettings MailSettings { get; set; }
        public OTPSettings OTPSettings { get; set; }
        public CaptchaSettings CaptchaSettings { get; set; }
        public LoginSettings LoginSettings { get; set; }
        public MatchMoveSettings MatchMoveSettings { get; set; }

    }
    public class ConnectionStrings
    {
        public string MTWorkHRConnectionString { get; set; }
        public string LocalConnectionString { get; set; }
        public string BlobConnectionString { get; set; }
        

    }
    public class AttachmentSettings
    {
        public string TempAttachment { get; set; }
        public string ActualAttachment { get; set; }
    }
    public class EnvironmentSettings
    {
        public bool EnableSwagger { get; set; }
    }
    public class JwtSettings
    {
        public string Audience { get; set; }
        public string Issuer { get; set; }
        public string SecretKey { get; set; }
        public int DurationInMinutes { get; set; }
    }
    public class EmailSettings
    {
        public string ApiKey { get; set; }
        public string FromAddress { get; set; }
        public string FromName { get; set; }
        public string Password { get; set; }
        public string Host { get; set; }
        public string TemplatePath { get; set; }
        public int Port { get; set; }
        public string SmtpUsername { get; set; }
    }


    public class OTPSettings
    {
        public int Length { get; set; } = 4;
        public int ExpirePeriodInMinutes { get; set; }
        public string MessageSubject { get; set; }
        public string MessageBody { get; set; }
        public bool SendEmail { get; set; }
        public bool SendSMS { get; set; }
        public bool AllowZeros { get; set; } = true;

    }
    public class CaptchaSettings
    {
        public int Length { get; set; }
        public int ExpirePeriodInSeconds { get; set; }

    }
    public class MatchMoveSettings
    {
        public string BaseUrl { get; set; }
        public string ClientId { get; set; }
        public string ClientSecret { get; set; }
        public string GrantType { get; set; }

    }
    public class LoginSettings
    {
        public int MaxFailedAccessAttempts { get; set; }
        public int DefaultLockoutTimeSpanInDays { get; set; }

    }

    
}
