Files
BeWoPlaner/BeWo/View/StundenplanView.xaml.cs
2019-09-27 15:55:01 +02:00

221 lines
7.3 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;
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.OKCancel, MessageBoxImage.Question);
if (antwort.Equals(MessageBoxResult.Cancel))
{
return;
}
if (listenOid.HasValue)
{
ServiceFacade.DoEmployeeServiceSync(a => a.DeleteArbeitszeitEintrag(listenOid.Value));
return;
}
viewModel.ArbeitszeitEintraege.VMList.Remove(eintrag2Delete);
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;
}
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;
}
}
}