Files
BeWoPlaner/BeWo/View/Detail/AbsenceTimesView.xaml.cs
Christian bc48047b3e - Rechnungsformular Prof. Eggers Stiftung
- Klientennamen im Jahresbericht eingebaut
- Bugfix Reports für fehlende Unterschriften
- Bugfix History
2025-03-19 00:58:48 +01:00

115 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Media;
using BeWo.Core;
using BeWo.Core.Commands;
using BeWo.ServiceProxy;
using BeWo.ViewModel;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.Extensions;
using DependencyObject = System.Windows.DependencyObject;
namespace BeWo.View.Detail
{
public partial class AbsenceTimesView
{
public static readonly DependencyProperty AbsenceTimesDependency = DependencyProperty.Register("AbsenceTimes", typeof(AbsenceTimeListVM), typeof(AbsenceTimesView), new UIPropertyMetadata(AbsenceTimesChanged));
private static void AbsenceTimesChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var view = d as AbsenceTimesView;
var list = e.NewValue as AbsenceTimeListVM;
if (view != null && list != null)
{
view.AbsenceReasonComboBox.ItemsSource = list.PossibleReasons;
}
}
public ButtonClickCommand AddAbsenceTimesCommand { get; set; }
public ButtonClickCommand RemoveAbsenceTimeCommand { get; set; }
public AbsenceTimeListVM AbsenceTimes
{
get => (AbsenceTimeListVM) GetValue(AbsenceTimesDependency);
set => SetValue(AbsenceTimesDependency, value);
}
public AbsenceTimesView()
{
InitializeComponent();
DataContext = this;
AddAbsenceTimesCommand = new ButtonClickCommand(AddAbsenceTimes);
RemoveAbsenceTimeCommand = new ButtonClickCommand(RemoveAbsenceTime);
}
private void AddAbsenceTimes()
{
bool doSave = true;
var ueberschneidungen = PruefeAufUeberschneidungen();
if (ueberschneidungen.Count > 0)
{
doSave = false;
if (MessageBox.Show(
"Die Abwesenheit überschneidet sich mit mindestens einer bereits vorhandenen Abwesenheit.\nMöchten Sie trotzdem speichern?",
"BeWo Planer", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
doSave = true;
}
}
if (doSave)
{
AbsenceTimes?.NewVM.ValidateDates(() =>
{
AbsenceTimes?.AddNewVMToList();
});
}
}
private List<AbsenceTimeVM> PruefeAufUeberschneidungen()
{
List<AbsenceTimeVM> abwesenheitenMitUeberschneidungen = new List<AbsenceTimeVM>();
if (AbsenceTimes != null)
{
var neu = AbsenceTimes.NewVM;
DateTime neuStart = neu.Start ?? DateTime.MinValue;
DateTime neuEnd = neu.End ?? DateTime.MaxValue;
foreach (var alt in AbsenceTimes.VMList)
{
DateTime altStart = alt.Start ?? DateTime.MinValue;
DateTime altEnd = alt.End ?? DateTime.MaxValue;
if (neuEnd >= altStart && neuStart <= altEnd)
{
abwesenheitenMitUeberschneidungen.Add(alt);
}
}
}
return abwesenheitenMitUeberschneidungen;
}
private void RemoveAbsenceTime()
{
AbsenceTimes?.VMList.Remove(DataGridAbsenceTimes.GetCurrentValue<AbsenceTimeVM>());
BeWoWpfUtils.RefreshDXGrid(DataGridAbsenceTimes);
}
}
}