public async Task <ActionResult <IEnumerable <MessageViewModel> > > Messages(Guid circleId, [FromBody] ReadMessagesOptions options) { Guid userId = _userManager.ParseUserId(User); var membership = await GetMembershipIncludingCircle(userId, circleId); if (membership == null) { return(NotFound()); } IEnumerable <Message> messages = _db.Messages .Where(m => m.CircleId == circleId) .OrderBy(m => m.SentAt); // FIXME: da, implement paging if (options == ReadMessagesOptions.Unread) { messages = messages.TakeLast(membership.NumberOfUnreadMessages); // FIXME: da, check generated SQL } membership.NumberOfReadMessages = membership.Circle.NumberOfMessages; await _db.SaveChangesAsync(); Debug.Assert(membership.NumberOfUnreadMessages == 0); return(Ok(messages.Select(m => new MessageViewModel { Id = m.Id, ContentType = m.ContentType, Content = m.Content, SentAt = m.SentAt, SentByMe = m.SentBy == userId, SenderName = m.SenderName, }))); }
public async Task <IEnumerable <MessageViewModel> > ReadMessages(Guid circleId, ReadMessagesOptions options) { return(await _httpClient.PostJsonAsync <IEnumerable <MessageViewModel> >(Urls.GetPostReadMessages(circleId), options)); }