using System;
namespace ChronoFlow.Model
{
///
/// Repräsentiert einen Benutzer im System (Mitarbeiter oder Admin).
/// Wird für Authentifizierung, Rechteverwaltung und Zuordnung verwendet.
///
public class User
{
///
/// Der Benutzername, der zur Anmeldung verwendet wird.
///
public string Username { get; set; }
///
/// Das gehashte Passwort des Benutzers.
///
public string Password { get; set; }
///
/// Rolle des Benutzers, z.B. "Admin" oder "Mitarbeiter".
///
public string Role { get; set; }
///
/// Interne Mitarbeiternummer, optional.
///
public string Mitarbeiternummer { get; set; }
///
/// Abteilung des Mitarbeiters, z.B. „Produktion“, „IT“, etc.
///
public string Abteilung { get; set; }
///
/// Primärschlüssel in der Datenbank.
///
public int Id { get; set; }
///
/// Der ursprüngliche Benutzername – wird z.B. für Updates verwendet,
/// um Namensänderungen korrekt zu verarbeiten.
///
public string OriginalUsername { get; set; }
///
/// Gibt an, ob der Benutzer beim nächsten Login sein Passwort ändern muss.
/// Wird z.B. bei neu erstellten Konten gesetzt.
///
public bool MussPasswortAendern { get; set; }
///
/// Letzter erfolgreicher Login des Benutzers.
/// Dient z.B. zur Änderungsverfolgung von Projekten seit dem letzten Login.
///
public DateTime LetzterLogin { get; set; } = DateTime.MinValue;
///
/// Vorheriger Login-Zeitpunkt – wird beim nächsten Login zu LetzterLogin verschoben.
/// Ermöglicht die Erkennung von Änderungen zwischen zwei Sessions.
///
public DateTime VorletzterLogin { get; set; }
///
/// Konstruktor initialisiert leere Zeichenketten zur Vermeidung von Nullwerten.
///
public User()
{
Username = "";
Password = "";
Role = "";
Mitarbeiternummer = "";
Abteilung = "";
OriginalUsername = "";
}
}
}