private void OnCurrentReadModelAppointmentsChanged(object sender, RawAppointmentChangedEventArgs appointmentChangedEventArgs) { if (!ShowPreviousAppointments && appointmentChangedEventArgs.Appointment.Day < TimeTools.Today()) { return; } switch (appointmentChangedEventArgs.ChangeAction) { case ChangeAction.Added: { AddAppointment(appointmentChangedEventArgs.Appointment); break; } case ChangeAction.Deleted: { var appointmentToRemove = DisplayedAppointments.First(app => app.AppointmentRawData.Id == appointmentChangedEventArgs.Appointment.Id); DisplayedAppointments.Remove(appointmentToRemove); DisplayedAppointments.Sort(new AppointmentSorter()); break; } case ChangeAction.Modified: { var oldAppointment = DisplayedAppointments.First(appointment => appointment.AppointmentRawData.Id == appointmentChangedEventArgs.Appointment.Id); DisplayedAppointments.Remove(oldAppointment); AddAppointment(appointmentChangedEventArgs.Appointment); break; } } }
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; } }
private void AddAppointment(AppointmentTransferData newAppointmentData) { medicalPracticeRepository.RequestMedicalPractice( practice => { Application.Current.Dispatcher.Invoke(() => { DisplayedAppointments.Add(new DisplayAppointmentData(newAppointmentData, practice.Name)); DisplayedAppointments.Sort(new AppointmentSorter()); CheckDisplayedAppointmentCount(); }); }, newAppointmentData.MedicalPracticeId, newAppointmentData.Day, errorCallBack ); }