diff --git a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs index 46ec9cc..07ae6bf 100644 --- a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs +++ b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQuery.cs @@ -18,6 +18,11 @@ public record GetMyCommissionPayoutsQuery : IRequest public long? WeekDefinitionId { get; init; } + /// + /// فیلتر بر اساس پکیج (اختیاری) + /// + public long? PackageId { get; init; } + /// /// Pagination /// diff --git a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs index 6011d84..ab6e60a 100644 --- a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs +++ b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyCommissionPayouts/GetMyCommissionPayoutsQueryHandler.cs @@ -28,6 +28,7 @@ public class GetMyCommissionPayoutsQueryHandler : IRequestHandler x.WeekDefinition) + .Include(x => x.Package) .Where(x => x.UserId == userId) .AsNoTracking() .AsQueryable(); @@ -43,6 +44,12 @@ public class GetMyCommissionPayoutsQueryHandler : IRequestHandler x.WeekDefinitionId == request.WeekDefinitionId.Value); } + // فیلتر بر اساس پکیج + if (request.PackageId.HasValue && request.PackageId.Value > 0) + { + query = query.Where(x => x.PackageId == request.PackageId.Value); + } + // مرتب‌سازی: جدیدترین اول query = query.OrderByDescending(x => x.Created); @@ -60,7 +67,9 @@ public class GetMyCommissionPayoutsQueryHandler : IRequestHandler public bool OnlyActive { get; init; } + /// + /// فیلتر بر اساس پکیج (اختیاری) + /// + public long? PackageId { get; init; } + /// /// Pagination /// diff --git a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs index ae27b89..ee046fd 100644 --- a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs +++ b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetMyWeeklyBalances/GetMyWeeklyBalancesQueryHandler.cs @@ -38,6 +38,7 @@ public class GetMyWeeklyBalancesQueryHandler : IRequestHandler public long? WeekDefinitionId { get; init; } + /// + /// فیلتر بر اساس پکیج (اختیاری) + /// + public long? PackageId { get; init; } + /// /// مرتب‌سازی /// diff --git a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs index 8674908..9f02fad 100644 --- a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs +++ b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs @@ -18,6 +18,7 @@ public class GetUserCommissionPayoutsQueryHandler : IRequestHandler x.WeekDefinition) .Include(x => x.User) + .Include(x => x.Package) .AsNoTracking() .AsQueryable(); @@ -41,6 +42,12 @@ public class GetUserCommissionPayoutsQueryHandler : IRequestHandler x.WeekDefinitionId == request.WeekDefinitionId); } + // فیلتر بر اساس پکیج + if (request.PackageId.HasValue && request.PackageId.Value > 0) + { + query = query.Where(x => x.PackageId == request.PackageId.Value); + } + query = query.ApplyOrder(sortBy: request.SortBy ?? "Created"); var meta = await query.GetMetaData(request.PaginationState, cancellationToken); @@ -64,7 +71,9 @@ public class GetUserCommissionPayoutsQueryHandler : IRequestHandler public long? WeekDefinitionId { get; init; } + /// + /// فیلتر بر اساس پکیج (اختیاری) + /// + public long? PackageId { get; init; } /// /// فقط موارد Expired نشده؟ diff --git a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserWeeklyBalances/GetUserWeeklyBalancesQueryHandler.cs b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserWeeklyBalances/GetUserWeeklyBalancesQueryHandler.cs index 2ffe742..7d83266 100644 --- a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserWeeklyBalances/GetUserWeeklyBalancesQueryHandler.cs +++ b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserWeeklyBalances/GetUserWeeklyBalancesQueryHandler.cs @@ -18,6 +18,7 @@ public class GetUserWeeklyBalancesQueryHandler : IRequestHandler x.WeekDefinition) .Include(x => x.User) + .Include(x => x.Package) .AsNoTracking() .AsQueryable(); @@ -43,6 +44,12 @@ public class GetUserWeeklyBalancesQueryHandler : IRequestHandler !x.IsExpired); } + // فیلتر بر اساس پکیج + if (request.PackageId.HasValue && request.PackageId.Value > 0) + { + query = query.Where(x => x.PackageId == request.PackageId.Value); + } + // مرتب‌سازی بر اساس WeekDefinitionId (نزولی = جدیدترین اول) query = query.ApplyOrder(sortBy: request.SortBy ?? "-WeekDefinitionId"); @@ -67,7 +74,9 @@ public class GetUserWeeklyBalancesQueryHandler : IRequestHandlernet9.0 enable enable - 0.0.186 + 0.0.187 None False False diff --git a/src/CMSMicroservice.Protobuf/Protos/commission.proto b/src/CMSMicroservice.Protobuf/Protos/commission.proto index 5cf3999..1315e1d 100644 --- a/src/CMSMicroservice.Protobuf/Protos/commission.proto +++ b/src/CMSMicroservice.Protobuf/Protos/commission.proto @@ -217,6 +217,7 @@ message GetUserCommissionPayoutsRequest google.protobuf.Int64Value user_id = 1; google.protobuf.Int32Value status = 2; // CommissionPayoutStatus enum google.protobuf.Int64Value week_definition_id = 3; // Preferred filter + google.protobuf.Int64Value package_id = 4; // فیلتر بر اساس پکیج int32 page_index = 5; int32 page_size = 6; } @@ -244,6 +245,8 @@ message UserCommissionPayoutModel string iban_number = 13; google.protobuf.Timestamp withdrawn_at = 14; google.protobuf.Timestamp created = 15; + int64 package_id = 16; // شناسه پکیج + string package_title = 17; // نام پکیج } // GetCommissionPayoutHistory Query @@ -314,6 +317,7 @@ message GetUserWeeklyBalancesRequest { google.protobuf.Int64Value user_id = 1; google.protobuf.Int64Value week_definition_id = 2; // Preferred filter + google.protobuf.Int64Value package_id = 3; // فیلتر بر اساس پکیج bool only_active = 4; // Only non-expired balances int32 page_index = 5; int32 page_size = 6; @@ -343,6 +347,8 @@ message UserWeeklyBalanceModel google.protobuf.Timestamp calculated_at = 14; bool is_expired = 15; google.protobuf.Timestamp created = 16; + int64 package_id = 17; // شناسه پکیج + string package_title = 18; // نام پکیج } // GetAllWeeklyPools Query @@ -598,6 +604,7 @@ message GetMyCommissionPayoutsRequest int32 page_size = 2; google.protobuf.Int64Value week_definition_id = 3; google.protobuf.Int32Value status = 4; // 0=Pending, 1=Calculated, 2=Paid, 3=Withdrawn + google.protobuf.Int64Value package_id = 5; // فیلتر بر اساس پکیج } message GetMyCommissionPayoutsResponse @@ -622,6 +629,8 @@ message CustomerCommissionPayoutModel int32 status = 7; // 0=Pending, 1=Paid, 2=WithdrawRequested, 3=Withdrawn, 4=PaymentFailed, 5=Cancelled google.protobuf.Timestamp calculated_date = 8; string date_persian = 9; + int64 package_id = 10; // شناسه پکیج + string package_title = 11; // نام پکیج } // GetMyWeeklyBalances - for frontend customer display @@ -631,6 +640,7 @@ message GetMyWeeklyBalancesRequest int32 page_size = 2; google.protobuf.Int64Value week_definition_id = 3; bool only_active = 4; + google.protobuf.Int64Value package_id = 5; // فیلتر بر اساس پکیج } message GetMyWeeklyBalancesResponse @@ -658,4 +668,6 @@ message CustomerWeeklyBalanceModel int32 right_leg_carryover = 12; int32 left_leg_new_members = 13; int32 right_leg_new_members = 14; + int64 package_id = 15; // شناسه پکیج + string package_title = 16; // نام پکیج } diff --git a/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs b/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs index c31a0db..03a9d8b 100644 --- a/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs +++ b/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs @@ -68,7 +68,9 @@ public class CommissionProfile : IRegister .Map(dest => dest.WithdrawnAt, src => src.WithdrawnAt.HasValue ? Timestamp.FromDateTime(src.WithdrawnAt.Value.ToUniversalTime()) : null) - .Map(dest => dest.Created, src => Timestamp.FromDateTimeOffset(src.Created)); + .Map(dest => dest.Created, src => Timestamp.FromDateTimeOffset(src.Created)) + .Map(dest => dest.PackageId, src => src.PackageId) + .Map(dest => dest.PackageTitle, src => src.PackageTitle); // GetWeekDefinitions Request Mapping config.NewConfig() @@ -127,7 +129,9 @@ public class CommissionProfile : IRegister ? 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)); + .Map(dest => dest.Created, src => Timestamp.FromDateTimeOffset(src.Created)) + .Map(dest => dest.PackageId, src => src.PackageId) + .Map(dest => dest.PackageTitle, src => src.PackageTitle); // GetMyCommissionPayouts Request Mapping config.NewConfig() @@ -135,6 +139,7 @@ public class CommissionProfile : IRegister ? (CommissionPayoutStatus?)src.Status.Value : null) .Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId != null ? src.WeekDefinitionId.Value : (long?)null) + .Map(dest => dest.PackageId, src => src.PackageId != null ? src.PackageId.Value : (long?)null) .Map(dest => dest.PaginationState, src => new PaginationState { PageNumber = src.PageNumber > 0 ? src.PageNumber : 1, @@ -160,12 +165,15 @@ public class CommissionProfile : IRegister .Map(dest => dest.CalculatedDate, src => src.CalculatedDate.HasValue ? Timestamp.FromDateTime(src.CalculatedDate.Value.ToUniversalTime()) : null) - .Map(dest => dest.DatePersian, src => src.DatePersian); + .Map(dest => dest.DatePersian, src => src.DatePersian) + .Map(dest => dest.PackageId, src => src.PackageId) + .Map(dest => dest.PackageTitle, src => src.PackageTitle); // GetMyWeeklyBalances Request Mapping config.NewConfig() .Map(dest => dest.WeekDefinitionId, src => src.WeekDefinitionId != null ? src.WeekDefinitionId.Value : (long?)null) .Map(dest => dest.OnlyActive, src => src.OnlyActive) + .Map(dest => dest.PackageId, src => src.PackageId != null ? src.PackageId.Value : (long?)null) .Map(dest => dest.PaginationState, src => new PaginationState { PageNumber = src.PageNumber > 0 ? src.PageNumber : 1, @@ -199,6 +207,8 @@ public class CommissionProfile : IRegister .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); + : null) + .Map(dest => dest.PackageId, src => src.PackageId) + .Map(dest => dest.PackageTitle, src => src.PackageTitle); } }