private void OnSelectedPatientVariableChanged(Patient patient) { if (currentReadModel != null) { currentReadModel.AppointmentChanged -= OnCurrentReadModelAppointmentsChanged; DisplayedAppointments.Clear(); } ShowPreviousAppointments = false; if (patient != null) { SelectedPatient = patient.Name; readModelRepository.RequestAppointmentsOfAPatientReadModel( patientReadModel => { currentReadModel = patientReadModel; currentReadModel.Appointments.Where(appointment => appointment.Day >= TimeTools.Today()) .Do(AddAppointment); currentReadModel.AppointmentChanged += OnCurrentReadModelAppointmentsChanged; }, patient.Id, errorCallBack ); } else { SelectedPatient = NoPatientSelected; } }
public void RequestAppointmentsOfAPatientReadModel(Action <AppointmentsOfAPatientReadModel> readModelAvailable, Guid patientId, Action <string> errorCallback) { if (cachedPatientReadmodel.ContainsKey(patientId)) { var readModel = cachedPatientReadmodel[patientId]; readModelAvailable(readModel); return; } connectionService.RequestAppointmentsOfAPatient( apointments => { var newReadModel = new AppointmentsOfAPatientReadModel(patientId, eventBus, apointments); if (!cachedPatientReadmodel.ContainsKey(patientId)) { cachedPatientReadmodel.Add(patientId, newReadModel); } readModelAvailable(cachedPatientReadmodel[patientId]); }, patientId, errorCallback ); }