using Microsoft.EntityFrameworkCore; using PnvPanel.Application.Common.Interfaces; using PnvPanel.Application.Common.Messaging; using PnvPanel.Application.Common.Models; using PnvPanel.Domain.Billing; namespace PnvPanel.Application.Admin.Billing; public sealed class GetBillingSettingsQueryHandler(IAppDbContext dbContext) : IQueryHandler> { public async Task> Handle( GetBillingSettingsQuery query, CancellationToken cancellationToken ) { var settings = await dbContext .BillingSettings.AsNoTracking() .FirstOrDefaultAsync(cancellationToken); // Ещё не сохранялось ни разу — отдаём дефолты, а не ошибку (см. PricingSettings). return Result.Success( settings is null ? new BillingSettingsDto(string.Empty, BillingSettings.DefaultGraceDays, false) : BillingSettingsDto.FromDomain(settings) ); } }