ChronoFlow/ChronoFlow.Model/Zeiteintrag.cs
2025-06-28 14:27:18 +02:00

109 lines
3.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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