Files
BeWoPlaner/BeWo/View/EmployeeArbeitszeitView.xaml.cs

282 lines
9.1 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Documents;
2017-05-17 08:28:12 +02:00
using System.Windows.Forms.VisualStyles;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Navigation;
using System.Windows.Threading;
using BeWo.Controls;
using BeWo.Core;
using BeWo.ViewModel;
using BeWo.ServiceProxy;
using BeWo.Validation;
2017-05-17 08:28:12 +02:00
using BeWo.View.Controls;
using BeWo.View.Search;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;
using DevExpress.Xpf.Editors;
using DevExpress.Xpf.Grid;
using Microsoft.Win32;
namespace BeWo.View
{
public partial class EmployeeArbeitszeitView
{
2017-05-17 08:28:12 +02:00
private EmployeeVM _ViewModel;
2017-05-17 08:28:12 +02:00
long? employeeOid;
2017-05-17 08:28:12 +02:00
public EmployeeArbeitszeitView(EmployeeVM employeeVm, long? oid)
{
InitializeComponent();
2017-05-17 08:28:12 +02:00
tabcontrol_Arbeitszeit.Loaded += (s, e) =>
{
2017-05-17 08:28:12 +02:00
if (tabcontrol_Arbeitszeit.Items.Count > 0)
{
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
}
};
employeeOid = oid;
2017-05-17 08:28:12 +02:00
ViewModel = employeeVm;
}
public EmployeeVM ViewModel
{
2017-05-17 08:28:12 +02:00
get { return _ViewModel; }
set
{
DataContext = value;
2017-05-17 08:28:12 +02:00
_ViewModel = value;
}
}
public void RefreshView()
{
DataContext = null; // Sonst refresht die GUI nach den Save nicht richtig
DataContext = _ViewModel;
//if (_ViewModel != null && _ViewModel.Arbeitszeiten != null)
//{
// tabcontrol_Arbeitszeit.ItemsSource = _ViewModel.Arbeitszeiten.VMList;
//}
}
2017-05-17 08:28:12 +02:00
private void ButtonOpenAndAddArbeitszeitClick(object sender, RoutedEventArgs e)
{
2017-05-17 08:28:12 +02:00
ViewModel.Arbeitszeiten.AddNewVMToList();
2017-05-17 08:28:12 +02:00
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
}
2017-05-17 08:28:12 +02:00
private void PopupNewArbeitszeit_Click(object sender, RoutedEventArgs e)
{
var vali = tabcontrol_Arbeitszeit.GetAllChildren().OfType<PopupNonTopmost>();
var groupbox_newArbeistzeitVal = vali.First(x => x.Name.Equals("popup_newArbeitszeitEintrag"));
if (ValidationTrigger.Validate(groupbox_newArbeistzeitVal))
{
var tab = tabcontrol_Arbeitszeit.Items.GetItemAt(tabcontrol_Arbeitszeit.SelectedIndex);
var avm = tab as ArbeitszeitVM;
if (avm != null)
{
if (currentKlient != null)
{
avm.ArbeitszeitEintraege.NewVM.CompactCustomer = currentKlient;
currentKlient = null;
}
if (letztesPopUpEdit != null)
{
letztesPopUpEdit.Text = "";
}
avm.ArbeitszeitEintraege.AddNewVMToList();
}
groupbox_newArbeistzeitVal.IsOpen = false;
}
}
private void btn_deleteArbeitszeit_Click(object sender, RoutedEventArgs e)
{
2017-05-17 08:28:12 +02:00
var arbeitszeit = tabcontrol_Arbeitszeit.SelectedItem as ArbeitszeitVM;
2017-05-17 08:28:12 +02:00
ViewModel.Arbeitszeiten.VMList.Remove(arbeitszeit);
}
private void AddArbeitszeitToView_Click(object sender, RoutedEventArgs e)
{
var popup = tabcontrol_Arbeitszeit.GetAllChildren().OfType<PopupNonTopmost>();
var popup_NewArbeitszeitEintrag = popup.First(x => x.Name.Equals("popup_newArbeitszeitEintrag"));
popup_NewArbeitszeitEintrag.IsOpen = true;
}
2017-05-17 08:28:12 +02:00
private void PopupArbeitszeitClose_Click(object sender, RoutedEventArgs e)
{
2017-05-17 08:28:12 +02:00
var popup = tabcontrol_Arbeitszeit.GetAllChildren().OfType<PopupNonTopmost>();
2017-05-17 08:28:12 +02:00
var popup_NewArbeitszeitEintrag = popup.First(x => x.Name.Equals("popup_newArbeitszeitEintrag"));
2017-05-17 08:28:12 +02:00
popup_NewArbeitszeitEintrag.IsOpen = false;
}
private void RemoveArbeitszeit_OnClick(object sender, RoutedEventArgs e)
{
var popup = tabcontrol_Arbeitszeit.GetAllChildren().OfType<GridControl>();
var grid_ArbeitszeitEintrag = popup.First(x => x.Name.Equals("grid_Arbeitszeiten"));
var cv = grid_ArbeitszeitEintrag.GetCurrentValue<ArbeitszeitEintragVM>().CommitToDataContract();
var listenOid = cv.ArbeitszeitEintragOid;
if (listenOid == null)
return;
var antwort = MessageBox.Show("Sind Sie sicher, dass Sie den Arbeitszeit Eintrag löschen wollen?", "Löschen", MessageBoxButton.OKCancel, MessageBoxImage.Question);
if (antwort.Equals(MessageBoxResult.Cancel))
return;
ServiceFacade.DoEmployeeServiceSync(a => a.DeleteArbeitszeitEintrag(listenOid.Value));
var tab = tabcontrol_Arbeitszeit.Items.GetItemAt(tabcontrol_Arbeitszeit.SelectedIndex);
var avm = tab as ArbeitszeitVM;
if (avm != null)
{
avm.ArbeitszeitEintraege.VMList.Remove(grid_ArbeitszeitEintrag.GetCurrentValue<ArbeitszeitEintragVM>());
}
grid_ArbeitszeitEintrag.RefreshData();
}
private void GridControl_OnCustomColumnSort(object sender, CustomColumnSortEventArgs e)
{
var comparer = new WochentagComparerClass();
e.Result = comparer.Compare(e.Value1.ToString(), e.Value2.ToString());
e.Handled = true;
}
#region Popup Klienten Anzeige Auswahl
private PopUpEdit letztesPopUpEdit = null;
private void Popupedit_KlientVertretungSearch_OnPopUpClick(object sender, RoutedEventArgs e)
{
KlientVertretungsearchview.ItemSelected += KlientVertretungsearchview_KlientVertretungSelected;
popup_KlientVertretung.IsOpen = true;
letztesPopUpEdit = sender as PopUpEdit;
}
private CompactCustomerDC currentKlient;
private void KlientVertretungsearchview_KlientVertretungSelected(object sender, EventArgs<CompactCustomerDC> e)
{
popup_KlientVertretung.IsOpen = false;
KlientVertretungsearchview.ItemSelected -= KlientVertretungsearchview_KlientVertretungSelected;
currentKlient = e.Data;
if (letztesPopUpEdit != null)
{
letztesPopUpEdit.Text = currentKlient.FullName;
}
}
#endregion
#region Popup Customer Anzeige Auswahl Für Editvalue | auskommentiert weil mega doof
//private PopUpEdit PopUpEditLetzteAnzeige = null;
//private void Popupedit_KlientVertretungSearchAnzeige_OnPopUpClick(object sender, RoutedEventArgs e)
//{
// KlientVertretungsearchview.ItemSelected += KlientVertretungsearchview_KlientSelected;
// popup_KlientVertretung.IsOpen = true;
// PopUpEditLetzteAnzeige = sender as PopUpEdit;
//}
//private void KlientVertretungsearchview_KlientSelected(object sender, EventArgs<CompactCustomerDC> e)
//{
// popup_KlientVertretung.IsOpen = false;
// KlientVertretungsearchview.ItemSelected -= KlientVertretungsearchview_KlientSelected;
// if (PopUpEditLetzteAnzeige != null)
// {
// PopUpEditLetzteAnzeige.Text = e.Data.FullName;
// }
// PopUpEditLetzteAnzeige = null;
//}
#endregion
}
public class WochentagComparerClass : IComparer<String>
{
public int Compare(String x, String y)
{
if (x.Equals(y))
return 0;
switch (y)
{
case "Montag":
return 1;
case "Dienstag":
return x.Equals("Montag") ? -1 : 1;
case "Mittwoch":
return x.Equals("Montag") ||
x.Equals("Dienstag") ? -1 : 1;
case "Donnerstag":
return x.Equals("Montag") ||
x.Equals("Dienstag") ||
x.Equals("Mittwoch") ? -1 : 1;
case "Freitag":
return x.Equals("Montag") ||
x.Equals("Dienstag") ||
x.Equals("Mittwoch") ||
x.Equals("Donnerstag") ? -1 : 1;
case "Samstag":
return x.Equals("Montag") ||
x.Equals("Dienstag") ||
x.Equals("Mittwoch") ||
x.Equals("Donnerstag") ||
x.Equals("Freitag") ? -1 : 1;
case "Sonntag":
return -1;
default:
return 0;
}
}
}
}