Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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));
        }