using CMSMicroservice.Protobuf.Protos.Configuration; namespace FrontOffice.BFF.Application.UserOrderCQ.Queries.GetVATRate; /// /// هندلر دریافت نرخ مالیات بر ارزش افزوده /// public class GetVATRateQueryHandler : IRequestHandler { private readonly IApplicationContractContext _context; public GetVATRateQueryHandler(IApplicationContractContext context) { _context = context; } public async Task Handle(GetVATRateQuery request, CancellationToken cancellationToken) { // Default values var response = new GetVATRateResponseDto { VatRate = 0.09, // 9% default VatPercentage = 9, IsEnabled = true }; try { // دریافت تنظیمات VAT از CMS // Scope: VAT = 4 var allConfigs = await _context.Configuration.GetAllConfigurationsAsync( new GetAllConfigurationsRequest { Filter = new GetAllConfigurationsFilter { Scope = 4, // VAT scope IsActive = true } }, cancellationToken: cancellationToken); if (allConfigs?.Models != null) { foreach (var config in allConfigs.Models) { if (config.Key == "Shop.VAT" && !string.IsNullOrEmpty(config.Value)) { if (double.TryParse(config.Value, out var rate)) { response.VatRate = rate; response.VatPercentage = (int)(rate * 100); } } else if (config.Key == "IsEnabled" && !string.IsNullOrEmpty(config.Value)) { response.IsEnabled = bool.TryParse(config.Value, out var enabled) && enabled; } } } } catch { // در صورت خطا، مقادیر پیش‌فرض برگردانده می‌شود } return response; } }