Files
BeWoPlaner/BeWo/View/StundenplanView.xaml.cs
Rene Evertz 14ca310980 Merge branch 'feature_rene_15_wohneinheit' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
# Conflicts:
#	.gitignore
#	BeWo/BeWoApp.xaml.cs
#	Data/Data.csproj
#	Service/ServiceImplementations/AccountingServiceImp.cs
#	Shared/BeWoEntityEnums.cs
2024-09-11 14:18:10 +02:00

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;
}
}
}