public object GetFeed( string product, ApiDateTime from, ApiDateTime to, Guid? author, bool? onlyNew, ApiDateTime timeReaded) { var filter = new FeedApiFilter { Product = product, From = from != null ? from.UtcTime : DateTime.MinValue, To = to != null ? to.UtcTime : DateTime.MaxValue, Offset = (int)context.StartIndex, Max = (int)context.Count - 1, Author = author ?? Guid.Empty, SearchKeys = context.FilterValues, OnlyNew = onlyNew.HasValue && onlyNew.Value }; var feedReadedProvider = new FeedReadedDataProvider(); var lastTimeReaded = feedReadedProvider.GetTimeReaded(); var readedDate = timeReaded != null ? (ApiDateTime)timeReaded.UtcTime : (ApiDateTime)lastTimeReaded; var commentReadedDate = (ApiDateTime)feedReadedProvider.GetTimeReaded("comments"); if (filter.OnlyNew) { filter.From = (ApiDateTime)lastTimeReaded; filter.Max = 100; } else if (timeReaded == null) { feedReadedProvider.SetTimeReaded(); feedReadedProvider.SetTimeReaded("comments"); } var feeds = FeedAggregateDataProvider .GetFeeds(filter) .GroupBy(n => n.GroupId, n => new FeedWrapper(n), (n, group) => { var firstFeed = group.First(); firstFeed.GroupedFeeds = group.Skip(1); return firstFeed; }) .ToList(); context.SetDataPaginated(); return new {feeds, readedDate, commentReadedDate}; }
public object GetFeed( string product, ApiDateTime from, ApiDateTime to, Guid? author, bool? onlyNew, ApiDateTime timeReaded) { var filter = new FeedApiFilter { Product = product, Offset = (int)context.StartIndex, Max = (int)context.Count - 1, Author = author ?? Guid.Empty, SearchKeys = context.FilterValues, OnlyNew = onlyNew.HasValue && onlyNew.Value }; if (from != null && to != null) { var f = TenantUtil.DateTimeFromUtc(from.UtcTime); filter.From = new DateTime(f.Year, f.Month, f.Day, 0, 0, 0); var t = TenantUtil.DateTimeFromUtc(to.UtcTime); filter.To = new DateTime(t.Year, t.Month, t.Day, 23, 59, 59); } else { filter.From = from != null ? from.UtcTime : DateTime.MinValue; filter.To = to != null ? to.UtcTime : DateTime.MaxValue; } var feedReadedProvider = new FeedReadedDataProvider(); var lastTimeReaded = feedReadedProvider.GetTimeReaded(); var readedDate = timeReaded != null ? (ApiDateTime)timeReaded.UtcTime : (ApiDateTime)lastTimeReaded; if (filter.OnlyNew) { filter.From = (ApiDateTime)lastTimeReaded; filter.Max = 100; } else if (timeReaded == null) { feedReadedProvider.SetTimeReaded(); newFeedsCountCache.Remove(GetNewFeedsCountKey()); } var feeds = FeedAggregateDataProvider .GetFeeds(filter) .GroupBy(n => n.GroupId, n => new FeedWrapper(n), (n, group) => { var firstFeed = group.First(); firstFeed.GroupedFeeds = group.Skip(1); return firstFeed; }) .ToList(); context.SetDataPaginated(); return new {feeds, readedDate}; }