public async Task <PaginatedItemsApiModel <MessageApiModel> > GetMessages(Guid userId, int pageIndex, int pageSize) { Expression <Func <Message, bool> > criteria = w => w.ReceiverId == userId || w.SenderId == userId; var filterPaginatedSpecification = new MessageFilterPaginatedSpecification(pageSize * pageIndex, pageSize, criteria); var itemsOnPage = await _repository.ListAsync(filterPaginatedSpecification); var filterSpecification = new MessageFilterSpecification(criteria); var totalItems = await _repository.CountAsync(filterSpecification); var messages = itemsOnPage?.Select(w => new MessageApiModel() { Id = w.Id, SenderId = w.SenderId, ReceiverId = w.ReceiverId, MessageText = w.MessageText, MessageDate = w.MessageDate, }) ?? new List <MessageApiModel>(); return(new PaginatedItemsApiModel <MessageApiModel>(pageIndex, pageSize, totalItems, messages)); }
private async Task <bool> MessageExistsAsync(Guid id) { return(await _repository.CountAsync(id) > 0); }