예제 #1
0
        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;
            }
            }
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        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
                );
        }