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

262 lines
8.5 KiB
C#

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;
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;
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
{
private EmployeeVM _ViewModel;
long? employeeOid;
public EmployeeArbeitszeitView(EmployeeVM employeeVm, long? oid)
{
InitializeComponent();
tabcontrol_Arbeitszeit.Loaded += (s, e) =>
{
if (tabcontrol_Arbeitszeit.Items.Count > 0)
{
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
}
};
employeeOid = oid;
ViewModel = employeeVm;
}
private EmployeeVM ViewModel
{
get { return _ViewModel; }
set
{
DataContext = value;
_ViewModel = value;
}
}
private void ButtonOpenAndAddArbeitszeitClick(object sender, RoutedEventArgs e)
{
ViewModel.Arbeitszeiten.AddNewVMToList();
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
}
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;
avm.ArbeitszeitEintraege.AddNewVMToList();
}
groupbox_newArbeistzeitVal.IsOpen = false;
}
}
private void btn_deleteArbeitszeit_Click(object sender, RoutedEventArgs e)
{
var arbeitszeit = tabcontrol_Arbeitszeit.SelectedItem as ArbeitszeitVM;
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;
}
private void PopupArbeitszeitClose_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 = 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;
}
letztesPopUpEdit = null;
}
#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;
}
}
}
}