644 lines
26 KiB
C#
644 lines
26 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.ServiceModel;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
using BeWo.Controls;
|
|
using BeWo.Core;
|
|
using BeWo.Core.Service;
|
|
using BeWo.ServiceProxy;
|
|
using BeWo.Validation;
|
|
using BeWo.ViewModel;
|
|
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Translation;
|
|
using DevExpress.Mvvm;
|
|
using DevExpress.Xpf.Core;
|
|
using DevExpress.Xpf.Editors;
|
|
using DevExpress.Xpf.Grid;
|
|
using DevExpress.Xpf.Scheduling;
|
|
using DevExpress.XtraGrid.Views.Grid;
|
|
using DevExpress.XtraScheduler.Native;
|
|
|
|
namespace BeWo.View.Detail
|
|
{
|
|
public partial class WohnheimView : BeWoView
|
|
{
|
|
private WohnheimVM _ViewModel;
|
|
|
|
private bool initTabIndex;
|
|
private List<CompactEmployeeDC> regelmaessigeDiensteVonMitarbeiternLoeschen;
|
|
private CompactTeamDC gewaehltesTeam;
|
|
|
|
public WohnheimView(WohnheimVM vm)
|
|
{
|
|
SchedulerControl.AllowInfiniteSize = true;
|
|
|
|
InitializeComponent();
|
|
ViewModel = vm;
|
|
|
|
vm.WohneinheitListVM.PropertyChanged += (s, e) => datagridview.BestFitColumns();
|
|
vm.WohneinheitListVM.WohneinheitBelegungListVM.PropertyChanged += (s, e) => datagridview2.BestFitColumns();
|
|
|
|
regelmaessigeDiensteVonMitarbeiternLoeschen = new List<CompactEmployeeDC>();
|
|
// HACK: Force the devexpress grid to end editing when the mouse is over savebutton
|
|
// by setting the focus to another element.
|
|
MouseMove += (s, e) =>
|
|
{
|
|
if ((grid_EmployeeRelation == null || !grid_EmployeeRelation.IsVisible) &&
|
|
(grid_CustomerRelation == null || !grid_CustomerRelation.IsVisible))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var p = e.GetPosition(btnSave);
|
|
|
|
if (p.X >= 0 && p.X < btnSave.ActualWidth && p.Y >= 0 && p.Y < btnSave.ActualHeight)
|
|
{
|
|
root.Focus();
|
|
}
|
|
};
|
|
|
|
var b = Convert.ToBoolean(ViewModel.PflichtbesetzungEinblenden);
|
|
if (!b)
|
|
{
|
|
textedit_pflichtStart.IsEnabled = false;
|
|
textedit_pflichtEnde.IsEnabled = false;
|
|
textedit_pflichtStart.Opacity = 50;
|
|
textedit_pflichtEnde.Opacity = 50;
|
|
}
|
|
|
|
List<string> sortierungsartenFuerCombobox = new List<string>();
|
|
foreach (var e in Enum.GetValues(typeof(Sortierungsarten)))
|
|
{
|
|
sortierungsartenFuerCombobox.Add(e.ToString());
|
|
}
|
|
combobox_Sortierungsarten.ItemsSource = sortierungsartenFuerCombobox;
|
|
if (combobox_Sortierungsarten.SelectedIndex == -1)
|
|
combobox_Sortierungsarten.SelectedIndex = 0;
|
|
|
|
//popup_newBelegung.Wohneinheiten = ViewModel.WohneinheitListVM.VMList;
|
|
|
|
InitUserRights();
|
|
InitScheduler();
|
|
}
|
|
|
|
private void UserControl_GotFocus(object sender, RoutedEventArgs e)
|
|
{
|
|
if (e.OriginalSource.Equals(this))
|
|
{
|
|
textbox_first.Focus();
|
|
}
|
|
}
|
|
|
|
public override bool IsDirty
|
|
{
|
|
get { return ViewModel != null && ViewModel.IsDirty; }
|
|
}
|
|
|
|
public override string Title
|
|
{
|
|
get { return Translator.Translate("Wohnprojekt"); }
|
|
}
|
|
|
|
internal override DependencyObject ValidationOnSaveRootElement
|
|
{
|
|
get { return grid_details; }
|
|
}
|
|
|
|
internal WohnheimVM ViewModel
|
|
{
|
|
get { return _ViewModel; }
|
|
|
|
set
|
|
{
|
|
_ViewModel = value;
|
|
DataContext = value;
|
|
}
|
|
}
|
|
|
|
protected override UserRightType[] GetSaveDemands()
|
|
{
|
|
return ViewModel.IsNew ? new[] { UserRightType.CreateAll, UserRightType.WohnheimView_Create } : new[] { UserRightType.EditAll, UserRightType.WohnheimView_Edit };
|
|
}
|
|
|
|
protected override void Save()
|
|
{
|
|
var lDataContract = ViewModel.CommitToDataContract();
|
|
|
|
|
|
//Abfrage if Name is null or empty -> Message Bitte den Namen eingeben
|
|
if (textbox_first.Text.Equals(""))
|
|
{
|
|
textbox_first.Focus();
|
|
MessageBox.Show("Bitte dem Wohnprojekt einen Namen geben.");
|
|
}
|
|
else
|
|
{
|
|
//sonst
|
|
try
|
|
{
|
|
if (ViewModel.IsNew)
|
|
{
|
|
IsDoneWithInsertOrUpdate = false;
|
|
ServiceFacade.DoCustomerServiceAsync(s => s.InsertNewWohnheim(lDataContract), ReloadViewModel);
|
|
}
|
|
else
|
|
{
|
|
IsDoneWithInsertOrUpdate = false;
|
|
ServiceFacade.DoCustomerServiceAsync(s => s.UpdateWohnheim(lDataContract, regelmaessigeDiensteVonMitarbeiternLoeschen), ReloadViewModel);
|
|
}
|
|
//if (regelmaessigeDiensteVonMitarbeiternLoeschen.Count > 0 && ViewModel.DataContract.WohnheimOid != null)
|
|
//{
|
|
// ServiceFacade.DoOperationsServiceSync(s => s.DeleteRegelmaessigeDiensteOfRemovedEmployee(regelmaessigeDiensteVonMitarbeiternLoeschen, (long)ViewModel.DataContract.WohnheimOid));
|
|
//}
|
|
|
|
Cache.GetInstance().ClearEmployees();
|
|
BeWoApp.MainControl.ResetView(UIContext.Wohnheim);
|
|
}
|
|
catch (FaultException<BeWoFault>)
|
|
{
|
|
MessageBox.Show(
|
|
"Dieser Datensatz wurde in der Zwischenzeit von " + Translator.Translate("einem anderen Benutzer") + " geändert. Klicken Sie Ok um den Datensatz erneut zu laden. Ihre Änderungen gehen dabei leider verloren.");
|
|
ReloadViewModel(lDataContract.WohnheimOid.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void InitUserRights()
|
|
{
|
|
//ich glaub es ist alles gesagt
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Wohnheim_AllowArchiving))
|
|
{
|
|
lblArchiviert.Visibility = Visibility.Hidden;
|
|
chkArchiviert.Visibility = Visibility.Hidden;
|
|
}
|
|
else
|
|
{
|
|
lblArchiviert.Visibility = Visibility.Visible;
|
|
chkArchiviert.Visibility = Visibility.Visible;
|
|
}
|
|
}
|
|
private void InitScheduler()
|
|
{
|
|
//timelineView.TimeScales.Clear();
|
|
//timelineView.TimeScales.Add(new TimeScale(TimeScaleUnit.Year) { MinWidth = 0 });
|
|
//timelineView.TimeScales.Add(new TimeScale(TimeScaleUnit.Quarter) { MinWidth = 0 });
|
|
//timelineView.TimeScales.Add(new TimeScale(TimeScaleUnit.Month) { MinWidth = 0 });
|
|
//timelineView.TimeScales.Add(new TimeScale(TimeScaleUnit.Week) { MinWidth = 0 });
|
|
//timelineView.TimeScales.Add(new TimeScale(TimeScaleUnit.Day) { MinWidth = 0 });
|
|
|
|
//timelineViewYear.TimeScales.Clear();
|
|
//timelineViewYear.TimeScales.Add(new TimeScale(TimeScaleUnit.Year) { MinWidth = 0 });
|
|
//timelineViewYear.TimeScales.Add(new TimeScale(TimeScaleUnit.Month) { MinWidth = 0 });
|
|
//timelineViewYear.TimeScales.Add(new TimeScale(TimeScaleUnit.Day) { MinWidth = 0 });
|
|
|
|
//timelineViewWeek.TimeScales.Clear();
|
|
//timelineViewWeek.TimeScales.Add(new TimeScale(TimeScaleUnit.Day) { MinWidth = 0 });
|
|
|
|
//timelineViewMonth.TimeScales.Clear();
|
|
//timelineViewMonth.TimeScales.Add(new TimeScale(TimeScaleUnit.Week) { MinWidth = 0 });
|
|
//timelineViewMonth.TimeScales.Add(new TimeScale(TimeScaleUnit.Day) { MinWidth = 0 });
|
|
}
|
|
|
|
private void ReloadViewModel(long pOid)
|
|
{
|
|
VMFactory.CreateWohnheimVMAsync(pOid, cb => this.Dispatch(delegate { ViewModel = cb; }));
|
|
|
|
IsDoneWithInsertOrUpdate = true;
|
|
}
|
|
|
|
private void button_addMitarbeiterRelation_Klick(object sender, RoutedEventArgs e)
|
|
{
|
|
popup_newEmployeeRel.IsOpen = true;
|
|
}
|
|
private void button_addKlientRelation_Klick(object sender, RoutedEventArgs e)
|
|
{
|
|
popup_newKlientRel.IsOpen = true;
|
|
|
|
}
|
|
private void button_addEmployeeRelation_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (ValidationTrigger.Validate(groupbox_newEmployeeRel))
|
|
{
|
|
|
|
bool contains = false;
|
|
foreach (var item in ViewModel.WohnheimEmployeeRelations.VMList)
|
|
{
|
|
if (item.Employee.EmployeeOid == ViewModel.WohnheimEmployeeRelations.NewVM.Employee.EmployeeOid)
|
|
{
|
|
contains = true;
|
|
break;
|
|
}
|
|
}
|
|
if (contains)
|
|
return;
|
|
|
|
popup_newEmployeeRel.IsOpen = false;
|
|
ViewModel.WohnheimEmployeeRelations.AddNewVMToList();
|
|
}
|
|
}
|
|
private void button_addTeamRelation_Click(object sender, RoutedEventArgs e) //TEAM
|
|
{
|
|
if (ValidationTrigger.Validate(groupbox_newTeamRel))
|
|
{
|
|
popup_newTeamRel.IsOpen = false;
|
|
var empsInTeam = ServiceFacade.DoOperationsServiceSync(s => s.GetCompactEmployeesForTeam(gewaehltesTeam.TeamOid));
|
|
var notice = textbox_teamRelations_Notice.Text;
|
|
|
|
foreach (var emp in empsInTeam)
|
|
{
|
|
bool contains = false;
|
|
foreach (var item in ViewModel.WohnheimEmployeeRelations.VMList)
|
|
{
|
|
if (item.Employee.EmployeeOid == emp.EmployeeOid)
|
|
{
|
|
contains = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (contains)
|
|
continue;
|
|
|
|
ViewModel.WohnheimEmployeeRelations.NewVM.Employee = emp;
|
|
ViewModel.WohnheimEmployeeRelations.NewVM.Notice = notice;
|
|
ViewModel.WohnheimEmployeeRelations.AddNewVMToList();
|
|
}
|
|
|
|
}
|
|
}
|
|
private void button_openTeamRelation_Click(object sender, RoutedEventArgs e) // TEAM
|
|
{
|
|
popup_newTeamRel.IsOpen = true;
|
|
}
|
|
private void button_cancelEmployeeRelation_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
popup_newEmployeeRel.IsOpen = false;
|
|
}
|
|
private void button_cancelTeamRelation_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
popup_newTeamRel.IsOpen = false;
|
|
}
|
|
|
|
private void Employeesearchview_EnvironmentEmployeeSelected(object sender, EventArgs<CompactEmployeeDC> e)
|
|
{
|
|
popup_employee.IsOpen = false;
|
|
employeesearchview.ItemSelected -= Employeesearchview_EnvironmentEmployeeSelected;
|
|
ViewModel.WohnheimEmployeeRelations.NewVM.Employee = e.Data;
|
|
popup_employee.Focus();
|
|
}
|
|
private void popupedit_EmployeeRelations_PopUpClick(object sender, RoutedEventArgs e)
|
|
{
|
|
employeesearchview.ItemSelected += Employeesearchview_EnvironmentEmployeeSelected;
|
|
popup_employee.IsOpen = true;
|
|
}
|
|
private void Teamsearchview_EnvironmentTeamSelected(object sender, EventArgs<CompactTeamDC> e)
|
|
{
|
|
popup_team.IsOpen = false;
|
|
teamsearchview.ItemSelected -= Teamsearchview_EnvironmentTeamSelected;
|
|
ViewModel.WohnheimTeamRelations = e.Data;
|
|
ViewModel.WohnheimTeamRelations.Name = e.Data.Name;
|
|
|
|
gewaehltesTeam = e.Data;
|
|
|
|
popup_team.Focus();
|
|
}
|
|
private void popupedit_TeamRelations_PopUpClick(object sender, RoutedEventArgs e) // First
|
|
{
|
|
teamsearchview.ItemSelected += Teamsearchview_EnvironmentTeamSelected;
|
|
popup_team.IsOpen = true;
|
|
}
|
|
private void Popupedit_EmployeeRelations_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || !BeWoApp.LoggedOnUser.HasRight(UserRightType.EmployeeView_View))
|
|
{
|
|
return;
|
|
}
|
|
|
|
CreateModalViewWindow(ViewModel.WohnheimEmployeeRelations.NewVM.Employee);
|
|
}
|
|
private void Popupedit_TeamRelations_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e) // TEAM
|
|
{
|
|
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || !BeWoApp.LoggedOnUser.HasRight(UserRightType.EmployeeView_View))
|
|
{
|
|
return;
|
|
}
|
|
// Läuft durch aber ruft nichts auf
|
|
CreateModalViewWindow(ViewModel.WohnheimTeamRelations);
|
|
}
|
|
private void popupedit_TeamRelations_SelectionChanged(object sender, RoutedEventArgs e)
|
|
{
|
|
popup_team.IsOpen = false;
|
|
//popupedit_TeamRelations.Text = popupedit_TeamRelations.SelectedText;
|
|
}
|
|
|
|
public void button_removeEmployeeRelation_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
//if (ViewModel.DataContract.WohnheimOid.HasValue)
|
|
//{
|
|
regelmaessigeDiensteVonMitarbeiternLoeschen.Add(grid_EmployeeRelation.GetCurrentValue<WohnheimEmployeeRelationVM>().Employee);
|
|
// ServiceFacade.DoOperationsServiceSync(s => s.DeleteRegelmaessigeDiensteOfRemovedEmployee(regelmaessigeDiensteVonMitarbeiternLoeschen, (long)ViewModel.DataContract.WohnheimOid));
|
|
// //regelmaessigeDiensteVonMitarbeiternLoeschen = new List<CompactEmployeeDC>();
|
|
//}
|
|
ViewModel.WohnheimEmployeeRelations.VMList.Remove(grid_EmployeeRelation.GetCurrentValue<WohnheimEmployeeRelationVM>());
|
|
|
|
BeWoWpfUtils.RefreshDXGrid(grid_EmployeeRelation);
|
|
}
|
|
private void button_addKlientRelation_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
bool contains = false;
|
|
foreach (var item in ViewModel.WohnheimCustomerRelations.VMList)
|
|
{
|
|
if (item.Customer.Oid == ViewModel.WohnheimCustomerRelations.NewVM.Customer.CustomerOid)
|
|
{
|
|
contains = true;
|
|
break;
|
|
}
|
|
}
|
|
if (contains)
|
|
return;
|
|
|
|
popup_newKlientRel.IsOpen = false;
|
|
ViewModel.WohnheimCustomerRelations.AddNewVMToList();
|
|
}
|
|
private void button_cancelKlientRelation_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
popup_newKlientRel.IsOpen = false;
|
|
}
|
|
private void Klientsearchview_EnvironmentKlientSelected(object sender, EventArgs<CompactCustomerDC> e)
|
|
{
|
|
popup_klient.IsOpen = false;
|
|
klientsearchview.ItemSelected -= Klientsearchview_EnvironmentKlientSelected;
|
|
ViewModel.WohnheimCustomerRelations.NewVM.Customer = e.Data;
|
|
popup_klient.Focus();
|
|
}
|
|
private void popupedit_KlientRelations_PopUpClick(object sender, RoutedEventArgs e)
|
|
{
|
|
klientsearchview.ItemSelected += Klientsearchview_EnvironmentKlientSelected;
|
|
popup_klient.IsOpen = true;
|
|
}
|
|
private void Popupedit_KlientRelations_OnPreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
|
{
|
|
if (!BeWoUtils.CheckPopupEditClickableSpace((PopUpEdit)sender, e) || !BeWoApp.LoggedOnUser.HasRight(UserRightType.WohnheimView_View))
|
|
{
|
|
return;
|
|
}
|
|
|
|
CreateModalViewWindow(ViewModel.WohnheimCustomerRelations.NewVM.Customer);
|
|
}
|
|
public void Button_RemoveCustomerRelation_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
ViewModel.WohnheimCustomerRelations.VMList.Remove(grid_CustomerRelation.GetCurrentValue<WohnheimCustomerRelationVM>());
|
|
BeWoWpfUtils.RefreshDXGrid(grid_CustomerRelation);
|
|
}
|
|
private void TableViewCustomer_OnRowDoubleClick(object sender, RowDoubleClickEventArgs e)
|
|
{
|
|
var tableView = (TableView)sender;
|
|
var selectedVM = (WohnheimCustomerRelationVM)tableView.Grid.GetRow(e.HitInfo.RowHandle);
|
|
|
|
if (selectedVM == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
CreateModalViewWindow((selectedVM).Customer);
|
|
}
|
|
private void TableViewEmployee_OnRowDoubleClick(object sender, RowDoubleClickEventArgs e)
|
|
{
|
|
var tableView = (TableView)sender;
|
|
var selectedVM = (WohnheimEmployeeRelationVM)tableView.Grid.GetRow(e.HitInfo.RowHandle);
|
|
|
|
if (selectedVM == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
CreateModalViewWindow((selectedVM).Employee);
|
|
}
|
|
private void CreateModalViewWindow<T>(T pDC) where T : IDataContract
|
|
{
|
|
if (pDC == null)
|
|
return;
|
|
|
|
var pDCType = pDC.GetType();
|
|
|
|
if (pDCType == typeof(CompactEmployeeDC))
|
|
{
|
|
VMFactory.CreateEmployeeVMAsync((pDC as CompactEmployeeDC).EmployeeOid,
|
|
cb => this.Dispatch(
|
|
() => BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, WohnheimView>(cb, this, () => this.Dispatch(
|
|
() => BeWoUtils.UpdateAllViews((pDC as CompactEmployeeDC))))));
|
|
}
|
|
|
|
if (pDCType == typeof(CompactCustomerDC))
|
|
{
|
|
VMFactory.CreateCustomerVMAsync((pDC as CompactCustomerDC).CustomerOid,
|
|
cb => this.Dispatch(
|
|
() => BeWoUtils.OpenModalViewWindow<CustomerVM, CustomerDC, WohnheimView>(cb, this, () => this.Dispatch(
|
|
() => BeWoUtils.UpdateAllViews((pDC as CompactCustomerDC))))));
|
|
}
|
|
}
|
|
private void chkStatuszeile_Checked(object sender, RoutedEventArgs e)
|
|
{
|
|
//textedit_pflichtStart.IsEnabled = true;
|
|
//textedit_pflichtEnde.IsEnabled = true;
|
|
//textedit_pflichtStart.Opacity = 100;
|
|
//textedit_pflichtEnde.Opacity = 100;
|
|
}
|
|
private void chkStatuszeile_Unchecked(object sender, RoutedEventArgs e)
|
|
{
|
|
//textedit_pflichtStart.IsEnabled = false;
|
|
//textedit_pflichtEnde.IsEnabled = false;
|
|
//textedit_pflichtStart.Opacity = 50;
|
|
//textedit_pflichtEnde.Opacity = 50;
|
|
}
|
|
private void chkStatuszeile_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
|
|
{
|
|
var checkbox = sender as CheckEdit;
|
|
if ((bool)checkbox.EditValue == false)
|
|
{
|
|
textedit_pflichtStart.IsEnabled = false;
|
|
textedit_pflichtEnde.IsEnabled = false;
|
|
textedit_pflichtStart.Opacity = 50;
|
|
textedit_pflichtEnde.Opacity = 50;
|
|
}
|
|
else
|
|
{
|
|
textedit_pflichtStart.IsEnabled = true;
|
|
textedit_pflichtEnde.IsEnabled = true;
|
|
textedit_pflichtStart.Opacity = 100;
|
|
textedit_pflichtEnde.Opacity = 100;
|
|
}
|
|
}
|
|
|
|
private void Button_NewWohneinheit_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!ViewModel.PermissionWohneinheitCreate)
|
|
return;
|
|
|
|
var vmlist = ViewModel.WohneinheitListVM;
|
|
|
|
vmlist.CurrentVM = vmlist.NewVM;
|
|
vmlist.NewVM.Baujahr = 1900;
|
|
|
|
popup_newWohneinheit.IsOpen = true;
|
|
}
|
|
private void Button_NewBelegung_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!ViewModel.PermissionWohneinheitBelegungCreate)
|
|
return;
|
|
|
|
var einheit_list_vm = ViewModel.WohneinheitListVM;
|
|
|
|
var beleg_list_vm = einheit_list_vm.WohneinheitBelegungListVM;
|
|
|
|
beleg_list_vm.CurrentVM = beleg_list_vm.NewVM;
|
|
|
|
var today = DateTime.Today;
|
|
var first_next_month = new DateTime(today.Year, today.Month, 1);
|
|
|
|
beleg_list_vm.CurrentVM.StartDate = first_next_month;
|
|
|
|
popup_newBelegung.IsOpen = true;
|
|
}
|
|
private void btn_delete_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!ViewModel.PermissionWohneinheitDelete)
|
|
return;
|
|
|
|
if (ViewModel.WohneinheitListVM.EditVM is object)
|
|
return;
|
|
|
|
var vm = datagrid_wohneinheiten.GetCurrentValue<WohneinheitVM>();
|
|
|
|
ViewModel.WohneinheitListVM.VMList.Remove(vm);
|
|
|
|
e.Handled = true;
|
|
}
|
|
private void btn_belegung_delete_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if (!ViewModel.PermissionWohneinheitBelegungDelete)
|
|
return;
|
|
|
|
var listvm = ViewModel.WohneinheitListVM.WohneinheitBelegungListVM;
|
|
|
|
if (listvm.EditVM is object)
|
|
return;
|
|
|
|
var vm = datagrid_belegung.GetCurrentValue<WohneinheitBelegungVM>();
|
|
|
|
var parent = vm.Wohneinheit;
|
|
|
|
parent.Belegungen.VMList.Remove(vm);
|
|
|
|
_ = listvm.VMList.Remove(vm);
|
|
|
|
e.Handled = true;
|
|
}
|
|
private void datagridview_RowDoubleClick(object sender, RowDoubleClickEventArgs e)
|
|
{
|
|
if (!ViewModel.PermissionWohneinheitEdit)
|
|
return;
|
|
|
|
var vm = datagrid_wohneinheiten.GetCurrentValue<WohneinheitVM>();
|
|
|
|
if (vm is null || popup_newWohneinheit.IsOpen || !ViewModel.WohneinheitListVM.VMList.Contains(vm))
|
|
return;
|
|
|
|
ViewModel.WohneinheitListVM.EditVM = vm;
|
|
ViewModel.WohneinheitListVM.CurrentVM = ViewModel.WohneinheitListVM.EditVM;
|
|
|
|
popup_newWohneinheit.IsOpen = true;
|
|
}
|
|
private void datagridview2_RowDoubleClick(object sender, RowDoubleClickEventArgs e)
|
|
{
|
|
if (!ViewModel.PermissionWohneinheitBelegungEdit)
|
|
return;
|
|
|
|
var vm = datagrid_belegung.GetCurrentValue<WohneinheitBelegungVM>();
|
|
|
|
if (vm is null || popup_newBelegung.IsOpen || !ViewModel.WohneinheitListVM.WohneinheitBelegungListVM.VMList.Contains(vm))
|
|
return;
|
|
|
|
ViewModel.WohneinheitListVM.WohneinheitBelegungListVM.EditVM = vm;
|
|
ViewModel.WohneinheitListVM.WohneinheitBelegungListVM.CurrentVM = vm;
|
|
|
|
popup_newBelegung.IsOpen = true;
|
|
}
|
|
|
|
void scheduler_ActiveViewChanged(object sender, ValueChangedEventArgs<ViewBase> e)
|
|
{
|
|
if (e.NewValue == null) return;
|
|
var selectionStart = scheduler_buchungsplan.SelectedInterval.Start;
|
|
var dates = new List<DateTime>() { selectionStart.Date };
|
|
if (!CoerceDateNavigatorSelectedDates(dates))
|
|
return;
|
|
|
|
var min = dates.Min();
|
|
scheduler_buchungsplan.Start = min;
|
|
var intervalDuration = dates.Max().AddDays(1) - min;
|
|
|
|
var timeline = (TimelineView)e.NewValue;
|
|
timeline.IntervalDuration = intervalDuration;
|
|
timeline.ViewportStart = selectionStart;
|
|
timeline.Zoom = intervalDuration;
|
|
|
|
scheduler_buchungsplan.SelectedInterval = new DateTimeRange(selectionStart, TimeSpan.Zero);
|
|
}
|
|
bool CoerceDateNavigatorSelectedDates(IList<DateTime> dates)
|
|
{
|
|
if (dates.Count == 0) return false;
|
|
var start = dates.Min();
|
|
var end = dates.Max();
|
|
if (timelineViewWeek.IsActive)
|
|
{
|
|
var actualStart = DateTimeHelper.GetStartOfWeekUI(start, scheduler_buchungsplan.FirstDayOfWeek);
|
|
var actualEnd = actualStart.AddDays(7);
|
|
dates.Clear();
|
|
while (actualStart < actualEnd)
|
|
{
|
|
dates.Add(actualStart);
|
|
actualStart = actualStart.AddDays(1);
|
|
}
|
|
return true;
|
|
}
|
|
if (timelineViewMonth.IsActive)
|
|
{
|
|
var actualStart = new DateTime(start.Year, start.Month, 1);
|
|
var actualEnd = actualStart.AddMonths(1);
|
|
dates.Clear();
|
|
while (actualStart < actualEnd)
|
|
{
|
|
dates.Add(actualStart);
|
|
actualStart = actualStart.AddDays(1);
|
|
}
|
|
return true;
|
|
}
|
|
if (timelineViewYear.IsActive)
|
|
{
|
|
var actualStart = new DateTime(start.Year, 1, 1);
|
|
var actualEnd = actualStart.AddYears(1);
|
|
dates.Clear();
|
|
while (actualStart < actualEnd)
|
|
{
|
|
dates.Add(actualStart);
|
|
actualStart = actualStart.AddDays(1);
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
private void scheduler_buchungsplan_PopupMenuShowing(object sender, DevExpress.Xpf.Scheduling.PopupMenuShowingEventArgs e)
|
|
{
|
|
e.Cancel = true;
|
|
}
|
|
}
|
|
} |