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 =============