f6fa070067
Implemented complete CQRS pattern for System Configuration management:
Commands:
- SetConfigurationValueCommand: Create or update configurations with history tracking
- DeactivateConfigurationCommand: Deactivate configurations with audit trail
Queries:
- GetConfigurationByKeyQuery: Retrieve configuration by Scope and Key
- GetAllConfigurationsQuery: List all configurations with filters and pagination
- GetConfigurationHistoryQuery: View complete audit history for any configuration
Features:
- All commands include FluentValidation validators
- History recording to SystemConfigurationHistory table
- Pagination support for list queries
- DTOs for clean data transfer
- Null-safe implementations
Updated:
- IApplicationDbContext: Added 11 new DbSets for network-club entities
- GlobalUsings: Added new entity namespaces
Build Status: ✅ Success (0 errors, 184 warnings in legacy code)
51 lines
1.8 KiB
C#
51 lines
1.8 KiB
C#
namespace CMSMicroservice.Application.ConfigurationCQ.Queries.GetAllConfigurations;
|
|
|
|
public class GetAllConfigurationsQueryHandler : IRequestHandler<GetAllConfigurationsQuery, GetAllConfigurationsResponseDto>
|
|
{
|
|
private readonly IApplicationDbContext _context;
|
|
|
|
public GetAllConfigurationsQueryHandler(IApplicationDbContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<GetAllConfigurationsResponseDto> Handle(GetAllConfigurationsQuery request, CancellationToken cancellationToken)
|
|
{
|
|
var query = _context.SystemConfigurations
|
|
.ApplyOrder(sortBy: request.SortBy)
|
|
.AsNoTracking()
|
|
.AsQueryable();
|
|
|
|
if (request.Filter is not null)
|
|
{
|
|
query = query
|
|
.Where(x => request.Filter.Scope == null || x.Scope == request.Filter.Scope)
|
|
.Where(x => request.Filter.KeyContains == null || x.Key.Contains(request.Filter.KeyContains))
|
|
.Where(x => request.Filter.IsActive == null || x.IsActive == request.Filter.IsActive);
|
|
}
|
|
|
|
var meta = await query.GetMetaData(request.PaginationState, cancellationToken);
|
|
|
|
var models = await query
|
|
.PaginatedListAsync(paginationState: request.PaginationState)
|
|
.Select(x => new GetAllConfigurationsResponseModel
|
|
{
|
|
Id = x.Id,
|
|
Scope = x.Scope,
|
|
Key = x.Key,
|
|
Value = x.Value,
|
|
Description = x.Description,
|
|
IsActive = x.IsActive,
|
|
Created = x.Created,
|
|
LastModified = x.LastModified
|
|
})
|
|
.ToListAsync(cancellationToken);
|
|
|
|
return new GetAllConfigurationsResponseDto
|
|
{
|
|
MetaData = meta,
|
|
Models = models
|
|
};
|
|
}
|
|
}
|