Files
CMS/src/CMSMicroservice.Application/ClubMembershipCQ/Queries/GetClubMembershipHistory/GetClubMembershipHistoryQueryHandler.cs
T
masoodafar-web f8794bbb63
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 17m54s
feat(club-membership): enhance club membership history queries and responses
- Added filtering capabilities to GetClubMembershipHistoryQuery, allowing optional filters for UserId, ClubMembershipId, Action, and date range.
- Updated GetClubMembershipHistoryQueryHandler to utilize the new filter structure.
- Enhanced GetAllClubMembershipsQueryHandler to include LastPackage details in the response.
- Introduced new properties in GetAllClubMembershipsResponseModel for PackageId and PackageName.
- Updated Protobuf definitions to reflect changes in club membership history queries and responses.
- Refactored mapping configurations to accommodate new DTOs and filters.
2026-06-22 22:19:44 +03:30

70 lines
2.7 KiB
C#

namespace CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembershipHistory;
public class GetClubMembershipHistoryQueryHandler : IRequestHandler<GetClubMembershipHistoryQuery, GetClubMembershipHistoryResponseDto>
{
private readonly IApplicationDbContext _context;
public GetClubMembershipHistoryQueryHandler(IApplicationDbContext context)
{
_context = context;
}
public async Task<GetClubMembershipHistoryResponseDto> Handle(GetClubMembershipHistoryQuery request, CancellationToken cancellationToken)
{
var query = _context.ClubMembershipHistories
.Include(x => x.ClubMembership)
.ThenInclude(m => m!.User)
.AsNoTracking()
.AsQueryable();
if (request.Filter != null)
{
if (request.Filter.ClubMembershipId.HasValue)
query = query.Where(x => x.ClubMembershipId == request.Filter.ClubMembershipId.Value);
if (request.Filter.UserId.HasValue)
query = query.Where(x => x.UserId == request.Filter.UserId.Value);
if (request.Filter.Action.HasValue)
query = query.Where(x => x.Action == request.Filter.Action.Value);
if (request.Filter.CreatedFrom.HasValue)
query = query.Where(x => x.Created >= request.Filter.CreatedFrom.Value);
if (request.Filter.CreatedTo.HasValue)
query = query.Where(x => x.Created <= request.Filter.CreatedTo.Value);
}
query = query.ApplyOrder(sortBy: request.SortBy ?? "-Created");
var meta = await query.GetMetaData(request.PaginationState, cancellationToken);
var models = await query
.PaginatedListAsync(paginationState: request.PaginationState)
.Select(x => new GetClubMembershipHistoryResponseModel
{
Id = x.Id,
ClubMembershipId = x.ClubMembershipId,
UserId = x.UserId,
UserName = x.ClubMembership != null && x.ClubMembership.User != null
? $"{x.ClubMembership.User.FirstName} {x.ClubMembership.User.LastName}"
: string.Empty,
OldIsActive = x.OldIsActive,
NewIsActive = x.NewIsActive,
OldInitialContribution = x.OldInitialContribution,
NewInitialContribution = x.NewInitialContribution,
Action = x.Action,
Reason = x.Reason,
PerformedBy = x.PerformedBy,
Created = x.Created
})
.ToListAsync(cancellationToken);
return new GetClubMembershipHistoryResponseDto
{
MetaData = meta,
Models = models
};
}
}