Zetbox.Client.Presentables.Calendar.FetchCache.MakeFetchTask C# (CSharp) Method

MakeFetchTask() private method

private MakeFetchTask ( System.DateTime from, System.DateTime to ) : ZbTask>
from System.DateTime
to System.DateTime
return ZbTask>
        private ZbTask<IEnumerable<EventViewModel>> MakeFetchTask(DateTime from, DateTime to)
        {
            var result = new List<ZbTask<List<EventViewModel>>>();

            for (var curDay = from.Date; curDay <= to; curDay = curDay.AddDays(1))
            {
                FetchCacheEntry entry;
                if (_cache.TryGetValue(curDay, out entry))
                {
                    if (entry.FetchTime.AddMinutes(5) > DateTime.Now)
                    {
                        result.Add(entry.EventsTask);
                    }
                    else
                    {
                        _cache.Remove(curDay);
                        entry = FetchCacheEntry.None;
                    }
                }

                if (entry == FetchCacheEntry.None)
                {
                    entry = new FetchCacheEntry(QueryContextAsync(curDay, curDay.AddDays(1)));
                    _cache.Add(curDay, entry);
                    result.Add(entry.EventsTask);
                }
            }

            return new ZbTask<IEnumerable<EventViewModel>>(result)
                .OnResult(t =>
                {
                    t.Result = result.Distinct().SelectMany(r => r.Result).Distinct();
                });
        }