public async Task <IInfiniteScrollResult <User> > GetListForInfiniteScroll(IInfiniteScroll scroll, long userId) { return(await DatabaseContext.Friendships .Where(f => f.InvitedId == userId && f.Inviting.AnonimisationDate == null).Select(u => u.Inviting) .Union(DatabaseContext.Friendships.Where(f => f.InvitingId == userId && f.Invited.AnonimisationDate == null).Select(u => u.Invited)) .OrderBy(u => u.FirstName) .GetInfiniteScrollResult(scroll)); }
public async Task <IInfiniteScrollResult <FriendListItemDTO> > GetFriends(IInfiniteScroll scroll, long userId) { var data = await Unit.Friendships.GetListForInfiniteScroll(scroll, userId); return(new InfiniteScrollResult <FriendListItemDTO> { Items = Mapper.Map <List <FriendListItemDTO> >(data.Items), Scroll = data.Scroll }); }
public async Task <IInfiniteScrollResult <LinkedItemDTO> > GetFriends(IInfiniteScroll scroll, long userId) { var data = await Unit.Users.GetListForInfiniteScroll(scroll, u => u.AcceptedFriends, q => q.FirstName, OrderDirection.ASC); return(new InfiniteScrollResult <LinkedItemDTO> { Items = Mapper.Map <List <LinkedItemDTO> >(data.Items), Scroll = data.Scroll }); }
public async Task <IInfiniteScrollResult <MessageDTO> > GetMessages(IInfiniteScroll scroll, long userId, long friendId) { var data = await Unit.Messages.GetListForInfiniteScroll( scroll, m => (m.SenderId == userId && m.ReceiverId == friendId) || (m.ReceiverId == userId && m.SenderId == friendId), s => s.DateCreated, OrderDirection.DESC); return(new InfiniteScrollResult <MessageDTO> { Items = Mapper.Map <List <MessageDTO> >(data.Items), Scroll = data.Scroll }); }
public async Task <IInfiniteScrollResult <LastMessage> > GetLastMessages(IInfiniteScroll scroll, long userId) { var data = await Unit.Conversations.GetLastMessagesForEachFriend(scroll, userId); var readings = await Unit.MessagesReadings.GetByReceiverId(userId); var items = MapLastMessages(data.Items, readings); return(new InfiniteScrollResult <LastMessage> { Items = items, Scroll = data.Scroll }); }
public static async Task <IInfiniteScrollResult <T> > GetInfiniteScrollResult <T>(this IQueryable <T> query, IInfiniteScroll scroll) where T : class { return(new InfiniteScrollResult <T> { Scroll = scroll, Items = await query.Skip(scroll.RowsLoaded).Take(scroll.UnitSize).ToListAsync() }); }
public virtual async Task <IInfiniteScrollResult <TEntity> > GetListForInfiniteScroll(IInfiniteScroll scroll, Expression <Func <TEntity, bool> > predicate, Expression <Func <TEntity, object> > includeExpression, Expression <Func <TEntity, object> > orderExpression, OrderDirection direction) { if (direction == OrderDirection.ASC) { return(await Context.Set <TEntity>().Include(includeExpression).Where(predicate).OrderBy(orderExpression).GetInfiniteScrollResult(scroll)); } return(await Context.Set <TEntity>().Include(includeExpression).Where(predicate).OrderByDescending(orderExpression).GetInfiniteScrollResult(scroll)); }
public virtual async Task <IInfiniteScrollResult <TEntity> > GetListForInfiniteScroll(IInfiniteScroll scroll, Expression <Func <TEntity, bool> > predicate) { return(await Context.Set <TEntity>().Where(predicate).GetInfiniteScrollResult(scroll)); }
public virtual async Task <IInfiniteScrollResult <TEntity> > GetListForInfiniteScroll(IInfiniteScroll scroll) { return(await Context.Set <TEntity>().GetInfiniteScrollResult(scroll)); }
public async Task <IInfiniteScrollResult <Message> > GetLastMessagesForEachFriend(IInfiniteScroll scroll, long userId) { return(await DatabaseContext.Messages .Include(m => m.Sender) .Include(m => m.Receiver) .Where(m => m.ReceiverId == userId || m.SenderId == userId) .GroupBy(m => m.SenderId) .OrderByDescending(m => m.Max(o => o.DateCreated)) .Select(m => m.LastOrDefault()) .GetInfiniteScrollResult(scroll)); }
public async Task <IInfiniteScrollResult <Message> > GetListForInfiniteScroll(IInfiniteScroll scroll, long principalId, long friendId) { return(await DatabaseContext.Messages .Where(m => (m.ReceiverId == principalId && m.SenderId == friendId) || (m.ReceiverId == friendId && m.SenderId == principalId)) .OrderByDescending(m => m.DateCreated) .GetInfiniteScrollResult(scroll)); }
public async Task <IInfiniteScrollResult <NotificationDTO> > GetNotifications(IInfiniteScroll scroll, long userId) { var reading = await Unit.NotificationsReadings.Get(r => r.UserId == userId); var data = await Unit.InvitationNotifications.GetListForInfiniteScroll(scroll, n => n.UserId == userId, n => n.Friend, n => n.DateCreated, OrderDirection.DESC); var activeIds = data.Items.Where(x => !x.Accepted.HasValue).Select(x => x.Id).ToList(); var items = Mapper.Map <List <NotificationDTO> >(data.Items); items.ForEach(i => { i.CanAccept = activeIds.Contains(i.Id) && i.Type == NotificationType.InvitationSent; i.Unread = reading == null ? true : reading.LastReadingDate < i.DateCreated; }); return(new InfiniteScrollResult <NotificationDTO> { Items = items, Scroll = data.Scroll }); }
public async Task <IInfiniteScrollResult <Conversation> > GetLastMessagesForEachFriend(IInfiniteScroll scroll, long userId) { return(await DatabaseContext.Conversations .Include(c => c.LastMessage) .ThenInclude(m => m.Sender) .Include(c => c.LastMessage) .ThenInclude(m => m.Receiver) .Where(c => c.FirstUserId == userId || c.SecondUserId == userId) .OrderByDescending(c => c.LastMessage.DateCreated) .GetInfiniteScrollResult(scroll)); }