fe66d478ee
- Implemented 3 Commands with handlers and validators: * ActivateClubMembership: Create/reactivate membership * DeactivateClubMembership: Deactivate existing membership * AssignClubFeature: Assign features to club members - Implemented 3 Queries with handlers, validators, and DTOs: * GetClubMembership: Retrieve single membership by UserId * GetAllClubMemberships: List with filtering and pagination * GetClubMembershipHistory: Audit trail with full history - All operations include history tracking via ClubMembershipHistory - Property names aligned with Domain entity definitions - 21 new files, ~600 lines of code - Build successful with 0 errors
33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
namespace CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembership;
|
|
|
|
public class GetClubMembershipQueryHandler : IRequestHandler<GetClubMembershipQuery, ClubMembershipDto?>
|
|
{
|
|
private readonly IApplicationDbContext _context;
|
|
|
|
public GetClubMembershipQueryHandler(IApplicationDbContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<ClubMembershipDto?> Handle(GetClubMembershipQuery request, CancellationToken cancellationToken)
|
|
{
|
|
var membership = await _context.ClubMemberships
|
|
.AsNoTracking()
|
|
.Where(x => x.UserId == request.UserId)
|
|
.Select(x => new ClubMembershipDto
|
|
{
|
|
Id = x.Id,
|
|
UserId = x.UserId,
|
|
IsActive = x.IsActive,
|
|
ActivatedAt = x.ActivatedAt,
|
|
InitialContribution = x.InitialContribution,
|
|
TotalEarned = x.TotalEarned,
|
|
Created = x.Created,
|
|
LastModified = x.LastModified
|
|
})
|
|
.FirstOrDefaultAsync(cancellationToken);
|
|
|
|
return membership;
|
|
}
|
|
}
|