refactor(mappings): streamline mapping configurations for user package purchases and payment transactions
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 23m14s

- Updated mapping configurations in UserPackagePurchaseProfile and PaymentTransactionProfile to utilize new Protobuf definitions for improved clarity and consistency.
- Simplified filter mappings and removed redundant mapping methods to enhance maintainability.
- Ensured alignment of all relevant profiles with the latest filter structures and DTOs.
This commit is contained in:
masoodafar-web
2026-06-22 22:54:25 +03:30
parent db20d95b43
commit 46ac1d817e
5 changed files with 207 additions and 374 deletions
@@ -1,9 +1,8 @@
using CMSMicroservice.Application.ClubMembershipCycleHistoryCQ.Queries.GetAllClubMembershipCycleHistoryByFilter;
using CMSMicroservice.Protobuf.Protos.ClubMembershipCycleHistory;
using Google.Protobuf.WellKnownTypes; using Google.Protobuf.WellKnownTypes;
using CMSMicroservice.Domain.Enums;
using Mapster; using Mapster;
using AppFilter = CMSMicroservice.Application.ClubMembershipCycleHistoryCQ.Queries.GetAllClubMembershipCycleHistoryByFilter.GetAllClubMembershipCycleHistoryByFilterFilter; using AppHistory = CMSMicroservice.Application.ClubMembershipCycleHistoryCQ.Queries.GetAllClubMembershipCycleHistoryByFilter;
using ProtoFilter = CMSMicroservice.Protobuf.Protos.ClubMembershipCycleHistory.GetAllClubMembershipCycleHistoryByFilterFilter; using ProtoHistory = CMSMicroservice.Protobuf.Protos.ClubMembershipCycleHistory;
namespace CMSMicroservice.WebApi.Common.Mappings; namespace CMSMicroservice.WebApi.Common.Mappings;
@@ -11,73 +10,38 @@ public class ClubMembershipCycleHistoryProfile : IRegister
{ {
public void Register(TypeAdapterConfig config) public void Register(TypeAdapterConfig config)
{ {
config.NewConfig<GetAllClubMembershipCycleHistoryByFilterRequest, GetAllClubMembershipCycleHistoryByFilterQuery>() config.NewConfig<ProtoHistory.GetAllClubMembershipCycleHistoryByFilterRequest, AppHistory.GetAllClubMembershipCycleHistoryByFilterQuery>()
.MapWith(src => new GetAllClubMembershipCycleHistoryByFilterQuery .Map(dest => dest.PaginationState, src => src.PaginationState)
{ .Map(dest => dest.SortBy, src => src.SortBy)
PaginationState = MapPagination(src.PaginationState), .Map(dest => dest.Filter, src => src.Filter);
SortBy = src.HasSortBy ? src.SortBy : null,
Filter = MapFilter(src.Filter)
});
config.NewConfig<GetAllClubMembershipCycleHistoryByFilterResponseDto, GetAllClubMembershipCycleHistoryByFilterResponse>() config.NewConfig<ProtoHistory.GetAllClubMembershipCycleHistoryByFilterFilter, AppHistory.GetAllClubMembershipCycleHistoryByFilterFilter>()
.MapWith(src => new GetAllClubMembershipCycleHistoryByFilterResponse .Map(dest => dest.UserId, src => src.UserId)
{ .Map(dest => dest.ClubMembershipCycleId, src => src.ClubMembershipCycleId)
MetaData = MapMeta(src.MetaData), .Map(dest => dest.CycleNumber, src => src.CycleNumber)
Models = { src.Models?.Select(MapModel) ?? [] } .Map(dest => dest.Action, src => src.Action == null ? null : (ClubMembershipCycleAction?)src.Action)
}); .Map(dest => dest.CreatedFrom, src => src.CreatedFrom != null ? src.CreatedFrom.ToDateTime() : (DateTime?)null)
.Map(dest => dest.CreatedTo, src => src.CreatedTo != null ? src.CreatedTo.ToDateTime() : (DateTime?)null);
config.NewConfig<AppHistory.GetAllClubMembershipCycleHistoryByFilterResponseDto, ProtoHistory.GetAllClubMembershipCycleHistoryByFilterResponse>()
.Map(dest => dest.MetaData, src => src.MetaData)
.Map(dest => dest.Models, src => src.Models);
config.NewConfig<AppHistory.GetAllClubMembershipCycleHistoryByFilterResponseModel, ProtoHistory.ClubMembershipCycleHistoryModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.ClubMembershipCycleId, src => src.ClubMembershipCycleId)
.Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.UserName, src => src.UserName)
.Map(dest => dest.CycleNumber, src => src.CycleNumber)
.Map(dest => dest.OldIsCurrentCycle, src => src.OldIsCurrentCycle)
.Map(dest => dest.NewIsCurrentCycle, src => src.NewIsCurrentCycle)
.Map(dest => dest.OldMagicStartedAt, src => src.OldMagicStartedAt)
.Map(dest => dest.NewMagicStartedAt, src => src.NewMagicStartedAt)
.Map(dest => dest.OldMagicCompletedAt, src => src.OldMagicCompletedAt)
.Map(dest => dest.NewMagicCompletedAt, src => src.NewMagicCompletedAt)
.Map(dest => dest.Action, src => (int)src.Action)
.Map(dest => dest.PerformedBy, src => src.PerformedBy ?? string.Empty)
.Map(dest => dest.Reason, src => src.Reason ?? string.Empty)
.Map(dest => dest.CreatedAt, src => Timestamp.FromDateTimeOffset(src.Created));
} }
private static AppFilter? MapFilter(ProtoFilter? src)
{
if (src == null) return null;
return new AppFilter
{
UserId = src.HasUserId ? src.UserId : null,
ClubMembershipCycleId = src.HasClubMembershipCycleId ? src.ClubMembershipCycleId : null,
CycleNumber = src.HasCycleNumber ? src.CycleNumber : null,
Action = src.HasAction ? (Domain.Enums.ClubMembershipCycleAction)src.Action : null,
CreatedFrom = src.CreatedFrom?.ToDateTime(),
CreatedTo = src.CreatedTo?.ToDateTime()
};
}
private static ClubMembershipCycleHistoryModel MapModel(GetAllClubMembershipCycleHistoryByFilterResponseModel m) =>
new()
{
Id = m.Id,
ClubMembershipCycleId = m.ClubMembershipCycleId,
UserId = m.UserId,
UserName = m.UserName,
CycleNumber = m.CycleNumber,
OldIsCurrentCycle = m.OldIsCurrentCycle,
NewIsCurrentCycle = m.NewIsCurrentCycle,
OldMagicStartedAt = m.OldMagicStartedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.OldMagicStartedAt.Value, DateTimeKind.Utc)) : null,
NewMagicStartedAt = m.NewMagicStartedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.NewMagicStartedAt.Value, DateTimeKind.Utc)) : null,
OldMagicCompletedAt = m.OldMagicCompletedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.OldMagicCompletedAt.Value, DateTimeKind.Utc)) : null,
NewMagicCompletedAt = m.NewMagicCompletedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(m.NewMagicCompletedAt.Value, DateTimeKind.Utc)) : null,
Action = (int)m.Action,
PerformedBy = m.PerformedBy ?? string.Empty,
Reason = m.Reason ?? string.Empty,
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
};
} }
@@ -1,10 +1,9 @@
using CMSMicroservice.Application.ClubMembershipCycleCQ.Queries.GetAllClubMembershipCycleByFilter;
using CMSMicroservice.Application.ClubMembershipCycleCQ.Queries.GetClubMembershipCycleSummary;
using CMSMicroservice.Protobuf.Protos.ClubMembershipCycle;
using Google.Protobuf.WellKnownTypes; using Google.Protobuf.WellKnownTypes;
using CMSMicroservice.Domain.Enums;
using Mapster; using Mapster;
using AppFilter = CMSMicroservice.Application.ClubMembershipCycleCQ.Queries.GetAllClubMembershipCycleByFilter.GetAllClubMembershipCycleByFilterFilter; using AppCycle = CMSMicroservice.Application.ClubMembershipCycleCQ.Queries.GetAllClubMembershipCycleByFilter;
using ProtoFilter = CMSMicroservice.Protobuf.Protos.ClubMembershipCycle.GetAllClubMembershipCycleByFilterFilter; using AppCycleSummary = CMSMicroservice.Application.ClubMembershipCycleCQ.Queries.GetClubMembershipCycleSummary;
using ProtoCycle = CMSMicroservice.Protobuf.Protos.ClubMembershipCycle;
namespace CMSMicroservice.WebApi.Common.Mappings; namespace CMSMicroservice.WebApi.Common.Mappings;
@@ -12,83 +11,47 @@ public class ClubMembershipCycleProfile : IRegister
{ {
public void Register(TypeAdapterConfig config) public void Register(TypeAdapterConfig config)
{ {
config.NewConfig<GetAllClubMembershipCycleByFilterRequest, GetAllClubMembershipCycleByFilterQuery>() config.NewConfig<ProtoCycle.GetAllClubMembershipCycleByFilterRequest, AppCycle.GetAllClubMembershipCycleByFilterQuery>()
.MapWith(src => new GetAllClubMembershipCycleByFilterQuery .Map(dest => dest.PaginationState, src => src.PaginationState)
{ .Map(dest => dest.SortBy, src => src.SortBy)
PaginationState = MapPagination(src.PaginationState), .Map(dest => dest.Filter, src => src.Filter);
SortBy = src.HasSortBy ? src.SortBy : null,
Filter = MapFilter(src.Filter)
});
config.NewConfig<GetAllClubMembershipCycleByFilterResponseDto, GetAllClubMembershipCycleByFilterResponse>() config.NewConfig<ProtoCycle.GetAllClubMembershipCycleByFilterFilter, AppCycle.GetAllClubMembershipCycleByFilterFilter>()
.MapWith(src => new GetAllClubMembershipCycleByFilterResponse .Map(dest => dest.UserId, src => src.UserId)
{ .Map(dest => dest.IsCurrentCycle, src => src.IsCurrentCycle)
MetaData = MapMeta(src.MetaData), .Map(dest => dest.PackageId, src => src.PackageId)
Models = { src.Models?.Select(MapModel) ?? [] } .Map(dest => dest.CycleNumber, src => src.CycleNumber)
}); .Map(dest => dest.PurchaseMethod, src => src.PurchaseMethod == null ? null : (PackagePurchaseMethod?)src.PurchaseMethod)
.Map(dest => dest.MagicState, src => src.MagicState)
.Map(dest => dest.PackagePurchasedFrom, src => src.PackagePurchasedFrom != null ? src.PackagePurchasedFrom.ToDateTime() : (DateTime?)null)
.Map(dest => dest.PackagePurchasedTo, src => src.PackagePurchasedTo != null ? src.PackagePurchasedTo.ToDateTime() : (DateTime?)null);
config.NewConfig<GetClubMembershipCycleSummaryRequest, GetClubMembershipCycleSummaryQuery>() config.NewConfig<AppCycle.GetAllClubMembershipCycleByFilterResponseDto, ProtoCycle.GetAllClubMembershipCycleByFilterResponse>()
.MapWith(src => new GetClubMembershipCycleSummaryQuery { Filter = MapFilter(src.Filter) }); .Map(dest => dest.MetaData, src => src.MetaData)
.Map(dest => dest.Models, src => src.Models);
config.NewConfig<GetClubMembershipCycleSummaryResponseDto, GetClubMembershipCycleSummaryResponse>() config.NewConfig<AppCycle.GetAllClubMembershipCycleByFilterResponseModel, ProtoCycle.ClubMembershipCycleModel>()
.MapWith(src => new GetClubMembershipCycleSummaryResponse .Map(dest => dest.Id, src => src.Id)
{ .Map(dest => dest.UserId, src => src.UserId)
TotalCount = src.TotalCount, .Map(dest => dest.UserName, src => src.UserName)
CurrentCycleCount = src.CurrentCycleCount, .Map(dest => dest.ClubMembershipId, src => src.ClubMembershipId)
MagicActiveCount = src.MagicActiveCount .Map(dest => dest.CycleNumber, src => src.CycleNumber)
}); .Map(dest => dest.PackageId, src => src.PackageId)
.Map(dest => dest.PackageName, src => src.PackageName)
.Map(dest => dest.PackageAmount, src => src.PackageAmount)
.Map(dest => dest.PurchaseMethod, src => (int)src.PurchaseMethod)
.Map(dest => dest.PackagePurchasedAt, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.PackagePurchasedAt, DateTimeKind.Utc)))
.Map(dest => dest.MagicStartedAt, src => src.MagicStartedAt)
.Map(dest => dest.MagicCompletedAt, src => src.MagicCompletedAt)
.Map(dest => dest.IsCurrentCycle, src => src.IsCurrentCycle)
.Map(dest => dest.CreatedAt, src => Timestamp.FromDateTimeOffset(src.Created));
config.NewConfig<ProtoCycle.GetClubMembershipCycleSummaryRequest, AppCycleSummary.GetClubMembershipCycleSummaryQuery>()
.Map(dest => dest.Filter, src => src.Filter);
config.NewConfig<AppCycleSummary.GetClubMembershipCycleSummaryResponseDto, ProtoCycle.GetClubMembershipCycleSummaryResponse>()
.Map(dest => dest.TotalCount, src => src.TotalCount)
.Map(dest => dest.CurrentCycleCount, src => src.CurrentCycleCount)
.Map(dest => dest.MagicActiveCount, src => src.MagicActiveCount);
} }
private static AppFilter? MapFilter(ProtoFilter? src)
{
if (src == null) return null;
return new AppFilter
{
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
};
} }
@@ -1,9 +1,9 @@
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetAllClubMemberships; using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetAllClubMemberships;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembership; using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembership;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembershipHistory;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubStatistics; using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubStatistics;
using AppHistoryFilter = CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembershipHistory.GetClubMembershipHistoryFilter; using CMSMicroservice.Domain.Enums;
using CMSMicroservice.Protobuf.Protos.ClubMembership; using AppHistory = CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembershipHistory;
using ProtoClub = CMSMicroservice.Protobuf.Protos.ClubMembership;
using Google.Protobuf.WellKnownTypes; using Google.Protobuf.WellKnownTypes;
using Mapster; using Mapster;
using System.Linq; using System.Linq;
@@ -19,15 +19,15 @@ public class ClubMembershipProfile : IRegister
// ===================== // =====================
// GetClubMembershipRequest -> GetClubMembershipQuery // GetClubMembershipRequest -> GetClubMembershipQuery
config.NewConfig<GetClubMembershipRequest, GetClubMembershipQuery>() config.NewConfig<ProtoClub.GetClubMembershipRequest, GetClubMembershipQuery>()
.MapWith(src => new GetClubMembershipQuery .MapWith(src => new GetClubMembershipQuery
{ {
UserId = src.UserId UserId = src.UserId
}); });
// ClubMembershipDto -> GetClubMembershipResponse // ClubMembershipDto -> GetClubMembershipResponse
config.NewConfig<ClubMembershipDto, GetClubMembershipResponse>() config.NewConfig<ClubMembershipDto, ProtoClub.GetClubMembershipResponse>()
.MapWith(src => new GetClubMembershipResponse .MapWith(src => new ProtoClub.GetClubMembershipResponse
{ {
Id = src.Id, Id = src.Id,
UserId = src.UserId, UserId = src.UserId,
@@ -50,7 +50,7 @@ public class ClubMembershipProfile : IRegister
// ===================== // =====================
// GetAllClubMembershipsRequest -> GetAllClubMembershipsQuery // GetAllClubMembershipsRequest -> GetAllClubMembershipsQuery
config.NewConfig<GetAllClubMembershipsRequest, GetAllClubMembershipsQuery>() config.NewConfig<ProtoClub.GetAllClubMembershipsRequest, GetAllClubMembershipsQuery>()
.MapWith(src => new GetAllClubMembershipsQuery .MapWith(src => new GetAllClubMembershipsQuery
{ {
PaginationState = new Application.Common.Models.PaginationState PaginationState = new Application.Common.Models.PaginationState
@@ -66,8 +66,8 @@ public class ClubMembershipProfile : IRegister
}); });
// GetAllClubMembershipsResponseDto -> GetAllClubMembershipsResponse // GetAllClubMembershipsResponseDto -> GetAllClubMembershipsResponse
config.NewConfig<GetAllClubMembershipsResponseDto, GetAllClubMembershipsResponse>() config.NewConfig<GetAllClubMembershipsResponseDto, ProtoClub.GetAllClubMembershipsResponse>()
.MapWith(src => new GetAllClubMembershipsResponse .MapWith(src => new ProtoClub.GetAllClubMembershipsResponse
{ {
MetaData = new CMSMicroservice.Protobuf.Protos.MetaData MetaData = new CMSMicroservice.Protobuf.Protos.MetaData
{ {
@@ -84,12 +84,12 @@ public class ClubMembershipProfile : IRegister
// ===================== // =====================
// GetClubStatisticsRequest -> GetClubStatisticsQuery // GetClubStatisticsRequest -> GetClubStatisticsQuery
config.NewConfig<GetClubStatisticsRequest, GetClubStatisticsQuery>() config.NewConfig<ProtoClub.GetClubStatisticsRequest, GetClubStatisticsQuery>()
.MapWith(src => new GetClubStatisticsQuery()); .MapWith(src => new GetClubStatisticsQuery());
// GetClubStatisticsResponseDto -> GetClubStatisticsResponse // GetClubStatisticsResponseDto -> GetClubStatisticsResponse
config.NewConfig<GetClubStatisticsResponseDto, GetClubStatisticsResponse>() config.NewConfig<GetClubStatisticsResponseDto, ProtoClub.GetClubStatisticsResponse>()
.MapWith(src => new GetClubStatisticsResponse .MapWith(src => new ProtoClub.GetClubStatisticsResponse
{ {
TotalMembers = src.TotalMembers, TotalMembers = src.TotalMembers,
ActiveMembers = src.ActiveMembers, ActiveMembers = src.ActiveMembers,
@@ -99,14 +99,14 @@ public class ClubMembershipProfile : IRegister
TotalRevenue = src.TotalRevenue, TotalRevenue = src.TotalRevenue,
AverageMembershipDurationDays = src.AverageMembershipDurationDays, AverageMembershipDurationDays = src.AverageMembershipDurationDays,
ExpiringSoonCount = src.ExpiringSoonCount, ExpiringSoonCount = src.ExpiringSoonCount,
PackageDistribution = { src.PackageDistribution.Select(p => new PackageLevelDistribution PackageDistribution = { src.PackageDistribution.Select(p => new ProtoClub.PackageLevelDistribution
{ {
PackageId = p.PackageId, PackageId = p.PackageId,
PackageName = p.PackageName ?? string.Empty, PackageName = p.PackageName ?? string.Empty,
MemberCount = p.MemberCount, MemberCount = p.MemberCount,
Percentage = p.Percentage Percentage = p.Percentage
}) }, }) },
MonthlyTrend = { src.MonthlyTrend.Select(t => new MonthlyMembershipTrend MonthlyTrend = { src.MonthlyTrend.Select(t => new ProtoClub.MonthlyMembershipTrend
{ {
Month = t.Month ?? string.Empty, Month = t.Month ?? string.Empty,
Activations = t.Activations, Activations = t.Activations,
@@ -116,58 +116,40 @@ public class ClubMembershipProfile : IRegister
}); });
// GetClubMembershipHistory // GetClubMembershipHistory
config.NewConfig<GetClubMembershipHistoryRequest, GetClubMembershipHistoryQuery>() config.NewConfig<ProtoClub.GetClubMembershipHistoryRequest, AppHistory.GetClubMembershipHistoryQuery>()
.MapWith(src => new GetClubMembershipHistoryQuery .Map(dest => dest.PaginationState, src => src.PaginationState)
{ .Map(dest => dest.SortBy, src => src.SortBy)
PaginationState = src.PaginationState != null .Map(dest => dest.Filter, src => src.Filter);
? new Application.Common.Models.PaginationState
{
PageNumber = src.PaginationState.PageNumber > 0 ? src.PaginationState.PageNumber : 1,
PageSize = src.PaginationState.PageSize > 0 ? src.PaginationState.PageSize : 20
}
: null,
SortBy = src.HasSortBy ? src.SortBy : null,
Filter = src.Filter != null ? new AppHistoryFilter
{
UserId = src.Filter.HasUserId ? src.Filter.UserId : null,
ClubMembershipId = src.Filter.HasClubMembershipId ? src.Filter.ClubMembershipId : null,
Action = src.Filter.HasAction ? (Domain.Enums.ClubMembershipAction)src.Filter.Action : null,
CreatedFrom = src.Filter.CreatedFrom?.ToDateTime(),
CreatedTo = src.Filter.CreatedTo?.ToDateTime()
} : null
});
config.NewConfig<GetClubMembershipHistoryResponseDto, GetClubMembershipHistoryResponse>() config.NewConfig<ProtoClub.GetClubMembershipHistoryFilter, AppHistory.GetClubMembershipHistoryFilter>()
.MapWith(src => new GetClubMembershipHistoryResponse .Map(dest => dest.UserId, src => src.UserId)
{ .Map(dest => dest.ClubMembershipId, src => src.ClubMembershipId)
MetaData = new CMSMicroservice.Protobuf.Protos.MetaData .Map(dest => dest.Action, src => src.Action == null ? null : (ClubMembershipAction?)src.Action)
{ .Map(dest => dest.CreatedFrom, src => src.CreatedFrom != null ? src.CreatedFrom.ToDateTime() : (DateTime?)null)
CurrentPage = src.MetaData.CurrentPage, .Map(dest => dest.CreatedTo, src => src.CreatedTo != null ? src.CreatedTo.ToDateTime() : (DateTime?)null);
PageSize = src.MetaData.PageSize,
TotalCount = src.MetaData.TotalCount, config.NewConfig<AppHistory.GetClubMembershipHistoryResponseDto, ProtoClub.GetClubMembershipHistoryResponse>()
TotalPage = src.MetaData.TotalPage .Map(dest => dest.MetaData, src => src.MetaData)
}, .Map(dest => dest.Models, src => src.Models);
Models = { src.Models.Select(m => new ClubMembershipHistoryModel
{ config.NewConfig<AppHistory.GetClubMembershipHistoryResponseModel, ProtoClub.ClubMembershipHistoryModel>()
Id = m.Id, .Map(dest => dest.Id, src => src.Id)
ClubMembershipId = m.ClubMembershipId, .Map(dest => dest.ClubMembershipId, src => src.ClubMembershipId)
UserId = m.UserId, .Map(dest => dest.UserId, src => src.UserId)
UserName = m.UserName ?? string.Empty, .Map(dest => dest.UserName, src => src.UserName ?? string.Empty)
OldIsActive = m.OldIsActive, .Map(dest => dest.OldIsActive, src => src.OldIsActive)
NewIsActive = m.NewIsActive, .Map(dest => dest.NewIsActive, src => src.NewIsActive)
OldInitialContribution = m.OldInitialContribution, .Map(dest => dest.OldInitialContribution, src => src.OldInitialContribution)
NewInitialContribution = m.NewInitialContribution, .Map(dest => dest.NewInitialContribution, src => src.NewInitialContribution)
Action = (int)m.Action, .Map(dest => dest.Action, src => (int)src.Action)
PerformedBy = m.PerformedBy ?? string.Empty, .Map(dest => dest.PerformedBy, src => src.PerformedBy ?? string.Empty)
Reason = m.Reason ?? string.Empty, .Map(dest => dest.Reason, src => src.Reason ?? string.Empty)
CreatedAt = Timestamp.FromDateTimeOffset(m.Created) .Map(dest => dest.CreatedAt, src => Timestamp.FromDateTimeOffset(src.Created));
}) }
});
} }
private static ClubMembershipModel MapToModel(GetAllClubMembershipsResponseModel src) private static ProtoClub.ClubMembershipModel MapToModel(GetAllClubMembershipsResponseModel src)
{ {
return new ClubMembershipModel return new ProtoClub.ClubMembershipModel
{ {
Id = src.Id, Id = src.Id,
UserId = src.UserId, UserId = src.UserId,
@@ -1,10 +1,9 @@
using CMSMicroservice.Application.PaymentTransactionCQ.Queries.GetAllPaymentTransactionByFilter;
using CMSMicroservice.Application.PaymentTransactionCQ.Queries.GetPaymentTransactionSummary;
using CMSMicroservice.Protobuf.Protos.PaymentTransaction;
using Google.Protobuf.WellKnownTypes; using Google.Protobuf.WellKnownTypes;
using CMSMicroservice.Domain.Enums;
using Mapster; using Mapster;
using AppFilter = CMSMicroservice.Application.PaymentTransactionCQ.Queries.GetAllPaymentTransactionByFilter.GetAllPaymentTransactionByFilterFilter; using AppPt = CMSMicroservice.Application.PaymentTransactionCQ.Queries.GetAllPaymentTransactionByFilter;
using ProtoFilter = CMSMicroservice.Protobuf.Protos.PaymentTransaction.GetAllPaymentTransactionByFilterFilter; using AppPtSummary = CMSMicroservice.Application.PaymentTransactionCQ.Queries.GetPaymentTransactionSummary;
using ProtoPt = CMSMicroservice.Protobuf.Protos.PaymentTransaction;
namespace CMSMicroservice.WebApi.Common.Mappings; namespace CMSMicroservice.WebApi.Common.Mappings;
@@ -12,93 +11,50 @@ public class PaymentTransactionProfile : IRegister
{ {
public void Register(TypeAdapterConfig config) public void Register(TypeAdapterConfig config)
{ {
config.NewConfig<GetAllPaymentTransactionByFilterRequest, GetAllPaymentTransactionByFilterQuery>() config.NewConfig<ProtoPt.GetAllPaymentTransactionByFilterRequest, AppPt.GetAllPaymentTransactionByFilterQuery>()
.MapWith(MapListQuery); .Map(dest => dest.PaginationState, src => src.PaginationState)
.Map(dest => dest.SortBy, src => src.SortBy)
.Map(dest => dest.Filter, src => src.Filter);
config.NewConfig<GetAllPaymentTransactionByFilterResponseDto, GetAllPaymentTransactionByFilterResponse>() config.NewConfig<ProtoPt.GetAllPaymentTransactionByFilterFilter, AppPt.GetAllPaymentTransactionByFilterFilter>()
.MapWith(MapListResponse); .Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.Mobile, src => src.Mobile)
.Map(dest => dest.GatewayProvider, src => src.GatewayProvider)
.Map(dest => dest.PaymentStatus, src => src.PaymentStatus)
.Map(dest => dest.Authority, src => src.Authority)
.Map(dest => dest.RefId, src => src.RefId)
.Map(dest => dest.OrderId, src => src.OrderId)
.Map(dest => dest.CreatedFrom, src => src.CreatedFrom != null ? src.CreatedFrom.ToDateTime() : (DateTime?)null)
.Map(dest => dest.CreatedTo, src => src.CreatedTo != null ? src.CreatedTo.ToDateTime() : (DateTime?)null);
config.NewConfig<GetPaymentTransactionSummaryRequest, GetPaymentTransactionSummaryQuery>() config.NewConfig<AppPt.GetAllPaymentTransactionByFilterResponseDto, ProtoPt.GetAllPaymentTransactionByFilterResponse>()
.MapWith(src => new GetPaymentTransactionSummaryQuery .Map(dest => dest.MetaData, src => src.MetaData)
{ .Map(dest => dest.Models, src => src.Models);
Filter = MapFilter(src.Filter)
});
config.NewConfig<GetPaymentTransactionSummaryResponseDto, GetPaymentTransactionSummaryResponse>() config.NewConfig<AppPt.GetAllPaymentTransactionByFilterResponseModel, ProtoPt.PaymentTransactionModel>()
.MapWith(src => new GetPaymentTransactionSummaryResponse .Map(dest => dest.Id, src => src.Id)
{ .Map(dest => dest.UserId, src => src.UserId ?? 0)
TotalCount = src.TotalCount, .Map(dest => dest.Mobile, src => src.Mobile ?? string.Empty)
TotalAmount = src.TotalAmount, .Map(dest => dest.GatewayProvider, src => src.GatewayProvider)
SuccessfulCount = src.SuccessfulCount, .Map(dest => dest.Amount, src => src.Amount)
PendingCount = src.PendingCount .Map(dest => dest.Authority, src => src.Authority ?? string.Empty)
}); .Map(dest => dest.PaymentStatus, src => src.PaymentStatus)
.Map(dest => dest.VerificationStatusCode, src => src.VerificationStatusCode)
.Map(dest => dest.VerificationStatusMessage, src => src.VerificationStatusMessage ?? string.Empty)
.Map(dest => dest.RefId, src => src.RefId ?? string.Empty)
.Map(dest => dest.CardPan, src => src.CardPan ?? string.Empty)
.Map(dest => dest.OrderId, src => src.OrderId ?? string.Empty)
.Map(dest => dest.TransactionId, src => src.TransactionId)
.Map(dest => dest.Description, src => src.Description ?? string.Empty)
.Map(dest => dest.CreatedAt, src => Timestamp.FromDateTimeOffset(src.Created));
config.NewConfig<ProtoPt.GetPaymentTransactionSummaryRequest, AppPtSummary.GetPaymentTransactionSummaryQuery>()
.Map(dest => dest.Filter, src => src.Filter);
config.NewConfig<AppPtSummary.GetPaymentTransactionSummaryResponseDto, ProtoPt.GetPaymentTransactionSummaryResponse>()
.Map(dest => dest.TotalCount, src => src.TotalCount)
.Map(dest => dest.TotalAmount, src => src.TotalAmount)
.Map(dest => dest.SuccessfulCount, src => src.SuccessfulCount)
.Map(dest => dest.PendingCount, src => src.PendingCount);
} }
private static GetAllPaymentTransactionByFilterQuery MapListQuery(GetAllPaymentTransactionByFilterRequest src) =>
new()
{
PaginationState = MapPagination(src.PaginationState),
SortBy = src.HasSortBy ? src.SortBy : null,
Filter = MapFilter(src.Filter)
};
private static GetAllPaymentTransactionByFilterResponse MapListResponse(GetAllPaymentTransactionByFilterResponseDto src) =>
new()
{
MetaData = MapMeta(src.MetaData),
Models = { src.Models?.Select(MapModel) ?? [] }
};
private static AppFilter? MapFilter(ProtoFilter? src)
{
if (src == null) return null;
return new AppFilter
{
UserId = src.HasUserId ? src.UserId : null,
Mobile = src.HasMobile ? src.Mobile : null,
GatewayProvider = src.HasGatewayProvider ? src.GatewayProvider : null,
PaymentStatus = src.HasPaymentStatus ? src.PaymentStatus : null,
Authority = src.HasAuthority ? src.Authority : null,
RefId = src.HasRefId ? src.RefId : null,
OrderId = src.HasOrderId ? src.OrderId : null,
CreatedFrom = src.CreatedFrom?.ToDateTime(),
CreatedTo = src.CreatedTo?.ToDateTime()
};
}
private static PaymentTransactionModel MapModel(GetAllPaymentTransactionByFilterResponseModel m) =>
new()
{
Id = m.Id,
UserId = m.UserId ?? 0,
Mobile = m.Mobile ?? string.Empty,
GatewayProvider = m.GatewayProvider,
Amount = m.Amount,
Authority = m.Authority ?? string.Empty,
PaymentStatus = m.PaymentStatus,
VerificationStatusCode = m.VerificationStatusCode,
VerificationStatusMessage = m.VerificationStatusMessage ?? string.Empty,
RefId = m.RefId ?? string.Empty,
CardPan = m.CardPan ?? string.Empty,
OrderId = m.OrderId ?? string.Empty,
TransactionId = m.TransactionId,
Description = m.Description ?? string.Empty,
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
};
} }
@@ -1,10 +1,9 @@
using CMSMicroservice.Application.UserPackagePurchaseCQ.Queries.GetAllUserPackagePurchaseByFilter;
using CMSMicroservice.Application.UserPackagePurchaseCQ.Queries.GetUserPackagePurchaseSummary;
using CMSMicroservice.Protobuf.Protos.UserPackagePurchase;
using Google.Protobuf.WellKnownTypes; using Google.Protobuf.WellKnownTypes;
using CMSMicroservice.Domain.Enums;
using Mapster; using Mapster;
using AppFilter = CMSMicroservice.Application.UserPackagePurchaseCQ.Queries.GetAllUserPackagePurchaseByFilter.GetAllUserPackagePurchaseByFilterFilter; using AppUp = CMSMicroservice.Application.UserPackagePurchaseCQ.Queries.GetAllUserPackagePurchaseByFilter;
using ProtoFilter = CMSMicroservice.Protobuf.Protos.UserPackagePurchase.GetAllUserPackagePurchaseByFilterFilter; using AppUpSummary = CMSMicroservice.Application.UserPackagePurchaseCQ.Queries.GetUserPackagePurchaseSummary;
using ProtoUp = CMSMicroservice.Protobuf.Protos.UserPackagePurchase;
namespace CMSMicroservice.WebApi.Common.Mappings; namespace CMSMicroservice.WebApi.Common.Mappings;
@@ -12,74 +11,43 @@ public class UserPackagePurchaseProfile : IRegister
{ {
public void Register(TypeAdapterConfig config) public void Register(TypeAdapterConfig config)
{ {
config.NewConfig<GetAllUserPackagePurchaseByFilterRequest, GetAllUserPackagePurchaseByFilterQuery>() config.NewConfig<ProtoUp.GetAllUserPackagePurchaseByFilterRequest, AppUp.GetAllUserPackagePurchaseByFilterQuery>()
.MapWith(src => new GetAllUserPackagePurchaseByFilterQuery .Map(dest => dest.PaginationState, src => src.PaginationState)
{ .Map(dest => dest.SortBy, src => src.SortBy)
PaginationState = MapPagination(src.PaginationState), .Map(dest => dest.Filter, src => src.Filter);
SortBy = src.HasSortBy ? src.SortBy : null,
Filter = MapFilter(src.Filter)
});
config.NewConfig<GetAllUserPackagePurchaseByFilterResponseDto, GetAllUserPackagePurchaseByFilterResponse>() config.NewConfig<ProtoUp.GetAllUserPackagePurchaseByFilterFilter, AppUp.GetAllUserPackagePurchaseByFilterFilter>()
.MapWith(src => new GetAllUserPackagePurchaseByFilterResponse .Map(dest => dest.UserId, src => src.UserId)
{ .Map(dest => dest.PackageId, src => src.PackageId)
MetaData = MapMeta(src.MetaData), .Map(dest => dest.PurchaseMethod, src => src.PurchaseMethod == null ? null : (PackagePurchaseMethod?)src.PurchaseMethod)
Models = { src.Models?.Select(m => new UserPackagePurchaseModel .Map(dest => dest.PurchasedFrom, src => src.PurchasedFrom != null ? src.PurchasedFrom.ToDateTime() : (DateTime?)null)
{ .Map(dest => dest.PurchasedTo, src => src.PurchasedTo != null ? src.PurchasedTo.ToDateTime() : (DateTime?)null)
Id = m.Id, .Map(dest => dest.MinAmount, src => src.MinAmount)
UserId = m.UserId, .Map(dest => dest.MaxAmount, src => src.MaxAmount);
UserName = m.UserName,
UserMobile = m.UserMobile,
PackageId = m.PackageId,
PackageName = m.PackageName,
PurchaseMethod = (int)m.PurchaseMethod,
PurchasedAt = Timestamp.FromDateTime(DateTime.SpecifyKind(m.PurchasedAt, DateTimeKind.Utc)),
Amount = m.Amount,
OrderId = m.OrderId,
TransactionId = m.TransactionId,
CreatedAt = Timestamp.FromDateTimeOffset(m.Created)
}) ?? [] }
});
config.NewConfig<GetUserPackagePurchaseSummaryRequest, GetUserPackagePurchaseSummaryQuery>() config.NewConfig<AppUp.GetAllUserPackagePurchaseByFilterResponseDto, ProtoUp.GetAllUserPackagePurchaseByFilterResponse>()
.MapWith(src => new GetUserPackagePurchaseSummaryQuery { Filter = MapFilter(src.Filter) }); .Map(dest => dest.MetaData, src => src.MetaData)
.Map(dest => dest.Models, src => src.Models);
config.NewConfig<GetUserPackagePurchaseSummaryResponseDto, GetUserPackagePurchaseSummaryResponse>() config.NewConfig<AppUp.GetAllUserPackagePurchaseByFilterResponseModel, ProtoUp.UserPackagePurchaseModel>()
.MapWith(src => new GetUserPackagePurchaseSummaryResponse .Map(dest => dest.Id, src => src.Id)
{ .Map(dest => dest.UserId, src => src.UserId)
TotalCount = src.TotalCount, .Map(dest => dest.UserName, src => src.UserName)
TotalAmount = src.TotalAmount .Map(dest => dest.UserMobile, src => src.UserMobile)
}); .Map(dest => dest.PackageId, src => src.PackageId)
.Map(dest => dest.PackageName, src => src.PackageName)
.Map(dest => dest.PurchaseMethod, src => (int)src.PurchaseMethod)
.Map(dest => dest.PurchasedAt, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.PurchasedAt, DateTimeKind.Utc)))
.Map(dest => dest.Amount, src => src.Amount)
.Map(dest => dest.OrderId, src => src.OrderId)
.Map(dest => dest.TransactionId, src => src.TransactionId)
.Map(dest => dest.CreatedAt, src => Timestamp.FromDateTimeOffset(src.Created));
config.NewConfig<ProtoUp.GetUserPackagePurchaseSummaryRequest, AppUpSummary.GetUserPackagePurchaseSummaryQuery>()
.Map(dest => dest.Filter, src => src.Filter);
config.NewConfig<AppUpSummary.GetUserPackagePurchaseSummaryResponseDto, ProtoUp.GetUserPackagePurchaseSummaryResponse>()
.Map(dest => dest.TotalCount, src => src.TotalCount)
.Map(dest => dest.TotalAmount, src => src.TotalAmount);
} }
private static AppFilter? MapFilter(ProtoFilter? src)
{
if (src == null) return null;
return new AppFilter
{
UserId = src.HasUserId ? src.UserId : null,
PackageId = src.HasPackageId ? src.PackageId : null,
PurchaseMethod = src.HasPurchaseMethod ? (Domain.Enums.PackagePurchaseMethod)src.PurchaseMethod : null,
PurchasedFrom = src.PurchasedFrom?.ToDateTime(),
PurchasedTo = src.PurchasedTo?.ToDateTime(),
MinAmount = src.HasMinAmount ? src.MinAmount : null,
MaxAmount = src.HasMaxAmount ? src.MaxAmount : null
};
}
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
};
} }