From 08a3550062c10a646929879eb84232cdc7ab4734 Mon Sep 17 00:00:00 2001 From: DaPi Date: Sun, 20 Oct 2024 22:06:17 +0200 Subject: [PATCH] =?UTF-8?q?Diverse=20=C3=84nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sollstunden werden jetzt angezeigt. Genehmigte Freistellungen können nicht mehr geändert werden Projekte und Gemeinden werden ausgeblendet, sofern vom Portal so vorgesehen. etc. --- Jugenddienst Stunden/Types/DayTime.cs | 4 +++- Jugenddienst Stunden/Types/Settings.cs | 2 ++ Jugenddienst Stunden/Types/Sollstunden.cs | 7 +++++++ .../ViewModels/StundeViewModel.cs | 5 +++++ .../ViewModels/StundenViewModel.cs | 17 +++++++++++++---- Jugenddienst Stunden/Views/StundePage.xaml | 4 ++-- Jugenddienst Stunden/Views/StundenPage.xaml | 18 +++++++++++------- 7 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 Jugenddienst Stunden/Types/Sollstunden.cs diff --git a/Jugenddienst Stunden/Types/DayTime.cs b/Jugenddienst Stunden/Types/DayTime.cs index ad5775b..3ac3295 100644 --- a/Jugenddienst Stunden/Types/DayTime.cs +++ b/Jugenddienst Stunden/Types/DayTime.cs @@ -49,7 +49,7 @@ public class DayTime { /// /// Freistellung genehmigt? /// - public bool? Approved { get; set; } + public bool Approved { get; set; } /// @@ -91,4 +91,6 @@ public class DayTime { /// public Freistellung? FreistellungAktiv { get; set; } + public int TimeTable { get; set; } + } diff --git a/Jugenddienst Stunden/Types/Settings.cs b/Jugenddienst Stunden/Types/Settings.cs index 1175b87..ce33e93 100644 --- a/Jugenddienst Stunden/Types/Settings.cs +++ b/Jugenddienst Stunden/Types/Settings.cs @@ -28,4 +28,6 @@ public class Settings { /// Liste der Freistellungen /// public List? Freistellungen { get; set; } + + public List Nominal { get; set; } } diff --git a/Jugenddienst Stunden/Types/Sollstunden.cs b/Jugenddienst Stunden/Types/Sollstunden.cs new file mode 100644 index 0000000..d18bc7e --- /dev/null +++ b/Jugenddienst Stunden/Types/Sollstunden.cs @@ -0,0 +1,7 @@ +namespace Jugenddienst_Stunden.Types; + +public class Sollstunden { + public int Timetable { get; set; } + public int Wochentag { get; set; } + public float Zeit { get; set; } +} diff --git a/Jugenddienst Stunden/ViewModels/StundeViewModel.cs b/Jugenddienst Stunden/ViewModels/StundeViewModel.cs index 9790f59..3169cd4 100644 --- a/Jugenddienst Stunden/ViewModels/StundeViewModel.cs +++ b/Jugenddienst Stunden/ViewModels/StundeViewModel.cs @@ -64,6 +64,8 @@ public class StundeViewModel : ObservableObject, IQueryAttributable { /// public bool ProjektAktivSet { get; set; } + public bool FreistellungEnabled { get; set; } + public ICommand SaveCommand { get; private set; } @@ -178,6 +180,9 @@ public class StundeViewModel : ObservableObject, IQueryAttributable { _dayTime.FreistellungAktiv = OptionsFreistellung.FirstOrDefault(Freistellung => Freistellung.Id == DayTime.Free) ?? new Freistellung(); + FreistellungEnabled = !_dayTime.Approved; + + OnPropertyChanged(nameof(FreistellungEnabled)); OnPropertyChanged(nameof(DayTime)); OnPropertyChanged(nameof(SubTitle)); diff --git a/Jugenddienst Stunden/ViewModels/StundenViewModel.cs b/Jugenddienst Stunden/ViewModels/StundenViewModel.cs index 085a361..812a0e7 100644 --- a/Jugenddienst Stunden/ViewModels/StundenViewModel.cs +++ b/Jugenddienst Stunden/ViewModels/StundenViewModel.cs @@ -31,7 +31,7 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP private HoursBase HoursBase = new HoursBase(); internal Settings Settings = new Settings(); - + public TimeOnly Sollstunden { get; set; } private string _title = HoursBase.name + " " + HoursBase.surname; public string Title { @@ -226,22 +226,31 @@ internal class StundenViewModel : ObservableObject, IQueryAttributable, INotifyP try { DayTimes = await HoursBase.LoadDay(date); - //TODO: Hier muss noch die Berechnung der Stunden erfolgen - //Es werden im Moment nur die eingetragenen Stunden gezählt - //Auf der Website bekommt der Benutzer hingegen die berechneten Stunden angezeigt (Nachstunden außerhalb des Stundenplanes zählen mehr ...) + List _soll; TimeSpan span = TimeSpan.Zero; + bool merker = false; foreach (DayTime dt in DayTimes) { span += dt.End - dt.Begin; + //Nachtstunden dazurechnen + if (dt.Night.Ticks > 0 && !merker) { + span += dt.Night.ToTimeSpan() * .5; + merker = true; + } + _soll = Settings.Nominal.Where(w => w.Timetable == dt.TimeTable && w.Wochentag == dt.Wday).ToList(); + if (_soll.Count > 0) + Sollstunden = TimeOnly.FromTimeSpan(TimeSpan.FromHours(_soll[0].Zeit)); } DayTotal = TimeOnly.FromTimeSpan(span); + } catch (Exception e) { DayTimes = new List(); //TODO: hier könnte auch ein Fehler kommen, dann wäre InfoEvent falsch. InfoEvent?.Invoke(this, e.Message); } finally { OnPropertyChanged(nameof(DayTotal)); + OnPropertyChanged(nameof(Sollstunden)); //OnPropertyChanged(nameof(DayTimes)); } diff --git a/Jugenddienst Stunden/Views/StundePage.xaml b/Jugenddienst Stunden/Views/StundePage.xaml index b53dc49..c7d3399 100644 --- a/Jugenddienst Stunden/Views/StundePage.xaml +++ b/Jugenddienst Stunden/Views/StundePage.xaml @@ -42,7 +42,7 @@ - + @@ -52,7 +52,7 @@