From 617a7caf81828b565aed6061a2fabc113c2f61e5 Mon Sep 17 00:00:00 2001 From: Ho Ngoc Hai Date: Tue, 3 Mar 2026 10:48:13 +0700 Subject: [PATCH] fix(iam-service): resolve 500 error on GET /api/v1/users endpoint --- .../Queries/Users/GetUsersQueryHandler.cs | 12 ++++++------ .../IamService.Infrastructure/DependencyInjection.cs | 4 ++++ .../Repositories/UserRepository.cs | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/services/iam-service-net/src/IamService.API/Application/Queries/Users/GetUsersQueryHandler.cs b/services/iam-service-net/src/IamService.API/Application/Queries/Users/GetUsersQueryHandler.cs index f06e5e01..fb0b0e30 100644 --- a/services/iam-service-net/src/IamService.API/Application/Queries/Users/GetUsersQueryHandler.cs +++ b/services/iam-service-net/src/IamService.API/Application/Queries/Users/GetUsersQueryHandler.cs @@ -36,12 +36,12 @@ public class GetUsersQueryHandler : IRequestHandler new UserViewModel( u.Id, - u.Email!, - u.FirstName, - u.LastName, - u.FullName, - u.Status.Name, - u.CreatedAt, + u.Email ?? u.UserName ?? "", + u.FirstName ?? "", + u.LastName ?? "", + !string.IsNullOrEmpty(u.FirstName) ? u.FullName : (u.UserName ?? u.Email ?? ""), + u.Status?.Name ?? (u.LockoutEnd.HasValue && u.LockoutEnd > DateTimeOffset.UtcNow ? "Locked" : "Active"), + u.CreatedAt != default ? u.CreatedAt : DateTime.UtcNow, u.LastLoginAt)); return new GetUsersQueryResult( diff --git a/services/iam-service-net/src/IamService.Infrastructure/DependencyInjection.cs b/services/iam-service-net/src/IamService.Infrastructure/DependencyInjection.cs index 5c0143c7..db1cb90b 100644 --- a/services/iam-service-net/src/IamService.Infrastructure/DependencyInjection.cs +++ b/services/iam-service-net/src/IamService.Infrastructure/DependencyInjection.cs @@ -70,6 +70,10 @@ public static class DependencyInjection maxRetryDelay: TimeSpan.FromSeconds(10), errorCodesToAdd: null); }); + // EN: Suppress PendingModelChangesWarning — backing field mappings don't change DB schema. + // VI: Suppress PendingModelChangesWarning — mapping backing fields không thay đổi DB schema. + options.ConfigureWarnings(w => + w.Ignore(Microsoft.EntityFrameworkCore.Diagnostics.RelationalEventId.PendingModelChangesWarning)); }); } diff --git a/services/iam-service-net/src/IamService.Infrastructure/Repositories/UserRepository.cs b/services/iam-service-net/src/IamService.Infrastructure/Repositories/UserRepository.cs index 791948a3..2d65ab06 100644 --- a/services/iam-service-net/src/IamService.Infrastructure/Repositories/UserRepository.cs +++ b/services/iam-service-net/src/IamService.Infrastructure/Repositories/UserRepository.cs @@ -53,7 +53,7 @@ public class UserRepository : IUserRepository var totalCount = await query.CountAsync(cancellationToken); var users = await query - .OrderByDescending(u => u.CreatedAt) + .OrderByDescending(u => u.Id) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToListAsync(cancellationToken);