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