11using Asp . Versioning ;
22using ChatbotBuilderApi . Application . Core . Shared ;
3+ using ChatbotBuilderApi . Application . Images . ListImages ;
34using ChatbotBuilderApi . Application . Users ;
45using ChatbotBuilderApi . Domain . Users ;
56using ChatbotBuilderApi . Presentation . Core . Abstract ;
67using ChatbotBuilderApi . Presentation . Core . Attributes ;
78using ChatbotBuilderApi . Presentation . Core . Extensions ;
89using ChatbotBuilderApi . Presentation . Core . Responses ;
10+ using ChatbotBuilderApi . Presentation . Graphs . Data ;
911using ChatbotBuilderApi . Presentation . Users . Requests ;
1012using ChatbotBuilderApi . Presentation . Users . ViewModels ;
1113using MediatR ;
@@ -29,6 +31,26 @@ public UsersController(ISender sender, UserManager<User> userManager) : base(sen
2931 _userManager = userManager ;
3032 }
3133
34+ private async Task < Result < ImageDataModel > > GetProfileImageResultAsync ( User user )
35+ {
36+ var query = new ListImagesQuery
37+ {
38+ IncludeOnlyProfilePictures = true ,
39+ OwnerId = new UserId ( user . Id ) ,
40+ PageParams = new PageParams ( 1 , 1 )
41+ } ;
42+
43+ var images = await Sender . Send ( query ) ;
44+ if ( images . IsFailure )
45+ {
46+ return Result . Failure < ImageDataModel > ( UserApplicationErrors . UserProfileImageNotFound ) ;
47+ }
48+
49+ return Result . Success ( images . Value . Page . Items
50+ . Select ( i => new ImageDataModel ( i . Url ) )
51+ . FirstOrDefault ( ) ) ;
52+ }
53+
3254 /// <summary>
3355 /// Gets a user by ID.
3456 /// </summary>
@@ -49,12 +71,19 @@ public async Task<ActionResult<UserViewModel>> GetUserById(
4971 . ToProblemDetails ( ) ;
5072 }
5173
74+ var imageResult = await GetProfileImageResultAsync ( user ) ;
75+ if ( imageResult . IsFailure )
76+ {
77+ return imageResult . ToProblemDetails ( ) ;
78+ }
79+
5280 return Ok ( new UserViewModel (
5381 user . Id ,
5482 user . UserName ! ,
5583 user . Email ! ,
5684 user . FirstName ,
57- user . LastName
85+ user . LastName ,
86+ imageResult . Value
5887 ) ) ;
5988 }
6089
@@ -104,12 +133,19 @@ public async Task<ActionResult<UserViewModel>> GetCurrentUser()
104133 . ToProblemDetails ( ) ;
105134 }
106135
136+ var imageResult = await GetProfileImageResultAsync ( user ) ;
137+ if ( imageResult . IsFailure )
138+ {
139+ return imageResult . ToProblemDetails ( ) ;
140+ }
141+
107142 return Ok ( new UserViewModel (
108143 user . Id ,
109144 user . UserName ! ,
110145 user . Email ! ,
111146 user . FirstName ,
112- user . LastName
147+ user . LastName ,
148+ imageResult . Value
113149 ) ) ;
114150 }
115151
0 commit comments