using System; using System.ComponentModel.DataAnnotations; namespace gehGassi.Domain.Common { /// /// Schnittstellenbeschreibung für eine Entität deren Änderungen mitgeloggt werden sollen /// public interface IAuditable { /// /// Gibt den eindeutigen Key für die Entität zurück; /// Hier als String gelöst, weil damit auch kombinierte Schlüssel möglich sind. /// /// Eindeutiger Key string AuditKey(); /// /// Gibt den Objektnamen bzw. die Tabelle der Entität zurück /// /// Objektnamen string AuditTable(); /// /// Gibt zurück welche Methoden für diese Entität verwendet werden sollen. /// /// Flags AuditableOptions Options(); } /// /// Welche Aktionen sollen auf eine Entität die IAuditable implementiert ausgeführt werden? /// [Flags] public enum AuditableOptions { None = 0, Create = 1, Edit = 2, Delete = 3 } /// /// Repräsentiert ein Log von Datenänderungen in Bezug auf Zeit, Aktion, Benutzer /// public class Audit { /// /// Id des Eintrages /// [Key] public long Id { get; set; } /// /// Schlüssel nach Objekt /// [Required] [MaxLength(100)] public string Key { get; set; } /// /// Objekt-Typ bzw. Tabellenname /// [Required] [MaxLength(100)] public string Table { get; set; } /// /// Benutzer der die Aktion durchgeführt hat /// [Required] [MaxLength(256)] public string UserName { get; set; } /// /// Durchgeführte Aktion als int. /// 1: Angelegt /// 2: Bearbeitet /// 3: gelöscht /// 4: gelöscht soft /// 10: Zugriff /// [Required] public AuditAction Action { get; set; } /// /// Datum + Uhrzeit der Aktion /// [Required] public DateTimeOffset DateTime { get; set; } /// /// Daten als JSON seralisiert /// public string KeyValues { get; set; } /// /// Daten als JSON seralisiert /// public string OldValues { get; set; } /// /// Daten als JSON seralisiert /// public string NewValues { get; set; } } /// /// Audit-Art / Aktion /// public enum AuditAction : int { /// /// Anlegen /// Create = 1, /// /// Bearbeiten /// Edit = 2, /// /// Löschen /// Delete = 3, /// /// Soft-Löschen /// DeleteSoft = 4, /// /// Zugriff /// Access = 10 } /// /// Repräsentiert ein Log von Datenänderungen in Bezug auf Zeit, Aktion, Benutzer /// public class AuditWithNames { /// /// Id des Eintrages /// public long Id { get; set; } /// /// Schlüssel nach Objekt /// public string Key { get; set; } /// /// Objekt-Typ bzw. Tabellenname /// public string Table { get; set; } /// /// Benutzer der die Aktion durchgeführt hat /// public string UserName { get; set; } /// /// Benutzer der die Aktion durchgeführt hat - Voller Name /// public string UserFullName { get; set; } /// /// Benutzer der die Aktion durchgeführt hat - Foto /// public string UserPhoto { get; set; } /// /// Durchgeführte Aktion als int. /// 1: Angelegt /// 2: Bearbeitet /// 3: gelöscht /// public AuditAction Action { get; set; } /// /// Datum + Uhrzeit der Aktion /// public DateTimeOffset DateTime { get; set; } /// /// Daten als JSON seralisiert /// public string KeyValues { get; set; } /// /// Daten als JSON seralisiert /// public string OldValues { get; set; } /// /// Daten als JSON seralisiert /// public string NewValues { get; set; } } }