namespace ChronoFlow.Model
{
///
/// Datenmodell für einen Zeiteintrag / ein Projekt.
/// Wird z.B. zur Speicherung in SQLite verwendet.
///
public class Zeiteintrag
{
///
/// Eindeutige ID des Eintrags in der Datenbank.
///
public int Id { get; set; }
///
/// Name des zugewiesenen Mitarbeiters.
///
public string Mitarbeiter { get; set; }
///
/// Name des Projektleiters (neu hinzugefügt).
///
public string Projektleiter { get; set; } = "";
///
/// Zeitpunkt, wann das Projekt beginnt.
///
public DateTime Startzeit { get; set; }
///
/// Zeitpunkt, wann das Projekt endet.
///
public DateTime Endzeit { get; set; }
///
/// Name oder Titel des Projekts.
///
public string Projekt { get; set; }
///
/// Beschreibung oder Kommentar durch den Admin.
///
public string Kommentar { get; set; }
///
/// Gibt an, ob das Projekt als erledigt markiert wurde.
///
public bool Erledigt { get; set; }
///
/// Kommentar vom Mitarbeiter (z.B. Rückmeldung zum Projekt).
///
public string MitarbeiterKommentar { get; set; }
///
/// Zeitpunkt der letzten Änderung an diesem Eintrag.
///
public DateTime LetzteBearbeitung { get; set; }
///
/// Kennzeichnet, ob es sich um einen neu erzeugten Eintrag handelt (z.B. seit dem letzten Login).
///
public bool IstNeu { get; set; }
///
/// True, wenn der Eintrag seit dem letzten Login verändert wurde.
///
public bool WurdeSeitLoginBearbeitet { get; set; }
///
/// Konstruktor – Initialisiert alle Felder mit Standardwerten.
///
public Zeiteintrag()
{
Id = 0;
Mitarbeiter = "";
Projektleiter = ""; // <<< NEU
Startzeit = DateTime.Now;
Endzeit = DateTime.Now;
Projekt = "";
Kommentar = "";
Erledigt = false;
MitarbeiterKommentar = "";
Projektleiter = "";
LetzteBearbeitung = DateTime.Now;
IstNeu = false;
WurdeSeitLoginBearbeitet = false;
}
///
/// Gibt die Prioritätsfarbe basierend auf der verbleibenden Zeit bis zur Deadline zurück.
/// Rot = < 3 Tage, Orange = 3–7 Tage, Grün = > 7 Tage.
///
public string PrioritaetsFarbe
{
get
{
var tageBisEnde = (Endzeit - DateTime.Now).TotalDays;
if (tageBisEnde <= 3)
return "Red";
else if (tageBisEnde <= 7)
return "DarkOrange";
else
return "Green";
}
}
}
}