From 565a9605dcd7b0db6536f5ada933717ed235fbdd Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sat, 20 Dec 2025 03:30:22 +0330 Subject: [PATCH] feat: add GetWeekDefinitions RPC and corresponding query handler for week retrieval --- .../GetMyCommissionPayoutsQuery.cs | 4 +- .../GetMyCommissionPayoutsQueryHandler.cs | 8 +- .../GetMyCommissionPayoutsResponseDto.cs | 8 +- .../GetMyWeeklyBalancesQuery.cs | 4 +- .../GetMyWeeklyBalancesQueryHandler.cs | 7 +- .../GetMyWeeklyBalancesResponseDto.cs | 9 ++- .../GetWeekDefinitionsQuery.cs | 25 ++++++ .../GetWeekDefinitionsQueryHandler.cs | 78 +++++++++++++++++++ .../GetWeekDefinitionsResponseDto.cs | 58 ++++++++++++++ .../GetMyNetworkTreeQueryHandler.cs | 2 +- .../GetMyNetworkTreeResponseDto.cs | 2 +- .../GetSubordinateTreeQueryHandler.cs | 2 +- .../GetUserWithdrawalsQueryHandler.cs | 3 +- .../GetUserWithdrawalsResponseDto.cs | 3 +- .../FrontOffice.BFF.Domain.csproj | 10 +-- .../Common/Mappings/CommissionProfile.cs | 37 +++++++-- .../Mappings/NetworkMembershipProfile.cs | 2 +- .../Services/CommissionService.cs | 9 +++ src/FrontOffice.BFF.WebApi/appsettings.json | 4 +- .../FrontOffice.BFF.Category.Protobuf.csproj | 2 +- .../FrontOffice.BFF.City.Protobuf.csproj | 2 +- ...tOffice.BFF.ClubMembership.Protobuf.csproj | 2 +- ...FrontOffice.BFF.Commission.Protobuf.csproj | 2 +- .../Protos/commission.proto | 70 ++++++++++++++--- ...ntOffice.BFF.Configuration.Protobuf.csproj | 2 +- ...ontOffice.BFF.DiscountShop.Protobuf.csproj | 2 +- ...fice.BFF.NetworkMembership.Protobuf.csproj | 2 +- .../Protos/networkmembership.proto | 2 +- .../FrontOffice.BFF.Package.Protobuf.csproj | 2 +- .../FrontOffice.BFF.Products.Protobuf.csproj | 2 +- ...rontOffice.BFF.ShopingCart.Protobuf.csproj | 2 +- ...rontOffice.BFF.Transaction.Protobuf.csproj | 2 +- .../FrontOffice.BFF.User.Protobuf.csproj | 2 +- ...rontOffice.BFF.UserAddress.Protobuf.csproj | 2 +- .../FrontOffice.BFF.UserOrder.Protobuf.csproj | 2 +- ...FrontOffice.BFF.UserWallet.Protobuf.csproj | 2 +- .../Protos/userwallet.proto | 13 ++-- 37 files changed, 321 insertions(+), 69 deletions(-) create mode 100644 src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQuery.cs create mode 100644 src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQueryHandler.cs create mode 100644 src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsResponseDto.cs diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs index 576de8c..accdd07 100644 --- a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs @@ -6,9 +6,9 @@ namespace FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyCommissionPayout public record GetMyCommissionPayoutsQuery : IRequest { /// - /// شماره هفته در فرمت ISO (مثال: "2025-W48"، null = همه) + /// شناسه تعریف هفته (null = همه) /// - public string? WeekNumber { get; init; } + public long? WeekDefinitionId { get; init; } /// /// وضعیت: 0=Pending, 1=Calculated, 2=Paid, 3=Withdrawn (null = همه) diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs index 0cd6819..4f36533 100644 --- a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs @@ -28,8 +28,8 @@ public class GetMyCommissionPayoutsQueryHandler : IRequestHandler new CommissionPayoutDto { Id = p.Id, - WeekNumber = p.WeekNumber, - WeekLabel = $"هفته {p.WeekNumber}", + WeekDefinitionId = p.WeekDefinitionId, + WeekDisplayName = p.WeekDisplayName, BalancesEarned = (int)p.BalancesEarned, TotalAmount = p.TotalAmount, AmountFormatted = FormatCurrency(p.TotalAmount), diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsResponseDto.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsResponseDto.cs index aa554f8..fae5b3d 100644 --- a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsResponseDto.cs +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsResponseDto.cs @@ -16,14 +16,14 @@ public class CommissionPayoutDto public long Id { get; set; } /// - /// شماره هفته (e.g., "2024-W45") + /// شناسه تعریف هفته /// - public string WeekNumber { get; set; } = string.Empty; + public long WeekDefinitionId { get; set; } /// - /// لیبل هفته (هفته 45 - آذر 1403) + /// نام نمایشی هفته (هفته 45 - آذر 1403) /// - public string WeekLabel { get; set; } = string.Empty; + public string WeekDisplayName { get; set; } = string.Empty; /// /// تعداد Balance کسب شده diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQuery.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQuery.cs index bc5eb0b..1f3a78d 100644 --- a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQuery.cs +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQuery.cs @@ -6,9 +6,9 @@ namespace FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyWeeklyBalances; public record GetMyWeeklyBalancesQuery : IRequest { /// - /// شماره هفته در فرمت ISO (مثال: "2025-W48"، null = هفته جاری) + /// شناسه تعریف هفته (null = همه هفته‌ها) /// - public string? WeekNumber { get; init; } + public long? WeekDefinitionId { get; init; } /// /// فقط تعادل‌های فعال (غیر منقضی) diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs index 4b7e8f7..dac4168 100644 --- a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs @@ -29,8 +29,8 @@ public class GetMyWeeklyBalancesQueryHandler : IRequestHandler0) + cmsRequest.WeekDefinitionId = request.WeekDefinitionId; var response = await _context.Commission.GetUserWeeklyBalancesAsync(cmsRequest, cancellationToken: cancellationToken); @@ -38,7 +38,8 @@ public class GetMyWeeklyBalancesQueryHandler : IRequestHandler new WeeklyBalanceItemDto { Id = b.Id, - WeekNumber = b.WeekNumber, + WeekDefinitionId = b.WeekDefinitionId, + WeekLabel = b.WeekDisplayName, LeftLegBalances = b.LeftLegBalances, RightLegBalances = b.RightLegBalances, TotalBalances = b.TotalBalances, diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesResponseDto.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesResponseDto.cs index f8ba6f0..b8bd26c 100644 --- a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesResponseDto.cs +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesResponseDto.cs @@ -46,9 +46,14 @@ public class WeeklyBalanceItemDto public long Id { get; set; } /// - /// شماره هفته (فرمت: "2025-W48") + /// شناسه تعریف هفته /// - public string WeekNumber { get; set; } = string.Empty; + public long WeekDefinitionId { get; set; } + + /// + /// برچسب هفته (مثال: "هفته اول") + /// + public string WeekLabel { get; set; } = string.Empty; /// /// تعادل پای چپ diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQuery.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQuery.cs new file mode 100644 index 0000000..a99ec1d --- /dev/null +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQuery.cs @@ -0,0 +1,25 @@ +namespace FrontOffice.BFF.Application.CommissionCQ.Queries.GetWeekDefinitions; + +/// +/// دریافت لیست هفته‌ها برای dropdown +/// +public record GetWeekDefinitionsQuery : IRequest +{ + //جستجوی متنی روی DisplayName + public string? SearchText { get; init; } + + //شماره صفحه + public int PageNumber { get; init; } = 1; + + //تعداد در صفحه + public int PageSize { get; init; } = 100; + + //سال میلادی + public int? GregorianYear { get; init; } + + //سال شمسی + public int? PersianYear { get; init; } + + //فقط هفته‌های فعال + public bool? IsActive { get; init; } +} diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQueryHandler.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQueryHandler.cs new file mode 100644 index 0000000..48ca81d --- /dev/null +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsQueryHandler.cs @@ -0,0 +1,78 @@ +using CMSMicroservice.Protobuf.Protos.Commission; +using FrontOffice.BFF.Application.Common.Models; + +namespace FrontOffice.BFF.Application.CommissionCQ.Queries.GetWeekDefinitions; + +public class GetWeekDefinitionsQueryHandler : IRequestHandler +{ + private readonly IApplicationContractContext _context; + + public GetWeekDefinitionsQueryHandler(IApplicationContractContext context) + { + _context = context; + } + + public async Task Handle(GetWeekDefinitionsQuery request, CancellationToken cancellationToken) + { + // ساخت درخواست به CMS + var cmsRequest = new GetWeekDefinitionsRequest + { + PaginationState = new CMSMicroservice.Protobuf.Protos.PaginationState + { + PageNumber = request.PageNumber, + PageSize = request.PageSize + } + }; + + // اعمال فیلتر + var filter = new GetWeekDefinitionsFilter(); + + if (!string.IsNullOrWhiteSpace(request.SearchText)) + filter.SearchText = request.SearchText; + + if (request.GregorianYear.HasValue) + filter.GregorianYear = request.GregorianYear.Value; + + if (request.PersianYear.HasValue) + filter.PersianYear = request.PersianYear.Value; + + if (request.IsActive.HasValue) + filter.IsActive = request.IsActive.Value; + + cmsRequest.Filter = filter; + + // فراخوانی CMS + var response = await _context.Commission.GetWeekDefinitionsAsync(cmsRequest, cancellationToken: cancellationToken); + + // تبدیل به DTO + var weeks = response.Data.Select(w => new WeekDefinitionDto + { + Id = w.Id, + WeekOrder = w.WeekOrder, + DisplayName = w.DisplayName, + GregorianWeekNumber = w.GregorianWeekNumber, + PersianWeekNumber = w.PersianWeekNumber, + StartDate = w.StartDate?.ToDateTime() ?? DateTime.MinValue, + EndDate = w.EndDate?.ToDateTime() ?? DateTime.MinValue, + GregorianYear = w.GregorianYear, + PersianYear = w.PersianYear, + IsActive = w.IsActive, + IsCurrentWeek = w.IsCurrentWeek, + StartDatePersian = FormatPersianDate(w.StartDate?.ToDateTime()), + EndDatePersian = FormatPersianDate(w.EndDate?.ToDateTime()) + }).ToList(); + + return new GetWeekDefinitionsResponseDto + { + Data = weeks, + TotalCount = response.TotalCount + }; + } + + private static string FormatPersianDate(DateTime? date) + { + if (!date.HasValue) return string.Empty; + // TODO: استفاده از PersianCalendar + return date.Value.ToString("yyyy/MM/dd"); + } +} diff --git a/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsResponseDto.cs b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsResponseDto.cs new file mode 100644 index 0000000..0bcf278 --- /dev/null +++ b/src/FrontOffice.BFF.Application/CommissionCQ/Queries/GetWeekDefinitions/GetWeekDefinitionsResponseDto.cs @@ -0,0 +1,58 @@ +namespace FrontOffice.BFF.Application.CommissionCQ.Queries.GetWeekDefinitions; + +/// +/// پاسخ لیست هفته‌ها +/// +public class GetWeekDefinitionsResponseDto +{ + //لیست هفته‌ها + public List Data { get; set; } = new(); + + //تعداد کل + public int TotalCount { get; set; } +} + +/// +/// آیتم هفته برای dropdown +/// +public class WeekDefinitionDto +{ + //شناسه تعریف هفته + public long Id { get; set; } + + //شماره ترتیب هفته (1, 2, 3, ...) + public int WeekOrder { get; set; } + + //نام نمایشی هفته (هفته یکم، هفته دوم، ...) + public string DisplayName { get; set; } = string.Empty; + + //شماره هفته میلادی (2025-W46) + public string GregorianWeekNumber { get; set; } = string.Empty; + + //شماره هفته شمسی (1404-W35) + public string PersianWeekNumber { get; set; } = string.Empty; + + //تاریخ شروع هفته + public DateTime StartDate { get; set; } + + //تاریخ پایان هفته + public DateTime EndDate { get; set; } + + //سال میلادی + public int GregorianYear { get; set; } + + //سال شمسی + public int PersianYear { get; set; } + + //فعال بودن + public bool IsActive { get; set; } + + //آیا هفته جاری است؟ + public bool IsCurrentWeek { get; set; } + + //تاریخ شروع به شمسی + public string StartDatePersian { get; set; } = string.Empty; + + //تاریخ پایان به شمسی + public string EndDatePersian { get; set; } = string.Empty; +} diff --git a/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetMyNetworkTree/GetMyNetworkTreeQueryHandler.cs b/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetMyNetworkTree/GetMyNetworkTreeQueryHandler.cs index 7a5a456..8d99704 100644 --- a/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetMyNetworkTree/GetMyNetworkTreeQueryHandler.cs +++ b/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetMyNetworkTree/GetMyNetworkTreeQueryHandler.cs @@ -84,7 +84,7 @@ public class GetMyNetworkTreeQueryHandler : IRequestHandler /// شماره هفته فعال‌سازی /// - public string? ActivationWeekNumber { get; set; } + public long? ActivationWeekDefinitionId { get; set; } } diff --git a/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetSubordinateTree/GetSubordinateTreeQueryHandler.cs b/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetSubordinateTree/GetSubordinateTreeQueryHandler.cs index 2bfa377..c1eaf6a 100644 --- a/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetSubordinateTree/GetSubordinateTreeQueryHandler.cs +++ b/src/FrontOffice.BFF.Application/NetworkMembershipCQ/Queries/GetSubordinateTree/GetSubordinateTreeQueryHandler.cs @@ -92,7 +92,7 @@ public class GetSubordinateTreeQueryHandler : IRequestHandler new UserWithdrawalModel { Id = m.Id, - WeekNumber = m.WeekNumber, + WeekDefinitionId = m.WeekDefinitionId, + WeekDisplayName = m.WeekDisplayName, TotalAmount = m.TotalAmount, Status = m.Status, WithdrawalMethod = m.WithdrawalMethod, // int? type - no .Value needed diff --git a/src/FrontOffice.BFF.Application/UserWalletCQ/Queries/GetUserWithdrawals/GetUserWithdrawalsResponseDto.cs b/src/FrontOffice.BFF.Application/UserWalletCQ/Queries/GetUserWithdrawals/GetUserWithdrawalsResponseDto.cs index 1137290..31a79e5 100644 --- a/src/FrontOffice.BFF.Application/UserWalletCQ/Queries/GetUserWithdrawals/GetUserWithdrawalsResponseDto.cs +++ b/src/FrontOffice.BFF.Application/UserWalletCQ/Queries/GetUserWithdrawals/GetUserWithdrawalsResponseDto.cs @@ -8,7 +8,8 @@ public class GetUserWithdrawalsResponseDto public class UserWithdrawalModel { public long Id { get; set; } - public string WeekNumber { get; set; } = string.Empty; + public long WeekDefinitionId { get; set; } + public string WeekDisplayName { get; set; } = string.Empty; public long TotalAmount { get; set; } public int Status { get; set; } public int? WithdrawalMethod { get; set; } diff --git a/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj b/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj index 0bea543..3e4d5e7 100644 --- a/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj +++ b/src/FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj @@ -7,7 +7,7 @@ - + @@ -16,9 +16,9 @@ - - - - + + + + diff --git a/src/FrontOffice.BFF.WebApi/Common/Mappings/CommissionProfile.cs b/src/FrontOffice.BFF.WebApi/Common/Mappings/CommissionProfile.cs index 46cd8c1..df2a9eb 100644 --- a/src/FrontOffice.BFF.WebApi/Common/Mappings/CommissionProfile.cs +++ b/src/FrontOffice.BFF.WebApi/Common/Mappings/CommissionProfile.cs @@ -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() .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() .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() .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() .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() + .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() + .Map(dest => dest.TotalCount, src => src.TotalCount) + .Map(dest => dest.Data, src => src.Data); + config.NewConfig() + .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); } } diff --git a/src/FrontOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs b/src/FrontOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs index 9ba00de..ef366f5 100644 --- a/src/FrontOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs +++ b/src/FrontOffice.BFF.WebApi/Common/Mappings/NetworkMembershipProfile.cs @@ -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() diff --git a/src/FrontOffice.BFF.WebApi/Services/CommissionService.cs b/src/FrontOffice.BFF.WebApi/Services/CommissionService.cs index 4a19c5d..9b415a0 100644 --- a/src/FrontOffice.BFF.WebApi/Services/CommissionService.cs +++ b/src/FrontOffice.BFF.WebApi/Services/CommissionService.cs @@ -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(request, context); } + + /// + /// دریافت لیست هفته‌ها برای dropdown + /// + public override async Task GetWeekDefinitions(GetWeekDefinitionsRequest request, ServerCallContext context) + { + return await _dispatchRequestToCQRS.Handle(request, context); + } } diff --git a/src/FrontOffice.BFF.WebApi/appsettings.json b/src/FrontOffice.BFF.WebApi/appsettings.json index 54ed769..009e4ff 100644 --- a/src/FrontOffice.BFF.WebApi/appsettings.json +++ b/src/FrontOffice.BFF.WebApi/appsettings.json @@ -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": { diff --git a/src/Protobufs/FrontOffice.BFF.Category.Protobuf/FrontOffice.BFF.Category.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.Category.Protobuf/FrontOffice.BFF.Category.Protobuf.csproj index 372d4cc..e8a0b5c 100644 --- a/src/Protobufs/FrontOffice.BFF.Category.Protobuf/FrontOffice.BFF.Category.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.Category.Protobuf/FrontOffice.BFF.Category.Protobuf.csproj @@ -3,7 +3,7 @@ net7.0 enable enable - 0.0.13 + 0.0.14 Foursat.FrontOffice.BFF.Category.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.City.Protobuf/FrontOffice.BFF.City.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.City.Protobuf/FrontOffice.BFF.City.Protobuf.csproj index 3251377..9e59572 100644 --- a/src/Protobufs/FrontOffice.BFF.City.Protobuf/FrontOffice.BFF.City.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.City.Protobuf/FrontOffice.BFF.City.Protobuf.csproj @@ -3,7 +3,7 @@ net7.0 enable enable - 0.0.1 + 0.0.2 Foursat.FrontOffice.BFF.City.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/FrontOffice.BFF.ClubMembership.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/FrontOffice.BFF.ClubMembership.Protobuf.csproj index 69eb01c..8577458 100644 --- a/src/Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/FrontOffice.BFF.ClubMembership.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/FrontOffice.BFF.ClubMembership.Protobuf.csproj @@ -3,7 +3,7 @@ net9.0 enable enable - 0.0.3 + 0.0.4 Foursat.FrontOffice.BFF.ClubMembership.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/FrontOffice.BFF.Commission.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/FrontOffice.BFF.Commission.Protobuf.csproj index 5efe529..2412af6 100644 --- a/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/FrontOffice.BFF.Commission.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/FrontOffice.BFF.Commission.Protobuf.csproj @@ -3,7 +3,7 @@ net9.0 enable enable - 0.0.2 + 0.0.3 Foursat.FrontOffice.BFF.Commission.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/Protos/commission.proto b/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/Protos/commission.proto index 1cabdd1..dd5cec1 100644 --- a/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/Protos/commission.proto +++ b/src/Protobufs/FrontOffice.BFF.Commission.Protobuf/Protos/commission.proto @@ -25,6 +25,13 @@ service CommissionContract get: "/Commission/MyWeeklyBalances" }; }; + + // دریافت لیست هفته‌ها برای dropdown + rpc GetWeekDefinitions(GetWeekDefinitionsRequest) returns (GetWeekDefinitionsResponse){ + option (google.api.http) = { + get: "/Commission/WeekDefinitions" + }; + }; } // ============ MetaData ============ @@ -38,7 +45,7 @@ message GetMyCommissionPayoutsRequest { int32 page_number = 1; int32 page_size = 2; - google.protobuf.StringValue week_number = 3; + google.protobuf.Int64Value week_definition_id = 3; google.protobuf.Int32Value status = 4; // 0=Pending, 1=Calculated, 2=Paid, 3=Withdrawn } @@ -51,8 +58,8 @@ message GetMyCommissionPayoutsResponse message CommissionPayoutModel { int64 id = 1; - string week_number = 2; - string week_label = 3; + int64 week_definition_id = 2; + string week_display_name = 3; int32 balances_earned = 4; int64 total_amount = 5; string amount_formatted = 6; @@ -67,7 +74,7 @@ message GetMyWeeklyBalancesRequest { int32 page_number = 1; int32 page_size = 2; - google.protobuf.StringValue week_number = 3; + google.protobuf.Int64Value week_definition_id = 3; bool only_active = 4; } @@ -83,12 +90,51 @@ message GetMyWeeklyBalancesResponse message WeeklyBalanceModel { int64 id = 1; - string week_number = 2; - int32 left_leg_balances = 3; - int32 right_leg_balances = 4; - int32 total_balances = 5; - int64 weekly_pool_contribution = 6; - bool is_expired = 7; - google.protobuf.Timestamp calculated_at = 8; - string date_persian = 9; + int64 week_definition_id = 2; + string week_display_name = 3; + int32 left_leg_balances = 4; + int32 right_leg_balances = 5; + int32 total_balances = 6; + int64 weekly_pool_contribution = 7; + bool is_expired = 8; + google.protobuf.Timestamp calculated_at = 9; + string date_persian = 10; +} + +// ============ GetWeekDefinitions ============ +message GetWeekDefinitionsRequest +{ + //جستجوی متنی روی DisplayName + google.protobuf.StringValue search_text = 1; + //شماره صفحه + int32 page_number = 2; + //تعداد در صفحه + int32 page_size = 3; + //سال میلادی + google.protobuf.Int32Value gregorian_year = 4; + //سال شمسی + google.protobuf.Int32Value persian_year = 5; + //فقط هفته‌های فعال + google.protobuf.BoolValue is_active = 6; +} + +message GetWeekDefinitionsResponse +{ + repeated WeekDefinitionModel data = 1; + int32 total_count = 2; +} + +message WeekDefinitionModel +{ + int64 id = 1; + int32 week_order = 2; + string display_name = 3; + google.protobuf.Timestamp start_date = 4; + google.protobuf.Timestamp end_date = 5; + int32 gregorian_year = 6; + int32 persian_year = 7; + bool is_active = 8; + bool is_current_week = 9; + string start_date_persian = 10; + string end_date_persian = 11; } diff --git a/src/Protobufs/FrontOffice.BFF.Configuration.Protobuf/FrontOffice.BFF.Configuration.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.Configuration.Protobuf/FrontOffice.BFF.Configuration.Protobuf.csproj index c23f9ad..fd87777 100644 --- a/src/Protobufs/FrontOffice.BFF.Configuration.Protobuf/FrontOffice.BFF.Configuration.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.Configuration.Protobuf/FrontOffice.BFF.Configuration.Protobuf.csproj @@ -4,7 +4,7 @@ net9.0 enable enable - 0.0.1 + 0.0.2 None False False diff --git a/src/Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/FrontOffice.BFF.DiscountShop.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/FrontOffice.BFF.DiscountShop.Protobuf.csproj index 9684ee5..e6414e4 100644 --- a/src/Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/FrontOffice.BFF.DiscountShop.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/FrontOffice.BFF.DiscountShop.Protobuf.csproj @@ -3,7 +3,7 @@ net9.0 enable enable - 0.0.2 + 0.0.3 Foursat.FrontOffice.BFF.DiscountShop.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/FrontOffice.BFF.NetworkMembership.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/FrontOffice.BFF.NetworkMembership.Protobuf.csproj index 125f4e2..05d9ac5 100644 --- a/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/FrontOffice.BFF.NetworkMembership.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/FrontOffice.BFF.NetworkMembership.Protobuf.csproj @@ -3,7 +3,7 @@ net9.0 enable enable - 0.0.2 + 0.0.4 Foursat.FrontOffice.BFF.NetworkMembership.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto b/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto index 41be677..e6cbceb 100644 --- a/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto +++ b/src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/Protos/networkmembership.proto @@ -75,7 +75,7 @@ message NetworkNodeModel bool is_active = 10; google.protobuf.Timestamp joined_at = 11; bool is_club_active = 12; - google.protobuf.StringValue activation_week_number = 13; + google.protobuf.Int64Value activation_week_definition_id = 13; } // ============ GetMyNetworkStatistics ============ diff --git a/src/Protobufs/FrontOffice.BFF.Package.Protobuf/FrontOffice.BFF.Package.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.Package.Protobuf/FrontOffice.BFF.Package.Protobuf.csproj index f839b09..31deb0a 100644 --- a/src/Protobufs/FrontOffice.BFF.Package.Protobuf/FrontOffice.BFF.Package.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.Package.Protobuf/FrontOffice.BFF.Package.Protobuf.csproj @@ -4,7 +4,7 @@ net9.0 enable enable - 0.0.113 + 0.0.114 None False False diff --git a/src/Protobufs/FrontOffice.BFF.Products.Protobuf/FrontOffice.BFF.Products.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.Products.Protobuf/FrontOffice.BFF.Products.Protobuf.csproj index 101972d..889a633 100644 --- a/src/Protobufs/FrontOffice.BFF.Products.Protobuf/FrontOffice.BFF.Products.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.Products.Protobuf/FrontOffice.BFF.Products.Protobuf.csproj @@ -3,7 +3,7 @@ net7.0 enable enable - 0.0.17 + 0.0.18 Foursat.FrontOffice.BFF.Products.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/FrontOffice.BFF.ShopingCart.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/FrontOffice.BFF.ShopingCart.Protobuf.csproj index c51e304..1bcdcc9 100644 --- a/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/FrontOffice.BFF.ShopingCart.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/FrontOffice.BFF.ShopingCart.Protobuf.csproj @@ -3,7 +3,7 @@ net7.0 enable enable - 0.0.16 + 0.0.17 Foursat.FrontOffice.BFF.ShopingCart.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.Transaction.Protobuf/FrontOffice.BFF.Transaction.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.Transaction.Protobuf/FrontOffice.BFF.Transaction.Protobuf.csproj index 8f2f032..085c923 100644 --- a/src/Protobufs/FrontOffice.BFF.Transaction.Protobuf/FrontOffice.BFF.Transaction.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.Transaction.Protobuf/FrontOffice.BFF.Transaction.Protobuf.csproj @@ -4,7 +4,7 @@ net9.0 enable enable - 0.0.112 + 0.0.113 None False False diff --git a/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj index 72b222b..1837576 100644 --- a/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj @@ -4,7 +4,7 @@ net9.0 enable enable - 0.0.117 + 0.0.118 None False False diff --git a/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj index 3f066db..3dca29b 100644 --- a/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj @@ -4,7 +4,7 @@ net9.0 enable enable - 0.0.115 + 0.0.116 None False False diff --git a/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/FrontOffice.BFF.UserOrder.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/FrontOffice.BFF.UserOrder.Protobuf.csproj index 593bb33..e044966 100644 --- a/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/FrontOffice.BFF.UserOrder.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/FrontOffice.BFF.UserOrder.Protobuf.csproj @@ -4,7 +4,7 @@ net9.0 enable enable - 0.0.115 + 0.0.116 None False False diff --git a/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/FrontOffice.BFF.UserWallet.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/FrontOffice.BFF.UserWallet.Protobuf.csproj index 61f88ed..8155b7c 100644 --- a/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/FrontOffice.BFF.UserWallet.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/FrontOffice.BFF.UserWallet.Protobuf.csproj @@ -3,7 +3,7 @@ net7.0 enable enable - 0.0.15 + 0.0.16 Foursat.FrontOffice.BFF.UserWallet.Protobuf False False diff --git a/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/Protos/userwallet.proto b/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/Protos/userwallet.proto index c1397c3..ba7353f 100644 --- a/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/Protos/userwallet.proto +++ b/src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/Protos/userwallet.proto @@ -95,12 +95,13 @@ message GetUserWithdrawalsResponse message UserWithdrawalModel { int64 id = 1; - string week_number = 2; - int64 total_amount = 3; - int32 status = 4; - google.protobuf.Int32Value withdrawal_method = 5; - string iban_number = 6; - google.protobuf.Timestamp created = 7; + int64 week_definition_id = 2; + string week_display_name = 3; + int64 total_amount = 4; + int32 status = 5; + google.protobuf.Int32Value withdrawal_method = 6; + string iban_number = 7; + google.protobuf.Timestamp created = 8; } message GetWithdrawalSettingsResponse