feat(club-membership): enhance club membership history queries and responses
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 17m54s
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 17m54s
- 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.
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
using CMSMicroservice.Application.ClubMembershipCycleCQ.Queries.GetAllClubMembershipCycleByFilter;
|
||||
using CMSMicroservice.Application.ClubMembershipCycleCQ.Queries.GetClubMembershipCycleSummary;
|
||||
using CMSMicroservice.Protobuf.Protos.ClubMembershipCycle;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using Mapster;
|
||||
|
||||
namespace CMSMicroservice.WebApi.Common.Mappings;
|
||||
|
||||
public class ClubMembershipCycleProfile : IRegister
|
||||
{
|
||||
public void Register(TypeAdapterConfig config)
|
||||
{
|
||||
config.NewConfig<GetAllClubMembershipCycleByFilterRequest, GetAllClubMembershipCycleByFilterQuery>()
|
||||
.MapWith(src => new GetAllClubMembershipCycleByFilterQuery
|
||||
{
|
||||
PaginationState = MapPagination(src.PaginationState),
|
||||
SortBy = src.HasSortBy ? src.SortBy : null,
|
||||
Filter = MapFilter(src.Filter)
|
||||
});
|
||||
|
||||
config.NewConfig<GetAllClubMembershipCycleByFilterResponseDto, GetAllClubMembershipCycleByFilterResponse>()
|
||||
.MapWith(src => new GetAllClubMembershipCycleByFilterResponse
|
||||
{
|
||||
MetaData = MapMeta(src.MetaData),
|
||||
Models = { src.Models?.Select(MapModel) ?? [] }
|
||||
});
|
||||
|
||||
config.NewConfig<GetClubMembershipCycleSummaryRequest, GetClubMembershipCycleSummaryQuery>()
|
||||
.MapWith(src => new GetClubMembershipCycleSummaryQuery { Filter = MapFilter(src.Filter) });
|
||||
|
||||
config.NewConfig<GetClubMembershipCycleSummaryResponseDto, GetClubMembershipCycleSummaryResponse>()
|
||||
.MapWith(src => new GetClubMembershipCycleSummaryResponse
|
||||
{
|
||||
TotalCount = src.TotalCount,
|
||||
CurrentCycleCount = src.CurrentCycleCount,
|
||||
MagicActiveCount = src.MagicActiveCount
|
||||
});
|
||||
}
|
||||
|
||||
private static GetAllClubMembershipCycleByFilterFilter? MapFilter(GetAllClubMembershipCycleByFilterFilter? src)
|
||||
{
|
||||
if (src == null) return null;
|
||||
return new GetAllClubMembershipCycleByFilterFilter
|
||||
{
|
||||
UserId = src.HasUserId ? src.UserId : null,
|
||||
IsCurrentCycle = src.HasIsCurrentCycle ? src.IsCurrentCycle : null,
|
||||
PackageId = src.HasPackageId ? src.PackageId : null,
|
||||
CycleNumber = src.HasCycleNumber ? src.CycleNumber : null,
|
||||
PurchaseMethod = src.HasPurchaseMethod ? (Domain.Enums.PackagePurchaseMethod)src.PurchaseMethod : null,
|
||||
MagicState = src.HasMagicState ? src.MagicState : null,
|
||||
PackagePurchasedFrom = src.PackagePurchasedFrom?.ToDateTime(),
|
||||
PackagePurchasedTo = src.PackagePurchasedTo?.ToDateTime()
|
||||
};
|
||||
}
|
||||
|
||||
private static ClubMembershipCycleModel MapModel(GetAllClubMembershipCycleByFilterResponseModel m) =>
|
||||
new()
|
||||
{
|
||||
Id = m.Id,
|
||||
UserId = m.UserId,
|
||||
UserName = m.UserName,
|
||||
ClubMembershipId = m.ClubMembershipId,
|
||||
CycleNumber = m.CycleNumber,
|
||||
PackageId = m.PackageId,
|
||||
PackageName = m.PackageName,
|
||||
PackageAmount = m.PackageAmount,
|
||||
PurchaseMethod = (int)m.PurchaseMethod,
|
||||
PackagePurchasedAt = Timestamp.FromDateTime(DateTime.SpecifyKind(m.PackagePurchasedAt, DateTimeKind.Utc)),
|
||||
MagicStartedAt = m.MagicStartedAt.HasValue
|
||||
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.MagicStartedAt.Value, DateTimeKind.Utc)) : null,
|
||||
MagicCompletedAt = m.MagicCompletedAt.HasValue
|
||||
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.MagicCompletedAt.Value, DateTimeKind.Utc)) : null,
|
||||
IsCurrentCycle = m.IsCurrentCycle,
|
||||
CreatedAt = Timestamp.FromDateTimeOffset(m.Created)
|
||||
};
|
||||
|
||||
private static Application.Common.Models.PaginationState? MapPagination(CMSMicroservice.Protobuf.Protos.PaginationState? ps) =>
|
||||
ps == null ? null : new Application.Common.Models.PaginationState
|
||||
{
|
||||
PageNumber = ps.PageNumber > 0 ? ps.PageNumber : 1,
|
||||
PageSize = ps.PageSize > 0 ? ps.PageSize : 20
|
||||
};
|
||||
|
||||
private static CMSMicroservice.Protobuf.Protos.MetaData MapMeta(Application.Common.Models.MetaData meta) =>
|
||||
new()
|
||||
{
|
||||
CurrentPage = meta.CurrentPage,
|
||||
PageSize = meta.PageSize,
|
||||
TotalCount = meta.TotalCount,
|
||||
TotalPage = meta.TotalPage
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user