From 52f6af20914ab5d9245fdf7cf34ea34224b472de Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sun, 22 Feb 2026 22:02:54 +0330 Subject: [PATCH] feat: add user_name to wallet response + enrich via Users table - userwallet.proto: added string user_name = 5 to GetAllUserWalletByFilterResponseModel - UserWalletService: enriches response with user names from Users table - Proto version bumped to 0.0.183 --- .../CMSMicroservice.Protobuf.csproj | 2 +- .../Protos/userwallet.proto | 1 + .../Services/UserWalletService.cs | 23 ++++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj index f8269e4..a06c1ac 100644 --- a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj +++ b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj @@ -3,7 +3,7 @@ net9.0 enable enable - 0.0.182 + 0.0.183 None False False diff --git a/src/CMSMicroservice.Protobuf/Protos/userwallet.proto b/src/CMSMicroservice.Protobuf/Protos/userwallet.proto index d44af1e..bd7ff2c 100644 --- a/src/CMSMicroservice.Protobuf/Protos/userwallet.proto +++ b/src/CMSMicroservice.Protobuf/Protos/userwallet.proto @@ -154,6 +154,7 @@ message GetAllUserWalletByFilterResponseModel int64 user_id = 2; int64 balance = 3; int64 network_balance = 4; + string user_name = 5; } // ============= Customer-specific Messages ============= diff --git a/src/CMSMicroservice.WebApi/Services/UserWalletService.cs b/src/CMSMicroservice.WebApi/Services/UserWalletService.cs index e94ed79..f4760cc 100644 --- a/src/CMSMicroservice.WebApi/Services/UserWalletService.cs +++ b/src/CMSMicroservice.WebApi/Services/UserWalletService.cs @@ -55,7 +55,28 @@ public class UserWalletService : UserWalletContract.UserWalletContractBase } public override async Task GetAllUserWalletByFilter(GetAllUserWalletByFilterRequest request, ServerCallContext context) { - return await _dispatchRequestToCQRS.Handle(request, context); + var response = await _dispatchRequestToCQRS.Handle(request, context); + + // Enrich response with user names + if (response?.Models != null && response.Models.Any()) + { + var userIds = response.Models.Select(m => m.UserId).Distinct().ToList(); + var users = await _context.Users + .AsNoTracking() + .Where(u => userIds.Contains(u.Id)) + .Select(u => new { u.Id, u.FirstName, u.LastName }) + .ToDictionaryAsync(u => u.Id, context.CancellationToken); + + foreach (var model in response.Models) + { + if (users.TryGetValue(model.UserId, out var user)) + { + model.UserName = $"{user.FirstName} {user.LastName}".Trim(); + } + } + } + + return response; } // ============= Customer-specific Methods =============