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 @@
-
+
diff --git a/Jugenddienst Stunden/Views/StundenPage.xaml b/Jugenddienst Stunden/Views/StundenPage.xaml
index d79d5a5..e240566 100644
--- a/Jugenddienst Stunden/Views/StundenPage.xaml
+++ b/Jugenddienst Stunden/Views/StundenPage.xaml
@@ -30,10 +30,14 @@
MaximumDate="{Binding MaximumDate}"
Date="{Binding DateToday}" Format="dddd, d. MMMM yyyy" />
-
+
+
+
+
+
-
+
-
-
+
+
@@ -109,9 +113,9 @@
-
-
-
+
+
+
\ No newline at end of file