Files
BackOffice.BFF/src/BackOffice.BFF.Application/ConfigurationCQ/Queries/GetAllConfigurations/GetAllConfigurationsQueryHandler.cs
T
masoodafar-web f234af49e0
Build and Deploy / build (push) Successful in 1m41s
feat: update protobuf versions and enhance club membership and commission queries
2025-12-20 03:16:36 +03:30

80 lines
2.6 KiB
C#

using CMSMicroservice.Protobuf.Protos.Configuration;
namespace BackOffice.BFF.Application.ConfigurationCQ.Queries.GetAllConfigurations;
public class GetAllConfigurationsQueryHandler : IRequestHandler<GetAllConfigurationsQuery, GetAllConfigurationsResponseDto>
{
private readonly IApplicationContractContext _context;
public GetAllConfigurationsQueryHandler(IApplicationContractContext context)
{
_context = context;
}
public async Task<GetAllConfigurationsResponseDto> 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 => "کمیسیون",
_ => "نامشخص"
};
}
}