diff --git a/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs b/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs index 5fd288d..e7e5940 100644 --- a/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs +++ b/src/Application/Users/Queries/GetMinimalUser/GetMinimalUser.cs @@ -1,10 +1,12 @@ using Hutopy.Application.Common.Interfaces; +using Hutopy.Application.Common.Models; namespace Hutopy.Application.Users.Queries.GetMinimalUser; public record GetMinimalUserQuery : IRequest { - public string UserId { get; set; } = string.Empty; + public string? UserId { get; set; } = string.Empty; + public string? UserName { get; set; } = string.Empty; }; public class GetMinimalUserQueryHandler( @@ -14,15 +16,27 @@ public class GetMinimalUserQueryHandler( { public async Task Handle(GetMinimalUserQuery request, CancellationToken cancellationToken) { - var identityUser = await identityService.FindUserByIdAsync(request.UserId); - + UserModel? identityUser = null; + + if (request.UserId != string.Empty) + { + identityUser = await identityService.FindUserByIdAsync(request.UserId); + + } + + if (request.UserName != string.Empty) + { + identityUser = await identityService.GetUserByUserNameAsync(request.UserName); + } + + var user = new MinimalUserDto { - FirstName = identityUser?.FirstName ?? "", - LastName = identityUser?.LastName ?? "", - UserName = identityUser?.UserName ?? "" + FirstName = identityUser?.FirstName ?? string.Empty, + LastName = identityUser?.LastName ?? string.Empty, + UserName = identityUser?.UserName ?? string.Empty }; return user; } -} +} \ No newline at end of file diff --git a/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs b/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs index 0b01fba..97fa6a1 100644 --- a/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs +++ b/src/Application/Users/Queries/GetMinimalUser/MinimalUserDto.cs @@ -4,5 +4,5 @@ public class MinimalUserDto { public required string FirstName { get; init; } public required string LastName { get; init; } - public string UserName { get; init; } = String.Empty; + public required string UserName { get; init; } = String.Empty; } diff --git a/src/Web/Endpoints/Users.cs b/src/Web/Endpoints/Users.cs index 32b8acc..b0b9c59 100644 --- a/src/Web/Endpoints/Users.cs +++ b/src/Web/Endpoints/Users.cs @@ -12,15 +12,17 @@ public class Users : EndpointGroupBase .MapPost(CreateUser) .MapGet(GetMinimalUser) .MapIdentityApi(); + } private static async Task CreateUser(ISender sender, CreateUserCommand command) { return await sender.Send(command); } - + private static async Task GetMinimalUser(ISender sender, [AsParameters] GetMinimalUserQuery query) { return await sender.Send(query); } + } diff --git a/src/Web/wwwroot/api/specification.json b/src/Web/wwwroot/api/specification.json index e9729d9..ece282e 100644 --- a/src/Web/wwwroot/api/specification.json +++ b/src/Web/wwwroot/api/specification.json @@ -251,12 +251,20 @@ { "name": "UserId", "in": "query", - "required": true, "schema": { "type": "string", "nullable": true }, "x-position": 1 + }, + { + "name": "UserName", + "in": "query", + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 2 } ], "responses": {