using Application.Abstractions.Data; using MediatR; using Microsoft.EntityFrameworkCore; namespace Application.Features.Config.Queries; public sealed class GetConfigQueryHandler(IAppDbContext db) : IRequestHandler { public async Task Handle(GetConfigQuery request, CancellationToken cancellationToken) { var config = await db.Config.AsNoTracking().OrderByDescending(x => x.ID).FirstOrDefaultAsync(cancellationToken); if (config is null) { return null; } return new ConfigDto { ID = config.ID, Basic = new ConfigDto.BasicConfigDto { SiteName = config.Basic.SiteName, DefaultFeeAmount = config.Basic.DefaultFeeAmount, DefaultFeeRate = config.Basic.DefaultFeeRate }, Meta = new ConfigDto.MetaConfigDto { Keywords = config.Meta.Keywords, Description = config.Meta.Description, Author = config.Meta.Author, Viewport = config.Meta.Viewport, ApplicationName = config.Meta.ApplicationName, Generator = config.Meta.Generator, Robots = config.Meta.Robots, Adds = config.Meta.Adds }, Company = new ConfigDto.CompanyConfigDto { Name = config.Company.Name, RegNo = config.Company.RegNo, Owner = config.Company.Owner, Tel = config.Company.Tel, Fax = config.Company.Fax, RetailSaleNo = config.Company.RetailSaleNo, AddedSaleNo = config.Company.AddedSaleNo, ZipCode = config.Company.ZipCode, Hosting = config.Company.Hosting, AdminName = config.Company.AdminName, AdminEmail = config.Company.AdminEmail, SiteUrl = config.Company.SiteUrl, BankCode = config.Company.BankCode, BankOwner = config.Company.BankOwner, BankNumber = config.Company.BankNumber }, Account = new ConfigDto.AccountConfigDto { IsRegisterBlock = config.Account.IsRegisterBlock, IsRegisterEmailAuth = config.Account.IsRegisterEmailAuth, PasswordMinLength = config.Account.PasswordMinLength, PasswordUppercaseLength = config.Account.PasswordUppercaseLength, PasswordNumbersLength = config.Account.PasswordNumbersLength, PasswordSpecialcharsLength = config.Account.PasswordSpecialcharsLength, DeniedEmailList = config.Account.DeniedEmailList, DeniedNameList = config.Account.DeniedNameList, ChangeEmailDay = config.Account.ChangeEmailDay, ChangeNameDay = config.Account.ChangeNameDay, ChangeSummaryDay = config.Account.ChangeSummaryDay, ChangeIntroDay = config.Account.ChangeIntroDay, ChangePasswordDay = config.Account.ChangePasswordDay, MaxLoginTryCount = config.Account.MaxLoginTryCount, MaxLoginTryLimitSecond = config.Account.MaxLoginTryLimitSecond }, EmailTemplate = new ConfigDto.EmailTemplateConfigDto { RegisterEmailFormTitle = config.EmailTemplate.RegisterEmailFormTitle, RegisterEmailFormContent = config.EmailTemplate.RegisterEmailFormContent, RegistrationEmailFormTitle = config.EmailTemplate.RegistrationEmailFormTitle, RegistrationEmailFormContent = config.EmailTemplate.RegistrationEmailFormContent, ResetPasswordEmailFormTitle = config.EmailTemplate.ResetPasswordEmailFormTitle, ResetPasswordEmailFormContent = config.EmailTemplate.ResetPasswordEmailFormContent, ChangedPasswordEmailFormTitle = config.EmailTemplate.ChangedPasswordEmailFormTitle, ChangedPasswordEmailFormContent = config.EmailTemplate.ChangedPasswordEmailFormContent, WithdrawEmailFormTitle = config.EmailTemplate.WithdrawEmailFormTitle, WithdrawEmailFormContent = config.EmailTemplate.WithdrawEmailFormContent, EmailVerifyFormTitle = config.EmailTemplate.EmailVerifyFormTitle, EmailVerifyFormContent = config.EmailTemplate.EmailVerifyFormContent, ChangedEmailFormTitle = config.EmailTemplate.ChangedEmailFormTitle, ChangedEmailFormContent = config.EmailTemplate.ChangedEmailFormContent }, External = new ConfigDto.ExternalApiConfigDto { YouTubeApiKeyEnc = config.External.YouTubeApiKeyEnc, YouTubeApiName = config.External.YouTubeApiName, GoogleClientId = config.External.GoogleClientId, GoogleClientSecretEnc = config.External.GoogleClientSecretEnc, GoogleAppId = config.External.GoogleAppId }, Payment = new ConfigDto.PaymentConfigDto { } }; } }