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

QueryContextAsync() private method

private QueryContextAsync ( System.DateTime from, System.DateTime to ) : ZbTask>
from System.DateTime
to System.DateTime
return ZbTask>
        private ZbTask<List<EventViewModel>> QueryContextAsync(DateTime from, DateTime to)
        {
            var predicateCalendars = GetCalendarPredicate();

            ZbTask<List<cal.Event>> queryTask;
            if (from != DateTime.MinValue)
            {
                queryTask = _ctx.GetQuery<cal.Event>()
                    .Where(predicateCalendars)
                    .Where(e => (e.StartDate >= from && e.StartDate <= to) || (e.EndDate >= from && e.EndDate <= to) || (e.StartDate <= from && e.EndDate >= to))
                    .ToListAsync();
            }
            else
            {
                queryTask = _ctx.GetQuery<cal.Event>()
                    .Where(predicateCalendars)
                    .Where(e => e.Recurrence.Frequency != null)
                    .ToListAsync();
            }

            return new ZbTask<List<EventViewModel>>(queryTask)
                .OnResult(t =>
                {
                    t.Result = queryTask.Result
                        .Select(obj =>
                        {
                            var vmdl = (EventViewModel)DataObjectViewModel.Fetch(ViewModelFactory, _ctx, _parent, obj);
                            vmdl.IsReadOnly = true; // Not changeable. TODO: This should be be implicit. This is a merge server data context
                            return vmdl;
                        })
                        .ToList();
                });
        }