private void OnRoomFilterVariableChanged(Guid?guid) { if (guid == null) { SelectedRoomFilter = allRoomFilter; } else { medicalPracticeRepository.RequestMedicalPractice( medicalPractice => { Application.Current.Dispatcher.Invoke(() => { var room = medicalPractice.GetRoomById(guid.Value); selectedRoomFilter = new RoomSelectorData(room.Name, room.Id, room.DisplayedColor); PropertyChanged.Notify(this, nameof(SelectedRoomFilter)); }); }, displayedMedicalPracticeVariable.Value, selectedDateVariable.Value, errorCallback ); } }
public bool CheckSelectionValidity(RoomSelectorData data) { if (appointmentModificationsVariable.Value == null || data == allRoomFilter) { return(true); } return(data.RoomId != null && currentMedicalPractice.GetRoomById(data.RoomId.Value) .TherapyPlaces .Select(therapyPlace => therapyPlace.Id) .Contains(appointmentModificationsVariable.Value.CurrentLocation.TherapyPlaceId)); }
private void CheckSelection(object sender, SelectionChangedEventArgs e) { var roomSelectorViewModel = AssociatedObject.DataContext as RoomFilterViewModel; if (e.AddedItems.Count > 0 && e.AddedItems[0] != previousSelection) { var valid = roomSelectorViewModel?.CheckSelectionValidity((RoomSelectorData)e.AddedItems[0]); if (valid != null && valid.Value) { previousSelection = roomSelectorViewModel.SelectedRoomFilter; } if (valid != null && !valid.Value) { AssociatedObject.SelectedItem = previousSelection; } } e.Handled = true; }