# Conflicts: # .gitignore # BeWo/BeWoApp.xaml.cs # Data/Data.csproj # Service/ServiceImplementations/AccountingServiceImp.cs # Shared/BeWoEntityEnums.cs
251 lines
8.4 KiB
C#
251 lines
8.4 KiB
C#
using System.Linq;
|
|
using System.Windows;
|
|
using BeWo.Controls;
|
|
using BeWo.ViewModel;
|
|
using BeWo.ServiceProxy;
|
|
using BeWo.Validation;
|
|
using BeWo.View.Controls;
|
|
using BeWo.ViewModel.ListViewModel;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.DataContracts.Compact;
|
|
using DevExpress.Xpf.Grid;
|
|
using System;
|
|
using BS.Shared.DataContracts;
|
|
using System.Collections.Generic;
|
|
|
|
namespace BeWo.View
|
|
{
|
|
public interface IArbeitszeitenVM
|
|
{
|
|
ArbeitszeitListVM Arbeitszeiten { get; set; }
|
|
}
|
|
|
|
public partial class StundenplanView
|
|
{
|
|
private ArbeitszeitListVM _ViewModel;
|
|
private CompactEmployeeDC _lastSeletedEmployee;
|
|
|
|
public StundenplanView(ArbeitszeitListVM vm, string title)
|
|
{
|
|
InitializeComponent();
|
|
|
|
GroupHeader.Header = title;
|
|
|
|
tabcontrol_Arbeitszeit.Loaded += (s, e) =>
|
|
{
|
|
if (tabcontrol_Arbeitszeit.Items.Count > 0)
|
|
{
|
|
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
|
|
}
|
|
};
|
|
|
|
ViewModel = vm;
|
|
}
|
|
|
|
public ArbeitszeitListVM ViewModel
|
|
{
|
|
get => _ViewModel;
|
|
|
|
set
|
|
{
|
|
DataContext = value;
|
|
_ViewModel = value;
|
|
}
|
|
}
|
|
|
|
public void RefreshView()
|
|
{
|
|
DataContext = null;
|
|
DataContext = _ViewModel;
|
|
|
|
if (tabcontrol_Arbeitszeit.Items.Count > 0)
|
|
{
|
|
tabcontrol_Arbeitszeit.SelectedIndex = tabcontrol_Arbeitszeit.Items.Count - 1;
|
|
}
|
|
}
|
|
|
|
|
|
private void ButtonOpenAndAddArbeitszeitClick(object sender, RoutedEventArgs e)
|
|
{
|
|
ViewModel.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);
|
|
|
|
if (tab is ArbeitszeitVM avm)
|
|
{
|
|
if (_lastSeletedEmployee != null)
|
|
{
|
|
avm.ArbeitszeitEintraege.NewVM.Employee = _lastSeletedEmployee;
|
|
|
|
_lastSeletedEmployee = null;
|
|
}
|
|
|
|
if (letztesPopUpEdit != null)
|
|
{
|
|
letztesPopUpEdit.Text = string.Empty;
|
|
}
|
|
|
|
avm.ArbeitszeitEintraege.AddNewVMToList();
|
|
}
|
|
|
|
groupbox_newArbeistzeitVal.IsOpen = false;
|
|
}
|
|
}
|
|
|
|
private void btn_deleteArbeitszeit_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var arbeitszeit = tabcontrol_Arbeitszeit.SelectedItem as ArbeitszeitVM;
|
|
|
|
ViewModel.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 selectedArbeitszeitEintrag = grid_ArbeitszeitEintrag.GetCurrentValue<ArbeitszeitEintragVM>();
|
|
|
|
var selectedDataContract = selectedArbeitszeitEintrag.CommitToDataContract();
|
|
var listenOid = selectedDataContract.ArbeitszeitEintragOid;
|
|
|
|
var selectedTabItem = tabcontrol_Arbeitszeit.Items.GetItemAt(tabcontrol_Arbeitszeit.SelectedIndex);
|
|
var viewModel = (ArbeitszeitVM) selectedTabItem;
|
|
|
|
var eintrag2Delete = grid_ArbeitszeitEintrag.GetCurrentValue<ArbeitszeitEintragVM>();
|
|
|
|
var antwort = MessageBox.Show("Sind Sie sicher, dass Sie den Arbeitszeit Eintrag löschen wollen?", "Löschen", MessageBoxButton.YesNo, MessageBoxImage.Question);
|
|
if (antwort.Equals(MessageBoxResult.No))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (listenOid.HasValue)
|
|
{
|
|
ServiceFacade.DoEmployeeServiceSync(a => a.DeleteArbeitszeitEintrag(listenOid.Value));
|
|
|
|
}
|
|
|
|
viewModel.ArbeitszeitEintraege.VMList.Remove(eintrag2Delete);
|
|
|
|
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.Employee = ae.Employee;
|
|
dc.Eintraege.Add(copy);
|
|
}
|
|
|
|
var copyVm = new ArbeitszeitVM(dc);
|
|
ViewModel.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;
|
|
|
|
}
|
|
|
|
private PopUpEdit letztesPopUpEdit;
|
|
private ArbeitszeitEintragVM _lastSeletedEintrag;
|
|
|
|
private void Popupedit_MitarbeiterSearch_OnPopUpClick(object sender, RoutedEventArgs e)
|
|
{
|
|
_lastSeletedEmployee = null;
|
|
popup_Mitarbeiter.IsOpen = true;
|
|
letztesPopUpEdit = sender as PopUpEdit;
|
|
}
|
|
|
|
|
|
private void Popupedit_MitarbeiterColumn_OnPopUpClick(object sender, RoutedEventArgs e)
|
|
{
|
|
//_lastSeletedEintrag = null;
|
|
popup_MitarbeiterColumn.IsOpen = true;
|
|
letztesPopUpEdit = sender as PopUpEdit;
|
|
}
|
|
|
|
|
|
private void EmployeeSearchView_ItemSelected(object sender, EventArgs<CompactEmployeeDC> e)
|
|
{
|
|
popup_Mitarbeiter.IsOpen = false;
|
|
_lastSeletedEmployee = e.Data;
|
|
if (letztesPopUpEdit != null)
|
|
{
|
|
letztesPopUpEdit.Text = $"{_lastSeletedEmployee.FirstName} {_lastSeletedEmployee.LastName}";
|
|
letztesPopUpEdit.Focus();
|
|
}
|
|
}
|
|
|
|
private void EmployeeSearchViewColumn_ItemSelected(object sender, EventArgs<CompactEmployeeDC> e)
|
|
{
|
|
popup_MitarbeiterColumn.IsOpen = false;
|
|
_lastSeletedEintrag.Employee = e.Data;
|
|
//letztesPopUpEdit.Text = String.Format("{0} {1}", _lastSeletedEmployee.FirstName, _lastSeletedEmployee.LastName);
|
|
letztesPopUpEdit?.Focus();
|
|
}
|
|
|
|
private void GridViewBase_OnShowingEditor(object sender, ShowingEditorEventArgs e)
|
|
{
|
|
_lastSeletedEintrag = e.Row as ArbeitszeitEintragVM;
|
|
|
|
}
|
|
|
|
private void Popupedit_MitarbeiterColumn_OnDeleteClick(object sender, RoutedEventArgs e)
|
|
{
|
|
_lastSeletedEintrag.Employee = null;
|
|
}
|
|
}
|
|
} |