Exemple #1
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;
            }
        }
        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
                );
        }