public async Task <ActionResult <IReadOnlyList <AppointmentReadModel> > > GetAllForDoctor(Guid doctorId) { var query = new GetAppointmentsForDoctorQuery(doctorId); var appointmentReadModels = await _getAllAppointmentsForDoctorQueryHandler.HandleAsync(query); return(Ok(appointmentReadModels)); }
public async Task <IReadOnlyList <AppointmentReadModel> > HandleAsync(GetAppointmentsForDoctorQuery query, CancellationToken cancellationToken = default(CancellationToken)) { var doctorTables = await _readModelData.GetDoctorTablesAsync(cancellationToken); var doctorTable = doctorTables.SingleOrDefault(x => x.DoctorId == query.DoctorId); if (doctorTable == null) { throw new EntityNotFoundException($"The requested doctor ({query.DoctorId}) was not found."); } var appointmentTables = await _readModelData.GetAppointmentTablesAsync(cancellationToken); return(appointmentTables.Where(x => x.DoctorId == query.DoctorId).Select(x => new AppointmentReadModel { AppointmentAt = x.AppointmentAt, DoctorId = x.DoctorId, AppointmentId = x.AppointmentId, AppointmentDurationInMinutes = x.Duration, PatientId = x.PatientId }).ToList()); }