From f5a5b13ddf5b56a8aae2bb87e0cff9ca0d4f7952 Mon Sep 17 00:00:00 2001 From: Damien Ostler Date: Sun, 17 Mar 2024 05:08:25 -0400 Subject: [PATCH] fix: added model for admin users endpoint --- .../Controllers/Admin/AdminUsersController.cs | 8 +++-- .../Models/Admin/AdminUserModel.cs | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/comissions.app.api/Models/Admin/AdminUserModel.cs diff --git a/src/comissions.app.api/Controllers/Admin/AdminUsersController.cs b/src/comissions.app.api/Controllers/Admin/AdminUsersController.cs index f9e8f11..ec819d7 100644 --- a/src/comissions.app.api/Controllers/Admin/AdminUsersController.cs +++ b/src/comissions.app.api/Controllers/Admin/AdminUsersController.cs @@ -1,6 +1,7 @@ using comissions.app.api.Extensions; using comissions.app.database; using comissions.app.database.Entities; +using comissions.app.database.Models.Admin; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -25,7 +26,8 @@ public class AdminUsersController:ControllerBase var users = await _dbContext.Users .Where(x=>x.DisplayName.Contains(search) || x.Email.Contains(search)) .Skip(offset).Take(pageSize).ToListAsync(); - return Ok(users); + var result = users.Select(x => x.ToAdminUserModel()); + return Ok(result); } [HttpGet("Count")] @@ -44,8 +46,8 @@ public class AdminUsersController:ControllerBase if (user == null) return NotFound(); - - return Ok(user); + var result = user.ToAdminUserModel(); + return Ok(result); } diff --git a/src/comissions.app.api/Models/Admin/AdminUserModel.cs b/src/comissions.app.api/Models/Admin/AdminUserModel.cs new file mode 100644 index 0000000..8853df9 --- /dev/null +++ b/src/comissions.app.api/Models/Admin/AdminUserModel.cs @@ -0,0 +1,35 @@ +using comissions.app.database.Entities; + +namespace comissions.app.database.Models.Admin; + +public class AdminUserModel +{ + public string Id { get; set; } = string.Empty; + public string DisplayName { get; init; } = string.Empty; + public string Biography { get; init; } = string.Empty; + public string Email { get; init; } = string.Empty; + public int NumberOfRequests { get; set; } = 0; + public int NumberOfSuspensions { get; set; } = 0; + public int NumberOfBans { get; set; } = 0; + public int NumberOfReviews { get; set; } = 0; + public decimal AmountSpent { get; set; } = 0; +} + +public static class AdminUserModelExtensions +{ + public static AdminUserModel ToAdminUserModel(this User user) + { + return new AdminUserModel + { + Id = user.Id, + DisplayName = user.DisplayName, + Biography = user.Biography, + Email = user.Email, + NumberOfRequests = user.Requests.Count, + NumberOfSuspensions = user.Suspensions.Count, + NumberOfBans = user.Bans.Count, + NumberOfReviews = user.Requests.Count, + AmountSpent = user.Requests.Sum(r => r.Amount) + }; + } +}