- Klientennamen im Jahresbericht eingebaut - Bugfix Reports für fehlende Unterschriften - Bugfix History
115 lines
3.6 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|