453 lines
17 KiB
C#
453 lines
17 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
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.Xpf.Editors;
|
|
using DevExpress.Xpf.Grid;
|
|
|
|
|
|
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 pWohnheimDC)
|
|
{
|
|
InitializeComponent();
|
|
ViewModel = pWohnheimDC;
|
|
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();
|
|
}
|
|
};
|
|
|
|
//ich glaub es ist alles gesagt
|
|
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.Wohnheim_AllowArchiving))
|
|
{
|
|
lblArchiviert.Visibility = Visibility.Hidden;
|
|
chkArchiviert.Visibility = Visibility.Hidden;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
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 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;
|
|
}
|
|
}
|
|
}
|
|
} |