using CMSMicroservice.Protobuf.Protos.Configuration; namespace BackOffice.BFF.Application.ConfigurationCQ.Queries.GetAllConfigurations; public class GetAllConfigurationsQueryHandler : IRequestHandler { private readonly IApplicationContractContext _context; public GetAllConfigurationsQueryHandler(IApplicationContractContext context) { _context = context; } public async Task Handle(GetAllConfigurationsQuery request, CancellationToken cancellationToken) { var grpcRequest = new GetAllConfigurationsRequest { PaginationState = new CMSMicroservice.Protobuf.Protos.PaginationState { PageNumber = request.PageIndex, PageSize = request.PageSize } }; if (request.Scope.HasValue || request.IsActive.HasValue) { grpcRequest.Filter = new GetAllConfigurationsFilter(); if (request.Scope.HasValue) { grpcRequest.Filter.Scope = request.Scope.Value; } if (request.IsActive.HasValue) { grpcRequest.Filter.IsActive = request.IsActive.Value; } } var response = await _context.Configurations.GetAllConfigurationsAsync(grpcRequest, cancellationToken: cancellationToken); var result = new GetAllConfigurationsResponseDto { MetaData = new MetaDataDto { TotalCount = (int)(response.MetaData?.TotalCount ?? 0), PageSize = (int)(response.MetaData?.PageSize ?? request.PageSize), CurrentPage = (int)(response.MetaData?.CurrentPage ?? request.PageIndex), TotalPages = (int)(response.MetaData?.TotalPage ?? 0) }, Models = response.Models.Select(m => new ConfigurationDto { Id = m.Id, Key = m.Key, Value = m.Value, Description = m.Description, Scope = m.Scope, ScopeDisplay = GetScopeDisplay(m.Scope), IsActive = m.IsActive, Created = m.Created?.ToDateTime() ?? DateTime.UtcNow }).ToList() }; return result; } private string GetScopeDisplay(int scope) { return scope switch { 0 => "سیستم", 1 => "شبکه", 2 => "باشگاه", 3 => "کمیسیون", _ => "نامشخص" }; } }