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();
});
}