feat: Implement GetMyWeeklyBalances query and handler, enhance ClubMembership service with JWT userId handling

This commit is contained in:
masoodafar-web
2026-02-08 00:24:59 +03:30
parent 9185aa227d
commit f64b6be7da
8 changed files with 270 additions and 3 deletions
@@ -1,4 +1,5 @@
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetAllClubMemberships;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubMembership;
using CMSMicroservice.Application.ClubMembershipCQ.Queries.GetClubStatistics;
using CMSMicroservice.Protobuf.Protos.ClubMembership;
using Google.Protobuf.WellKnownTypes;
@@ -11,6 +12,37 @@ public class ClubMembershipProfile : IRegister
{
public void Register(TypeAdapterConfig config)
{
// =====================
// GetClubMembership
// =====================
// GetClubMembershipRequest -> GetClubMembershipQuery
config.NewConfig<GetClubMembershipRequest, GetClubMembershipQuery>()
.MapWith(src => new GetClubMembershipQuery
{
UserId = src.UserId
});
// ClubMembershipDto -> GetClubMembershipResponse
config.NewConfig<ClubMembershipDto, GetClubMembershipResponse>()
.MapWith(src => new GetClubMembershipResponse
{
Id = src.Id,
UserId = src.UserId,
PackageId = 0, // Not available
PackageName = string.Empty, // Not available
ActivationCode = string.Empty, // Not available
ActivatedAt = src.ActivatedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.ActivatedAt.Value, DateTimeKind.Utc))
: null,
ExpiresAt = null, // Not available
IsActive = src.IsActive,
Created = Timestamp.FromDateTimeOffset(src.Created),
Features = { }, // Empty for now
Status = src.IsActive ? "Active" : "Inactive",
DaysRemaining = 0 // Calculate if ExpiresAt is available
});
// =====================
// GetAllClubMemberships
// =====================
@@ -1,4 +1,6 @@
using System.Linq;
using CMSMicroservice.Application.CommissionCQ.Queries.GetUserWeeklyBalances;
using CMSMicroservice.Application.CommissionCQ.Queries.GetMyWeeklyBalances;
using CMSMicroservice.Application.CommissionCQ.Queries.GetAvailableWeeks;
using CMSMicroservice.Application.CommissionCQ.Queries.GetUserCommissionPayouts;
using CMSMicroservice.Application.CommissionCQ.Queries.GetMyCommissionPayouts;
@@ -159,5 +161,44 @@ public class CommissionProfile : IRegister
? Timestamp.FromDateTime(src.CalculatedDate.Value.ToUniversalTime())
: null)
.Map(dest => dest.DatePersian, src => src.DatePersian);
// GetMyWeeklyBalances Request Mapping
config.NewConfig<GetMyWeeklyBalancesRequest, GetMyWeeklyBalancesQuery>()
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId != null ? src.WeekDefinitionId.Value : (long?)null)
.Map(dest => dest.OnlyActive, src => src.OnlyActive)
.Map(dest => dest.PaginationState, src => new PaginationState
{
PageNumber = src.PageNumber > 0 ? src.PageNumber : 1,
PageSize = src.PageSize > 0 ? src.PageSize : 10
});
// GetMyWeeklyBalances Response Mapping
config.NewConfig<GetUserWeeklyBalancesResponseDto, GetMyWeeklyBalancesResponse>()
.Map(dest => dest.MetaData, src => src.MetaData != null
? new CustomerMetaData { TotalCount = src.MetaData.TotalCount }
: new CustomerMetaData())
.Map(dest => dest.Balances, src => src.Models)
.Map(dest => dest.TotalLeftBalances, src => src.Models.Sum(m => m.LeftLegTotal))
.Map(dest => dest.TotalRightBalances, src => src.Models.Sum(m => m.RightLegTotal))
.Map(dest => dest.WeakerLeg, src =>
src.Models.Sum(m => m.LeftLegTotal) < src.Models.Sum(m => m.RightLegTotal)
? "Left"
: src.Models.Sum(m => m.LeftLegTotal) > src.Models.Sum(m => m.RightLegTotal)
? "Right"
: "Equal");
// CustomerWeeklyBalanceModel Mapping
config.NewConfig<GetUserWeeklyBalancesResponseModel, CustomerWeeklyBalanceModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId)
.Map(dest => dest.WeekDisplayName, src => src.WeekDisplayName)
.Map(dest => dest.LeftLegBalances, src => src.LeftLegTotal)
.Map(dest => dest.RightLegBalances, src => src.RightLegTotal)
.Map(dest => dest.TotalBalances, src => src.TotalBalances)
.Map(dest => dest.WeeklyPoolContribution, src => src.WeeklyPoolContribution)
.Map(dest => dest.IsExpired, src => src.IsExpired)
.Map(dest => dest.CalculatedAt, src => src.CalculatedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.CalculatedAt.Value, DateTimeKind.Utc))
: null);
}
}