Files
FrontOffice.BFF/src/FrontOffice.BFF.WebApi/Common/Mappings/CommissionProfile.cs
T
masoodafar-web a8a3d246da
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 1m55s
feat: enhance WeeklyBalanceModel with carryover and new members fields; update mappings and response DTO
2025-12-28 23:57:26 +03:30

93 lines
5.5 KiB
C#

using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyCommissionPayouts;
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyWeeklyBalances;
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetWeekDefinitions;
using Google.Protobuf.WellKnownTypes;
using ProtoDto = FrontOffice.BFF.Commission.Protobuf.Protos.Commission;
namespace FrontOffice.BFF.WebApi.Common.Mappings;
public class CommissionProfile : IRegister
{
void IRegister.Register(TypeAdapterConfig config)
{
// Request -> Query mappings
config.NewConfig<ProtoDto.GetMyCommissionPayoutsRequest, GetMyCommissionPayoutsQuery>()
.Map(dest => dest.PageNumber, src => src.PageNumber)
.Map(dest => dest.PageSize, src => src.PageSize)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId != null ? (long?)src.WeekDefinitionId.Value : null)
.Map(dest => dest.Status, src => src.Status);
config.NewConfig<ProtoDto.GetMyWeeklyBalancesRequest, GetMyWeeklyBalancesQuery>()
.MapWith(src => new GetMyWeeklyBalancesQuery
{
PageNumber = src.PageNumber,
PageSize = src.PageSize,
WeekDefinitionId = src.WeekDefinitionId != null ? src.WeekDefinitionId.Value : null,
OnlyActive = src.OnlyActive
});
// Response mappings
config.NewConfig<GetMyCommissionPayoutsResponseDto, ProtoDto.GetMyCommissionPayoutsResponse>()
.Map(dest => dest.MetaData, src => new ProtoDto.MetaData { TotalCount = src.TotalCount })
.Map(dest => dest.Payouts, src => src.Payouts);
config.NewConfig<CommissionPayoutDto, ProtoDto.CommissionPayoutModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId)
.Map(dest => dest.WeekDisplayName, src => src.WeekDisplayName)
.Map(dest => dest.BalancesEarned, src => src.BalancesEarned)
.Map(dest => dest.TotalAmount, src => src.TotalAmount)
.Map(dest => dest.AmountFormatted, src => src.AmountFormatted)
.Map(dest => dest.Status, src => src.Status)
.Map(dest => dest.CalculatedDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.CalculatedDate, DateTimeKind.Utc)))
.Map(dest => dest.DatePersian, src => src.DatePersian);
config.NewConfig<GetMyWeeklyBalancesResponseDto, ProtoDto.GetMyWeeklyBalancesResponse>()
.Map(dest => dest.MetaData, src => new ProtoDto.MetaData { TotalCount = src.TotalCount })
.Map(dest => dest.Balances, src => src.Balances)
.Map(dest => dest.TotalLeftBalances, src => src.TotalLeftBalances)
.Map(dest => dest.TotalRightBalances, src => src.TotalRightBalances)
.Map(dest => dest.WeakerLeg, src => src.WeakerLeg);
config.NewConfig<WeeklyBalanceItemDto, ProtoDto.WeeklyBalanceModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId)
.Map(dest => dest.WeekDisplayName, src => src.WeekLabel)
.Map(dest => dest.LeftLegBalances, src => src.LeftLegBalances)
.Map(dest => dest.RightLegBalances, src => src.RightLegBalances)
.Map(dest => dest.LeftLegCarryover, src => src.LeftLegCarryover)
.Map(dest => dest.RightLegCarryover, src => src.RightLegCarryover)
.Map(dest => dest.LeftLegNewMembers, src => src.LeftLegNewMembers)
.Map(dest => dest.RightLegNewMembers, src => src.RightLegNewMembers)
.Map(dest => dest.TotalBalances, src => src.TotalBalances)
.Map(dest => dest.WeeklyPoolContribution, src => src.WeeklyPoolContribution)
.Map(dest => dest.IsExpired, src => src.IsExpired)
.Map(dest => dest.DatePersian, src => src.DatePersian);
// GetWeekDefinitions mappings
config.NewConfig<ProtoDto.GetWeekDefinitionsRequest, GetWeekDefinitionsQuery>()
.Map(dest => dest.SearchText, src => src.SearchText)
.Map(dest => dest.PageNumber, src => src.PageNumber > 0 ? src.PageNumber : 1)
.Map(dest => dest.PageSize, src => src.PageSize > 0 ? src.PageSize : 100)
.Map(dest => dest.GregorianYear, src => src.GregorianYear)
.Map(dest => dest.PersianYear, src => src.PersianYear)
.Map(dest => dest.IsActive, src => src.IsActive);
config.NewConfig<GetWeekDefinitionsResponseDto, ProtoDto.GetWeekDefinitionsResponse>()
.Map(dest => dest.TotalCount, src => src.TotalCount)
.Map(dest => dest.Data, src => src.Data);
config.NewConfig<WeekDefinitionDto, ProtoDto.WeekDefinitionModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.WeekOrder, src => src.WeekOrder)
.Map(dest => dest.DisplayName, src => src.DisplayName)
.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)
.Map(dest => dest.StartDatePersian, src => src.StartDatePersian)
.Map(dest => dest.EndDatePersian, src => src.EndDatePersian);
}
}