public async Task <IImmutableList <GetPrivateChatViewDto> > GetUserPrivateChatsViewAsync(GetPrivateChatsQueryDto query, CancellationToken ct = default) { _logger.LogInformation("Get user private chats by user id {UserId}", query.UserId); GetPrivateChatsQuery dbQuery = _mapper.Map <GetPrivateChatsQuery>(query); ICollection <PrivateChatView> chats = await _unitOfWork.PrivateChatRepository.GetPrivateChatsAsync(dbQuery, ct); return(_mapper.Map <ICollection <GetPrivateChatViewDto> >(chats).ToImmutableList()); }
public async Task <ICollection <PrivateChatView> > GetPrivateChatsAsync(GetPrivateChatsQuery queryParams, CancellationToken ct) { IQueryable <PrivateChatView> query = DbContext.PrivateChatsView .Where(t => t.CreatedByUserId == queryParams.UserId || t.InvitedUserId == queryParams.UserId); if (!string.IsNullOrEmpty(queryParams.UserTerm)) { query = query.Where(t => EntityFramework.Functions.Like(t.CreatedByUserFullName, $"{queryParams.UserTerm}") || EntityFramework.Functions.Like(t.InvitedUserFullName, $"{queryParams.UserTerm}")); } return(await query.OrderByDescending(t => t.LastMessageCreatedAt).ToListAsync(ct)); }