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 IntegrationHttp IntegrationHttp { get; set; }
    }
    public class ConnectionStrings
    {
        public string MTWorkHRConnectionString { 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 class OTPSettings
    {
        public int Length { get; set; }
        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; }

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

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

    }

    public class IntegrationHttp
    {
        public Financial Financial { get; set; }
    }

    public class Financial
    {
        public string BaseUrl { get; set; }
        public bool IsIntegrated { get; set; }
        //public JournalVoucher JournalVoucher { get; set; }
        public Account Account { get; set; }
    }

    //public class JournalVoucher
    //{
    //    public string CreateAutoVoucher { get; set; }
    //    public string DeleteVoucher { get; set; }
    //    public string CreateExgratiaVoucher { get; set; }
    //    public string CreateLoungeVoucher { get; set; }
    //}

    public class Account
    {
        public string CreateAccount { get; set; }
        public string DeleteAccount { get; set; }
    }
}