public MedicalPracticeSelectorViewModel(ISession session, IClientMedicalPracticeRepository medicalPracticeRepository, ILocalSettingsRepository localSettingsRepository, ISharedState <Guid> selectedMedicalPracticeIdVariable, ISharedStateReadOnly <AppointmentModifications> appointmentModificationsVariable, Action <string> errorCallback) { this.localSettingsRepository = localSettingsRepository; this.selectedMedicalPracticeIdVariable = selectedMedicalPracticeIdVariable; this.appointmentModificationsVariable = appointmentModificationsVariable; selectedMedicalPracticeIdVariable.StateChanged += OnSelectedMedicalPracticeIdVariableChanged; appointmentModificationsVariable.StateChanged += OnAppointmentModificationVariableChanged; AvailableMedicalPractices = session.LoggedInUser .ListOfAccessablePractices .Select(practiceId => new MedicalPracticeDisplayData(practiceId, practiceId.ToString())) .ToObservableCollection(); foreach (var medicalPracticeDisplayData in AvailableMedicalPractices) { medicalPracticeRepository.RequestMedicalPractice( practice => { medicalPracticeDisplayData.PracticeName = practice.Name; }, medicalPracticeDisplayData.MedicalPracticeId, errorCallback ); } SelectedMedicalPractice = AvailableMedicalPractices.First(practice => practice.MedicalPracticeId == selectedMedicalPracticeIdVariable.Value); PracticeIsSelectable = true; }
private void OnSelectedPageStateChanged(MainPage mainPage) { if (mainPage == MainPage.HoursOfOpening) { AvailableMedicalPractices.Clear(); dataCenter.GetAllMedicalPractices() .Select(medPractice => new MedPracticeDisplayData(medPractice.Name, medPractice.Id)) .Do(AvailableMedicalPractices.Add); IsAnyPracticeAvailable = AvailableMedicalPractices.Count > 0; } }
private void OnSelectedMedicalPracticeIdVariableChanged(Guid medicalPracticeId) { localSettingsRepository.LastUsedMedicalPracticeId = medicalPracticeId; selectedPractice = AvailableMedicalPractices.First(practice => practice.MedicalPracticeId == medicalPracticeId); PropertyChanged.Notify(this, nameof(SelectedMedicalPractice)); }