From 6ae1b0cd70c7912c16a24b9f65a9c5e81bf58031 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Fri, 12 Dec 2025 19:31:32 +0330 Subject: [PATCH] feat: update commission payout model with user names and timestamps --- .../GetUserCommissionPayoutsQueryHandler.cs | 3 +++ .../GetUserCommissionPayoutsResponseDto.cs | 2 ++ .../CMSMicroservice.Protobuf.csproj | 2 +- .../Protos/commission.proto | 26 ++++++++++--------- .../Common/Mappings/CommissionProfile.cs | 24 +++++++++++++++++ 5 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs index 9aa3bf5..cbd55a9 100644 --- a/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs +++ b/src/CMSMicroservice.Application/CommissionCQ/Queries/GetUserCommissionPayouts/GetUserCommissionPayoutsQueryHandler.cs @@ -12,6 +12,7 @@ public class GetUserCommissionPayoutsQueryHandler : IRequestHandler Handle(GetUserCommissionPayoutsQuery request, CancellationToken cancellationToken) { var query = _context.UserCommissionPayouts + .Include(x => x.User) .AsNoTracking() .AsQueryable(); @@ -41,6 +42,8 @@ public class GetUserCommissionPayoutsQueryHandler : IRequestHandlernet9.0 enable enable - 0.0.149 + 0.0.152 None False False diff --git a/src/CMSMicroservice.Protobuf/Protos/commission.proto b/src/CMSMicroservice.Protobuf/Protos/commission.proto index 87ecaaa..0988743 100644 --- a/src/CMSMicroservice.Protobuf/Protos/commission.proto +++ b/src/CMSMicroservice.Protobuf/Protos/commission.proto @@ -209,18 +209,20 @@ message GetUserCommissionPayoutsResponse message UserCommissionPayoutModel { - int64 id = 1; - int64 user_id = 2; - string user_name = 3; - string week_number = 4; - int32 balances_earned = 5; - int64 value_per_balance = 6; - int64 total_amount = 7; - int32 status = 8; // CommissionPayoutStatus enum - google.protobuf.Int32Value withdrawal_method = 9; - string iban_number = 10; - google.protobuf.Timestamp created = 11; - google.protobuf.Timestamp last_modified = 12; + int64 id = 1; + int64 user_id = 2; + string user_name = 3; + string week_number = 4; + int64 weekly_pool_id = 5; + int64 balances_earned = 6; + int64 value_per_balance = 7; + int64 total_amount = 8; + int32 status = 9; // CommissionPayoutStatus enum + google.protobuf.Timestamp paid_at = 10; + google.protobuf.Int32Value withdrawal_method = 11; + string iban_number = 12; + google.protobuf.Timestamp withdrawn_at = 13; + google.protobuf.Timestamp created = 14; } // GetCommissionPayoutHistory Query diff --git a/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs b/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs index de9a1a4..0208500 100644 --- a/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs +++ b/src/CMSMicroservice.WebApi/Common/Mappings/CommissionProfile.cs @@ -1,4 +1,5 @@ using CMSMicroservice.Application.CommissionCQ.Queries.GetAvailableWeeks; +using CMSMicroservice.Application.CommissionCQ.Queries.GetUserCommissionPayouts; using CMSMicroservice.Protobuf.Protos.Commission; using Google.Protobuf.WellKnownTypes; using Mapster; @@ -35,5 +36,28 @@ public class CommissionProfile : IRegister .Map(dest => dest.TotalPoolAmount, src => src.TotalPoolAmount ?? 0) .Map(dest => dest.EligibleUsersCount, src => src.EligibleUsersCount ?? 0) .Map(dest => dest.DisplayText, src => src.DisplayText); + + // GetUserCommissionPayouts Response Model Mapping + config.NewConfig() + .Map(dest => dest.Id, src => src.Id) + .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.WeeklyPoolId, src => src.WeeklyPoolId) + .Map(dest => dest.BalancesEarned, src => src.BalancesEarned) + .Map(dest => dest.ValuePerBalance, src => src.ValuePerBalance) + .Map(dest => dest.TotalAmount, src => src.TotalAmount) + .Map(dest => dest.Status, src => (int)src.Status) + .Map(dest => dest.PaidAt, src => src.PaidAt.HasValue + ? Timestamp.FromDateTime(src.PaidAt.Value.ToUniversalTime()) + : null) + .Map(dest => dest.WithdrawalMethod, src => src.WithdrawalMethod.HasValue + ? (int)src.WithdrawalMethod.Value + : (int?)null) + .Map(dest => dest.IbanNumber, src => src.IbanNumber ?? string.Empty) + .Map(dest => dest.WithdrawnAt, src => src.WithdrawnAt.HasValue + ? Timestamp.FromDateTime(src.WithdrawnAt.Value.ToUniversalTime()) + : null) + .Map(dest => dest.Created, src => Timestamp.FromDateTimeOffset(src.Created)); } }