using System; using System.Linq; using System.Windows; using System.Windows.Controls; using BeWo.ServiceProxy; using BeWo.ViewModel; using BS.Shared; using BS.Shared.Core; using BS.Shared.DataContracts.Compact; using BS.Shared.Extensions; using BeWo.ViewModel.ListViewModel; namespace BeWo.View.Detail { /// /// Interaction logic for GroupView.xaml /// public partial class GroupOfPeopleView : BeWoView { private GroupOfPeopleListVM _ViewModel; public GroupOfPeopleView(GroupOfPeopleListVM pViewModel) { this.InitializeComponent(); this.ViewModel = pViewModel; } public event EventHandler> GroupOfPeopleSavedOrUpdated; public override bool IsDirty { get { return this.ViewModel != null && this.ViewModel.IsDirty; } } public override string Title { get { return "Gruppe"; } } private GroupOfPeopleListVM ViewModel { get { return this._ViewModel; } set { this._ViewModel = value; this.DataContext = value; } } protected override UserRightType[] GetSaveDemands() { return new[] { UserRightType.EditAll, UserRightType.GroupOfPeopleView_Edit }; } protected override void Save() { foreach (var vm in this.ViewModel.VMList) { var dc = vm.CommitToDataContract(); if (vm.IsNew) { ServiceFacade.DoEmployeeServiceSync(s => s.InsertNewGroupOfPeople(dc)); } else if (vm.IsDirty) { ServiceFacade.DoEmployeeServiceSync(s => s.UpdateGroupOfPeople(dc)); } } if (ViewModel.RemovedCount > 0) { foreach (var dc in ViewModel.GetRemoved()) { if (dc.GroupOfPeopleOid.HasValue) ServiceFacade.DoEmployeeServiceSync(s => s.DeactivateGroupOfPeople(dc.GroupOfPeopleOid.Value, dc.GroupOfPeopleVersion.Value)); } } if (this.GroupOfPeopleSavedOrUpdated != null) { this.GroupOfPeopleSavedOrUpdated(this, new EventArgs(ViewModel)); } } private void ReloadViewModel(long pOid) { VMFactory.CreateGroupOfPeopleListVMAsync( cb => this.Dispatch( delegate { if (this.GroupOfPeopleSavedOrUpdated != null) { this.GroupOfPeopleSavedOrUpdated(this, new EventArgs(cb)); } //this.ViewModel = cb; })); } private void button_add_Click(object sender, RoutedEventArgs e) { this.ViewModel.EditVM.SupportConceptList.AddRange(this.SupportConceptSearchView.SelectedItems.Where(em => !this.ViewModel.EditVM.SupportConceptList.Contains(em))); } private void button_remove_Click(object sender, RoutedEventArgs e) { this.ViewModel.EditVM.SupportConceptList.Remove((CompactSupportConceptDC)((Button)sender).Tag); } private void button_removegroup_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; if (btn != null) { GroupOfPeopleVM vm = btn.Tag as GroupOfPeopleVM; if (vm != null) this.ViewModel.VMList.Remove(vm); } } private void btnAddGroup_Click(object sender, RoutedEventArgs e) { var vm = ViewModel.NewVM; vm.Name = "Neue Gruppe"; vm.CreatedByEmployeeOid = BeWoApp.LoggedOnEmployee.EmployeeOid.Value; ViewModel.AddNewVMToList(true); } } }