feat: add GetWeekDefinitions RPC and corresponding query handler for week retrieval

This commit is contained in:
masoodafar-web
2025-12-20 03:30:22 +03:30
parent 0cca79ebfe
commit 565a9605dc
37 changed files with 321 additions and 69 deletions
@@ -1,5 +1,6 @@
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;
@@ -13,13 +14,13 @@ public class CommissionProfile : IRegister
config.NewConfig<ProtoDto.GetMyCommissionPayoutsRequest, GetMyCommissionPayoutsQuery>()
.Map(dest => dest.PageNumber, src => src.PageNumber)
.Map(dest => dest.PageSize, src => src.PageSize)
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
.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>()
.Map(dest => dest.PageNumber, src => src.PageNumber)
.Map(dest => dest.PageSize, src => src.PageSize)
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
.Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId != null ? (long?)src.WeekDefinitionId.Value : null)
.Map(dest => dest.OnlyActive, src => src.OnlyActive);
// Response mappings
@@ -29,8 +30,8 @@ public class CommissionProfile : IRegister
config.NewConfig<CommissionPayoutDto, ProtoDto.CommissionPayoutModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
.Map(dest => dest.WeekLabel, src => src.WeekLabel)
.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)
@@ -48,12 +49,38 @@ public class CommissionProfile : IRegister
config.NewConfig<WeeklyBalanceItemDto, ProtoDto.WeeklyBalanceModel>()
.Map(dest => dest.Id, src => src.Id)
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
.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.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);
}
}
@@ -44,7 +44,7 @@ public class NetworkMembershipProfile : IRegister
.Map(dest => dest.IsActive, src => src.IsActive)
.Map(dest => dest.JoinedAt, src => src.JoinedAt.HasValue ? Timestamp.FromDateTime(DateTime.SpecifyKind(src.JoinedAt.Value, DateTimeKind.Utc)) : null)
.Map(dest => dest.IsClubActive, src => src.IsClubActive)
.Map(dest => dest.ActivationWeekNumber, src => src.ActivationWeekNumber);
.Map(dest => dest.ActivationWeekDefinitionId, src => src.ActivationWeekDefinitionId);
// Response mappings - Statistics
config.NewConfig<GetMyNetworkStatisticsResponseDto, ProtoDto.GetMyNetworkStatisticsResponse>()
@@ -1,6 +1,7 @@
using FrontOffice.BFF.WebApi.Common.Services;
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyCommissionPayouts;
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyWeeklyBalances;
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetWeekDefinitions;
using FrontOffice.BFF.Commission.Protobuf.Protos.Commission;
namespace FrontOffice.BFF.WebApi.Services;
@@ -32,4 +33,12 @@ public class CommissionService : CommissionContract.CommissionContractBase
{
return await _dispatchRequestToCQRS.Handle<GetMyWeeklyBalancesRequest, GetMyWeeklyBalancesQuery, GetMyWeeklyBalancesResponse>(request, context);
}
/// <summary>
/// دریافت لیست هفته‌ها برای dropdown
/// </summary>
public override async Task<GetWeekDefinitionsResponse> GetWeekDefinitions(GetWeekDefinitionsRequest request, ServerCallContext context)
{
return await _dispatchRequestToCQRS.Handle<GetWeekDefinitionsRequest, GetWeekDefinitionsQuery, GetWeekDefinitionsResponse>(request, context);
}
}
+2 -2
View File
@@ -10,9 +10,9 @@
}
},
"GrpcChannelOptions": {
// "CMSMSAddress": "http://cms-svc",
"CMSMSAddress": "http://cms-svc",
// "CMSMSAddress": "https://cms.foursat.afrino.co",
"CMSMSAddress": "https://localhost:32846/",
// "CMSMSAddress": "https://localhost:32846/",
"PYMSMSAddress": "https://ipg.afrino.co"
},
"CmsSignalR": {