public async Task <PagedView <View.Call> > Get(CallGetBinding binding) { using (var context = GetMainContext()) { var calls = await context.Calls .WhereUser(UserId) .WhereIf(binding.From.HasValue, x => x.Timestamp >= binding.From.Value) .WhereIf(binding.To.HasValue, x => x.Timestamp <= binding.To.Value) .WhereIf(!string.IsNullOrEmpty(binding.Number), x => x.Number == binding.Number) .Include(x => x.File) .OrderByDescending(x => x.Timestamp) .Select(x => new View.Call(x)) .ToPagedViewAsync(binding); foreach (var call in calls.Items) { var person = await context.People.SingleOrDefaultAsync(x => x.Contacts.Any(y => y.Identifier == call.Number)); call.Person = person.ConvertTo(p => new Model.View.Person.Person(p)); } return(calls); } }
public async Task <IActionResult> Get([FromQuery] CallGetBinding binding) => Ok(await _callHandler.Get(binding));