public async Task <bool> AddBookmarkAsync(long userId, long timelineId) { await _userService.ThrowIfUserNotExist(userId); await _timelineService.ThrowIfTimelineNotExist(timelineId); if (await _database.BookmarkTimelines.AnyAsync(t => t.TimelineId == timelineId && t.UserId == userId)) { return(false); } _database.BookmarkTimelines.Add(new BookmarkTimelineEntity { TimelineId = timelineId, UserId = userId, Rank = (await _database.BookmarkTimelines.CountAsync(t => t.UserId == userId)) + 1 }); await _database.SaveChangesAsync(); return(true); }
public async Task <bool> AddHighlightTimelineAsync(long timelineId, long?operatorId) { await _timelineService.ThrowIfTimelineNotExist(timelineId); if (operatorId.HasValue) { await _userService.ThrowIfUserNotExist(operatorId.Value); } var alreadyIs = await _database.HighlightTimelines.AnyAsync(t => t.TimelineId == timelineId); if (alreadyIs) { return(false); } _database.HighlightTimelines.Add(new HighlightTimelineEntity { TimelineId = timelineId, OperatorId = operatorId, AddTime = _clock.GetCurrentTime(), Order = await _database.HighlightTimelines.CountAsync() + 1 }); await _database.SaveChangesAsync(); return(true); }
public async Task <List <TimelinePostEntity> > GetPostsAsync(long timelineId, DateTime?modifiedSince = null, bool includeDeleted = false) { await _basicTimelineService.ThrowIfTimelineNotExist(timelineId); modifiedSince = modifiedSince?.MyToUtc(); IQueryable <TimelinePostEntity> query = _database.TimelinePosts.Where(p => p.TimelineId == timelineId); if (!includeDeleted) { query = query.Where(p => !p.Deleted); } if (modifiedSince.HasValue) { query = query.Where(p => p.LastUpdated >= modifiedSince || (p.Author != null && p.Author.UsernameChangeTime >= modifiedSince)); } query = query.OrderBy(p => p.Time); return(await query.ToListAsync()); }