Files
BeWoPlaner/BeWo/View/EmployeeArbeitszeitView.xaml.cs
Christian 9dcb5c206c - Überarbeitung Perseh Import für weiteres LWL Format
- Arbeitszeit Kopieren im EmployeeView eingebaut
- Diverse Kundenanpassungen (Christopherus Haus, Prof Eggers Stiftung, Trias)
- Bugfix History für Klienten
2025-03-28 14:14:40 +01:00

310 lines
10 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;
}
public EmployeeVM ViewModel
{
get { return _ViewModel; }
set
{
DataContext = value;
_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;
//}
}
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;
currentKlient = null;
}
if (letztesPopUpEdit != null)
{
letztesPopUpEdit.Text = "";
}
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 CopyArbeitszeit_Click(object sender, RoutedEventArgs e)
{
var arbeitszeit = tabcontrol_Arbeitszeit.SelectedItem as ArbeitszeitVM;
var dc = new ArbeitszeitDC();
if (arbeitszeit.GueltigBis.HasValue)
{
dc.GueltigVon = arbeitszeit.GueltigBis.Value.AddDays(1);
}
dc.Eintraege = new List<ArbeitszeitEintragDC>();
foreach (var ae in arbeitszeit.ArbeitszeitEintraege.VMList)
{
var copy = new ArbeitszeitEintragDC();
copy.Tag = ae.Tag;
copy.UhrzeitVon = ae.UhrzeitVon;
copy.UhrzeitBis = ae.UhrzeitBis;
copy.Notice = ae.Notice;
copy.Customer = ae.CompactCustomer;
dc.Eintraege.Add(copy);
}
var copyVm = new ArbeitszeitVM(dc);
ViewModel.Arbeitszeiten.VMList.Add(copyVm);
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
}
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;
}
}
}
}