using Microsoft.AspNetCore.Http; using System.ComponentModel; using System.ComponentModel.DataAnnotations; namespace Application.Features.Config.Update; public sealed class Request { public int ID { get; init; } public BasicConfigDto Basic { get; init; } = new(); public ImagesConfigDto Images { get; init; } = new(); public MetaConfigDto Meta { get; init; } = new(); public CompanyConfigDto Company { get; init; } = new(); public AccountConfigDto Account { get; init; } = new(); public EmailTemplateConfigDto EmailTemplate { get; init; } = new(); public ExternalApiConfigDto External { get; init; } = new(); public PaymentConfigDto Payment { get; init; } = new(); public sealed class BasicConfigDto { [MaxLength(100)] [DisplayName("»çÀÌÆ® À̸§")] public string? SiteName { get; init; } [MaxLength(100)] [DataType(DataType.Url)] [DisplayName("»çÀÌÆ® ÁÖ¼Ò")] public string? SiteURL { get; init; } [DisplayName("ÃÖ°í °ü¸®ÀÚ ID")] public string? RootID { get; init; } [MaxLength(100)] [DataType(DataType.EmailAddress)] [DisplayName("¼Û¼ö½Å À̸ÞÀÏ")] public string? FromEmail { get; init; } [MaxLength(30)] [DisplayName("¼Û¼ö½ÅÀÚ À̸§")] public string? FromName { get; init; } [MaxLength(200)] [DisplayName("SMTP Server")] public string? SmtpServer { get; init; } [Range(1, 65535)] [DisplayName("SMTP Port")] public int? SmtpPort { get; set; } [DisplayName("SMTP Enable SSL")] public bool SmtpEnableSSL { get; init; } = false; [MaxLength(100)] [DisplayName("SMTP Username")] public string? SmtpUsername { get; init; } [MaxLength(200)] [DataType(DataType.Password)] [DisplayName("SMTP Password")] public string? SmtpPassword { get; init; } [MaxLength(200)] [DataType(DataType.MultilineText)] [DisplayName("°ü¸®ÀÚ´Ü Á¢±Ù °¡´É IP")] public string? AdminWhiteIPList { get; init; } [MaxLength(200)] [DataType(DataType.MultilineText)] [DisplayName("»ç¿ëÀÚ´Ü Á¢±Ù °¡´É IP")] public string? FrontWhiteIPList { get; init; } [MaxLength(200)] [DisplayName("Â÷´Ü ½Ã ¾È³»¹® Á¦¸ñ")] public string? BlockAlertTitle { get; init; } [MaxLength(5000)] [DataType(DataType.MultilineText)] [DisplayName("Â÷´Ü ½Ã ¾È³»¹® ³»¿ë")] public string? BlockAlertContent { get; init; } [DisplayName("Á¡°Ë ¿©ºÎ")] public bool IsMaintenance { get; init; } = false; [MaxLength(5000)] [DataType(DataType.MultilineText)] [DisplayName("Á¡°Ë ³»¿ë")] public string? MaintenanceContent { get; init; } } public sealed class ImagesConfigDto { // ====== DB¿¡ ÀúÀå/Ç¥½ÃÇÒ °æ·Î(¹®ÀÚ¿­) ====== [MaxLength(255)] [DisplayName("Favicon")] public string? FaviconPath { get; init; } [MaxLength(255)] [DisplayName("Logo-square")] public string? LogoSquarePath { get; init; } [MaxLength(255)] [DisplayName("Logo-horizontal")] public string? LogoHorizontalPath { get; init; } [MaxLength(255)] [DisplayName("og-default")] public string? OgDefaultPath { get; init; } [MaxLength(255)] [DisplayName("Twitter-image")] public string? TwitterImagePath { get; init; } [MaxLength(255)] [DisplayName("Apple-touch-icon")] public string? AppleTouchIconPath { get; init; } [MaxLength(255)] [DisplayName("App-icon-192")] public string? AppIcon192Path { get; init; } [MaxLength(255)] [DisplayName("App-icon-512")] public string? AppIcon512Path { get; init; } // ====== ¾÷·Îµå ÀÔ·Â(Æû ¹ÙÀεù¿ë) ====== [DataType(DataType.Upload)] [DisplayName("Favicon ¾÷·Îµå")] public IFormFile? FaviconFile { get; init; } [DataType(DataType.Upload)] [DisplayName("Logo-square ¾÷·Îµå")] public IFormFile? LogoSquareFile { get; init; } [DataType(DataType.Upload)] [DisplayName("Logo-horizontal ¾÷·Îµå")] public IFormFile? LogoHorizontalFile { get; init; } [DataType(DataType.Upload)] [DisplayName("og-default ¾÷·Îµå")] public IFormFile? OgDefaultFile { get; init; } [DataType(DataType.Upload)] [DisplayName("Twitter-image ¾÷·Îµå")] public IFormFile? TwitterImageFile { get; init; } [DataType(DataType.Upload)] [DisplayName("Apple-touch-icon ¾÷·Îµå")] public IFormFile? AppleTouchIconFile { get; init; } [DataType(DataType.Upload)] [DisplayName("App-icon-192 ¾÷·Îµå")] public IFormFile? AppIcon192File { get; init; } [DataType(DataType.Upload)] [DisplayName("App-icon-512 ¾÷·Îµå")] public IFormFile? AppIcon512File { get; init; } } public sealed class MetaConfigDto { [MaxLength(255)] [DisplayName("Meta Keywords")] public string? Keywords { get; init; } [MaxLength(255)] [DisplayName("Meta Description")] public string? Description { get; init; } [MaxLength(255)] [DisplayName("Meta Author")] public string? Author { get; init; } [MaxLength(255)] [DisplayName("Meta Viewport")] public string? Viewport { get; init; } [MaxLength(255)] [DisplayName("Meta ApplicationName")] public string? ApplicationName { get; init; } [MaxLength(255)] [DisplayName("Meta Generator")] public string? Generator { get; init; } [MaxLength(255)] [DisplayName("Meta Robots")] public string? Robots { get; init; } [MaxLength(3000)] [DataType(DataType.MultilineText)] [DisplayName("Meta Adds")] public string? Adds { get; init; } } public sealed class CompanyConfigDto { [MaxLength(70)] [DisplayName("»óÈ£ ¸í")] public string? Name { get; init; } [MaxLength(100)] [DisplayName("»ç¾÷ÀÚ µî·Ï ¹øÈ£")] public string? RegNo { get; init; } [MaxLength(255)] [DisplayName("»ç¾÷ÀÚ ¼ÒÀçÁö")] public string? Address { get; init; } [MaxLength(8)] [DataType(DataType.PostalCode)] [DisplayName("¿ìÆí¹øÈ£")] public string? ZipCode { get; init; } [MaxLength(50)] [DisplayName("´ëÇ¥ÀÚ ¸í")] public string? Owner { get; init; } [MaxLength(20)] [DisplayName("´ëÇ¥ ÀüÈ­¹øÈ£")] public string? Tel { get; init; } [MaxLength(20)] [DisplayName("FAX")] public string? Fax { get; init; } [MaxLength(20)] [DisplayName("Åë½ÅÆÇ¸Å¾÷ ½Å°í¹øÈ£")] public string? RetailSaleNo { get; init; } [MaxLength(20)] [DisplayName("ºÎ°¡Åë½Å »ç¾÷ÀÚ¹øÈ£")] public string? AddedSaleNo { get; init; } [MaxLength(100)] [DisplayName("È£½ºÆÃ ¼­ºñ½º")] public string? Hosting { get; init; } [MaxLength(70)] [DisplayName("Á¤º¸°ü¸®Ã¥ÀÓÀÚ")] public string? AdminName { get; init; } [MaxLength(100)] [DataType(DataType.EmailAddress)] [DisplayName("Á¤º¸°ü¸®Ã¥ÀÓÀÚ À̸ÞÀÏ")] public string? AdminEmail { get; init; } [MaxLength(200)] [DataType(DataType.Url)] [DisplayName("»çÀÌÆ® ÁÖ¼Ò")] public string? SiteUrl { get; init; } [MaxLength(10)] [DisplayName("ÀԱݰèÁ - ÀºÇà")] public string? BankCode { get; init; } [MaxLength(70)] [DisplayName("ÀԱݰèÁ - ¿¹±ÝÁÖ")] public string? BankOwner { get; init; } [MaxLength(100)] [DisplayName("ÀԱݰèÁ - °èÁ¹øÈ£")] public string? BankNumber { get; init; } } public sealed class AccountConfigDto { public bool IsRegisterBlock { get; init; } public bool IsRegisterEmailAuth { get; init; } public ushort? PasswordMinLength { get; init; } public ushort? PasswordUppercaseLength { get; init; } public ushort? PasswordNumbersLength { get; init; } public ushort? PasswordSpecialcharsLength { get; init; } public string? DeniedEmailList { get; init; } public string? DeniedNameList { get; init; } public ushort? ChangeEmailDay { get; init; } public ushort? ChangeNameDay { get; init; } public ushort? ChangeSummaryDay { get; init; } public ushort? ChangeIntroDay { get; init; } public ushort? ChangePasswordDay { get; init; } public ushort? MaxLoginTryCount { get; init; } public ushort? MaxLoginTryLimitSecond { get; init; } } public sealed class EmailTemplateConfigDto { public string? RegisterEmailFormTitle { get; init; } public string? RegisterEmailFormContent { get; init; } public string? RegistrationEmailFormTitle { get; init; } public string? RegistrationEmailFormContent { get; init; } public string? ResetPasswordEmailFormTitle { get; init; } public string? ResetPasswordEmailFormContent { get; init; } public string? ChangedPasswordEmailFormTitle { get; init; } public string? ChangedPasswordEmailFormContent { get; init; } public string? WithdrawEmailFormTitle { get; init; } public string? WithdrawEmailFormContent { get; init; } public string? EmailVerifyFormTitle { get; init; } public string? EmailVerifyFormContent { get; init; } public string? ChangedEmailFormTitle { get; init; } public string? ChangedEmailFormContent { get; init; } } public sealed class ExternalApiConfigDto { public string? YouTubeApiKeyEnc { get; init; } public string? YouTubeApiName { get; init; } public string? GoogleClientId { get; init; } public string? GoogleClientSecretEnc { get; init; } public string? GoogleAppId { get; init; } } public sealed class PaymentConfigDto { } public static Request From(Get.Response src) => new() { ID = src.ID, Basic = new BasicConfigDto { SiteName = src.Basic.SiteName, SiteURL = src.Basic.SiteURL, RootID = src.Basic.RootID, FromEmail = src.Basic.FromEmail, FromName = src.Basic.FromName, SmtpServer = src.Basic.SmtpServer, SmtpPort = src.Basic.SmtpPort, SmtpEnableSSL = src.Basic.SmtpEnableSSL, SmtpUsername = src.Basic.SmtpUsername, SmtpPassword = src.Basic.SmtpPassword, AdminWhiteIPList = src.Basic.AdminWhiteIPList, FrontWhiteIPList = src.Basic.FrontWhiteIPList, BlockAlertTitle = src.Basic.BlockAlertTitle, BlockAlertContent = src.Basic.BlockAlertContent, IsMaintenance = src.Basic.IsMaintenance, MaintenanceContent = src.Basic.MaintenanceContent }, Images = new ImagesConfigDto { FaviconPath = src.Images.FaviconPath, LogoSquarePath = src.Images.LogoSquarePath, LogoHorizontalPath = src.Images.LogoHorizontalPath, OgDefaultPath = src.Images.OgDefaultPath, TwitterImagePath = src.Images.TwitterImagePath, AppleTouchIconPath = src.Images.AppleTouchIconPath, AppIcon192Path = src.Images.AppIcon192Path, AppIcon512Path = src.Images.AppIcon512Path }, Meta = new MetaConfigDto { Keywords = src.Meta.Keywords, Description = src.Meta.Description, Author = src.Meta.Author, Viewport = src.Meta.Viewport, ApplicationName = src.Meta.ApplicationName, Generator = src.Meta.Generator, Robots = src.Meta.Robots, Adds = src.Meta.Adds }, Company = new CompanyConfigDto { Name = src.Company.Name, RegNo = src.Company.RegNo, Address = src.Company.Address, ZipCode = src.Company.ZipCode, Owner = src.Company.Owner, Tel = src.Company.Tel, Fax = src.Company.Fax, RetailSaleNo = src.Company.RetailSaleNo, AddedSaleNo = src.Company.AddedSaleNo, Hosting = src.Company.Hosting, AdminName = src.Company.AdminName, AdminEmail = src.Company.AdminEmail, SiteUrl = src.Company.SiteUrl, BankCode = src.Company.BankCode, BankOwner = src.Company.BankOwner, BankNumber = src.Company.BankNumber }, Account = new AccountConfigDto { IsRegisterBlock = src.Account.IsRegisterBlock, IsRegisterEmailAuth = src.Account.IsRegisterEmailAuth, PasswordMinLength = src.Account.PasswordMinLength, PasswordUppercaseLength = src.Account.PasswordUppercaseLength, PasswordNumbersLength = src.Account.PasswordNumbersLength, PasswordSpecialcharsLength = src.Account.PasswordSpecialcharsLength, DeniedEmailList = src.Account.DeniedEmailList, DeniedNameList = src.Account.DeniedNameList, ChangeEmailDay = src.Account.ChangeEmailDay, ChangeNameDay = src.Account.ChangeNameDay, ChangeSummaryDay = src.Account.ChangeSummaryDay, ChangeIntroDay = src.Account.ChangeIntroDay, ChangePasswordDay = src.Account.ChangePasswordDay, MaxLoginTryCount = src.Account.MaxLoginTryCount, MaxLoginTryLimitSecond = src.Account.MaxLoginTryLimitSecond }, EmailTemplate = new EmailTemplateConfigDto { RegisterEmailFormTitle = src.EmailTemplate.RegisterEmailFormTitle, RegisterEmailFormContent = src.EmailTemplate.RegisterEmailFormContent, RegistrationEmailFormTitle = src.EmailTemplate.RegistrationEmailFormTitle, RegistrationEmailFormContent = src.EmailTemplate.RegistrationEmailFormContent, ResetPasswordEmailFormTitle = src.EmailTemplate.ResetPasswordEmailFormTitle, ResetPasswordEmailFormContent = src.EmailTemplate.ResetPasswordEmailFormContent, ChangedPasswordEmailFormTitle = src.EmailTemplate.ChangedPasswordEmailFormTitle, ChangedPasswordEmailFormContent = src.EmailTemplate.ChangedPasswordEmailFormContent, WithdrawEmailFormTitle = src.EmailTemplate.WithdrawEmailFormTitle, WithdrawEmailFormContent = src.EmailTemplate.WithdrawEmailFormContent, EmailVerifyFormTitle = src.EmailTemplate.EmailVerifyFormTitle, EmailVerifyFormContent = src.EmailTemplate.EmailVerifyFormContent, ChangedEmailFormTitle = src.EmailTemplate.ChangedEmailFormTitle, ChangedEmailFormContent = src.EmailTemplate.ChangedEmailFormContent }, External = new ExternalApiConfigDto { YouTubeApiKeyEnc = src.External.YouTubeApiKeyEnc, YouTubeApiName = src.External.YouTubeApiName, GoogleClientId = src.External.GoogleClientId, GoogleClientSecretEnc = src.External.GoogleClientSecretEnc, GoogleAppId = src.External.GoogleAppId }, Payment = new PaymentConfigDto() }; }