using System.Windows; using System.Windows.Controls; using System.Windows.Input; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; using BeWo.Core; using BeWo.ServiceProxy; using BeWo.ViewModel; namespace BeWo.View.Controls { /// /// Interaktionslogik für MultiEmployeeSelectionControl.xaml /// public partial class MultiEmployeeSelectionControl : UserControl { private ObservableSortCollection mSelectedEmployees; public MultiEmployeeSelectionControl() { this.InitializeComponent(); this.UpdateListBox(); } public ObservableSortCollection SelectedEmployees { get { return mSelectedEmployees ?? (mSelectedEmployees = new ObservableSortCollection()); } set { mSelectedEmployees = value; } } private void EmployeeSearchView_ItemSelected(object sender, EventArgs e) { this.popupEmployees.IsOpen = false; if (!this.SelectedEmployees.Contains(e.Data)) { this.SelectedEmployees.Add(e.Data); this.listBoxEmployees.SelectedItem = e.Data; this.listBoxEmployees.ScrollIntoView(e.Data); } } internal void UpdateListBox() { if (this.listBoxEmployees != null) this.listBoxEmployees.ItemsSource = this.SelectedEmployees; } private void btnAddEmployee_Click(object sender, RoutedEventArgs e) { this.popupEmployees.IsOpen = true; } private void btnRemoveEmployee_Click(object sender, RoutedEventArgs e) { CompactEmployeeDC dc = ((Button)sender).Tag as CompactEmployeeDC; if (dc != null) { this.SelectedEmployees.Remove(dc); } } private void DoubleClickHandler(object sender, MouseButtonEventArgs e) { var dc = ((ListBoxItem)sender).Content as CompactEmployeeDC; if (dc == null || !BeWoApp.LoggedOnUser.HasRight(UserRightType.EmployeeView_View)) return; VMFactory.CreateEmployeeVMAsync(dc.EmployeeOid, cb => this.Dispatch(() => BeWoUtils.OpenModalViewWindow(cb, null, () => this.Dispatch( delegate { var updatedEmployee = new CompactEmployeeDC(); ServiceFacade.DoEmployeeServiceSync(s => updatedEmployee = s.LoadCompactEmployee(dc.EmployeeOid)); var newList = new ObservableSortCollection(); foreach (var old in mSelectedEmployees) newList.Add(old.Equals(updatedEmployee) ? updatedEmployee : old); mSelectedEmployees = null; mSelectedEmployees = newList; UpdateListBox(); BeWoUtils.UpdateAllViews(dc); } )))); } } }