public async Task <PaginatedList <AppointmentView> > Handle(ListAppointments request, CancellationToken cancellationToken) { var query = _db.AppointmentSnapshots .AsNoTracking() .Select(snapshot => new AppointmentView { Id = snapshot.Id, ScheduledOn = snapshot.ScheduledOn, AttendingVeterinarianId = snapshot.AttendingVeterinarianId, RejectionReason = snapshot.RejectionReason, CancellationReason = snapshot.CancellationReason, Owner = snapshot.Owner, Pet = snapshot.Pet, ReasonForVisit = snapshot.ReasonForVisit, State = snapshot.State.ToString() }) .OrderBy(x => x.ScheduledOn); var count = await query.CountAsync(cancellationToken); var page = await query.Paginate(request.PageIndex, request.PageSize) .ToListAsync(cancellationToken); return(new PaginatedList <AppointmentView>(page, count, request.PageIndex, request.PageSize)); }
public async Task <ActionResult <Page <AppointmentView> > > ListAppointments([FromQuery] ListAppointments query) { var result = await _mediator.Send(query); return(result.ToPage()); }