feat: refactor week number handling to use WeekDefinitionId across multiple entities and queries

This commit is contained in:
masoodafar-web
2025-12-19 10:41:22 +03:30
parent 3cb95dc349
commit 8b784101be
83 changed files with 17592 additions and 566 deletions
@@ -1,8 +1,12 @@
using CMSMicroservice.Application.CommissionCQ.Queries.GetUserWeeklyBalances;
using CMSMicroservice.Application.CommissionCQ.Queries.GetAvailableWeeks;
using CMSMicroservice.Application.CommissionCQ.Queries.GetUserCommissionPayouts;
using CMSMicroservice.Application.CommissionCQ.Queries.GetWeekDefinitions;
using CMSMicroservice.Application.Common.Models;
using CMSMicroservice.Protobuf.Protos.Commission;
using Google.Protobuf.WellKnownTypes;
using Mapster;
using AppWeekFilter = CMSMicroservice.Application.CommissionCQ.Queries.GetWeekDefinitions.GetWeekDefinitionsFilter;
namespace CMSMicroservice.WebApi.Common.Mappings;
@@ -24,7 +28,8 @@ public class CommissionProfile : IRegister
// WeekInfo Mapping
config.NewConfig<WeekInfoDto, WeekInfo>()
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId)
.Map(dest => dest.DisplayName, src => src.DisplayName)
.Map(dest => dest.StartDate, src => Timestamp.FromDateTime(src.StartDate.ToUniversalTime()))
.Map(dest => dest.EndDate, src => Timestamp.FromDateTime(src.EndDate.ToUniversalTime()))
.Map(dest => dest.IsCalculated, src => src.IsCalculated)
@@ -40,9 +45,10 @@ public class CommissionProfile : IRegister
// GetUserCommissionPayouts Response Model Mapping
config.NewConfig<GetUserCommissionPayoutsResponseModel, UserCommissionPayoutModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId)
.Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.UserName, src => $"{src.FirstName} {src.LastName}")
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
.Map(dest => dest.WeekDisplayName, src => src.WeekDisplayName)
.Map(dest => dest.WeeklyPoolId, src => src.WeeklyPoolId)
.Map(dest => dest.BalancesEarned, src => src.BalancesEarned)
.Map(dest => dest.ValuePerBalance, src => src.ValuePerBalance)
@@ -59,5 +65,58 @@ public class CommissionProfile : IRegister
? Timestamp.FromDateTime(src.WithdrawnAt.Value.ToUniversalTime())
: null)
.Map(dest => dest.Created, src => Timestamp.FromDateTimeOffset(src.Created));
// GetWeekDefinitions Request Mapping
config.NewConfig<GetWeekDefinitionsRequest, GetWeekDefinitionsQuery>()
.Map(dest => dest.PaginationState, src => src.PaginationState != null
? new PaginationState { PageNumber = src.PaginationState.PageNumber, PageSize = src.PaginationState.PageSize }
: null)
.Map(dest => dest.SortBy, src => src.SortBy)
.Map(dest => dest.Filter, src => src.Filter != null
? new AppWeekFilter
{
SearchText = src.Filter.SearchText,
WeekOrder = src.Filter.WeekOrder,
GregorianWeekNumber = src.Filter.GregorianWeekNumber,
PersianWeekNumber = src.Filter.PersianWeekNumber,
GregorianYear = src.Filter.GregorianYear,
PersianYear = src.Filter.PersianYear,
IsActive = src.Filter.IsActive
}
: null);
// GetWeekDefinitions Response Mapping
config.NewConfig<GetWeekDefinitionsResponseDto, GetWeekDefinitionsResponse>()
.Map(dest => dest.TotalCount, src => src.TotalCount)
.Map(dest => dest.Data, src => src.Data);
// WeekDefinitionItem Mapping
config.NewConfig<WeekDefinitionItemDto, WeekDefinitionItem>()
.Map(dest => dest.WeekOrder, src => src.WeekOrder)
.Map(dest => dest.DisplayName, src => src.DisplayName)
.Map(dest => dest.GregorianWeekNumber, src => src.GregorianWeekNumber)
.Map(dest => dest.PersianWeekNumber, src => src.PersianWeekNumber)
.Map(dest => dest.StartDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.StartDate, DateTimeKind.Utc)))
.Map(dest => dest.EndDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.EndDate, DateTimeKind.Utc)))
.Map(dest => dest.GregorianYear, src => src.GregorianYear)
.Map(dest => dest.PersianYear, src => src.PersianYear)
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.IsCurrentWeek, src => src.IsCurrentWeek);
// GetUserWeeklyBalances Response Model Mapping
config.NewConfig<GetUserWeeklyBalancesResponseModel, UserWeeklyBalanceModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.UserId, src => src.UserId)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId)
.Map(dest => dest.WeekDisplayName, src => src.WeekDisplayName)
.Map(dest => dest.LeftLegBalances, src => src.LeftLegBalances)
.Map(dest => dest.RightLegBalances, src => src.RightLegBalances)
.Map(dest => dest.TotalBalances, src => src.TotalBalances)
.Map(dest => dest.WeeklyPoolContribution, src => src.WeeklyPoolContribution)
.Map(dest => dest.CalculatedAt, src => src.CalculatedAt.HasValue
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.CalculatedAt.Value, DateTimeKind.Utc))
: null)
.Map(dest => dest.IsExpired, src => src.IsExpired)
.Map(dest => dest.Created, src => Timestamp.FromDateTimeOffset(src.Created));
}
}