using Hutopy.Application.Common.Interfaces; namespace Hutopy.Application.Users.Queries.GetCurrentUser; public record GetCurrentUserQuery : IRequest; public class GetCurrentUserQueryHandler( IApplicationDbContext context, IMapper mapper, IIdentityService identityService ) : IRequestHandler { public async Task Handle(GetCurrentUserQuery request, CancellationToken cancellationToken) { var identityUser = await identityService.GetCurrentUserAsync(); var currentUserId = Guid.Parse(identityUser!.Id!); var transactions = await context .UserTransactions .Where(x => x.ApplicationUserId == currentUserId.ToString()) .OrderBy(x => x.LastModified) .ProjectTo(mapper.ConfigurationProvider) .Where(x => x.IsConfirmed == true) .ToListAsync(cancellationToken); var roles = await identityService.GetCurrentUserRolesAsync(); var user = new UserDto { Id = currentUserId, Alias = identityUser.Alias, FirstName = identityUser.FirstName, LastName = identityUser.LastName, UserName = identityUser.UserName, CreatorAlias= identityUser.CreatorAlias, Occupation = identityUser.Occupation, PhoneNumber = identityUser.PhoneNumber, Email = identityUser.Email, BirthDate = identityUser.BirthDate, Country = identityUser.Country, City = identityUser.City, Address = identityUser.Address, About = identityUser.About, Description = identityUser.Description, SocialNetworks = identityUser.SocialNetworks, ProfileColors = identityUser.ProfileColors, StoredDataUrls = identityUser.StoredDataUrls, UserTransactions = transactions, TotalBalance = transactions.Sum(x => x.Amount), UserRoles = roles, }; return user; } }