using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using gehGassi.Domain.Common; namespace gehGassi.Domain.Dogs { /// /// Repräsentiert eine Relation zwischen App-Usern. /// Dabei kann die Relation zwischen allen Typen existieren. /// Wird verwendet, damit das System entscheiden kann wer Updates zu Daten bekommt /// public class AppUserRelation : IAuditable { /// /// Eindeutige ID /// [Key] public long Id { get; set; } /// /// Id der ersten Seite der Relation /// [Required] [MaxLength(128)] public string LeftId { get; set; } /// /// Wurde die Relation von der ersten Seite gelöscht? /// public bool LeftDeleted { get; set; } /// /// Id der zweiten Seite der Relation /// [Required] [MaxLength(128)] public string RightId { get; set; } /// /// Wurde die Relation von der zweiten Seite gelöscht? /// public bool RightDeleted { get; set; } /// /// Wann wurde die Relation erstellt? /// public DateTimeOffset Created { get; set; } #region 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 public string AuditKey() { return Id.ToString(); } /// /// Gibt den Objektnamen bzw. die Tabelle der Entität zurück /// /// Objektnamen public string AuditTable() { return "EntityRelations"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Hilfsklasse für die Abfrage von Relations-Zielen /// public class AppUserRelationTarget { /// /// Eindeutige ID /// public long Id { get; set; } /// /// Id der gefundenen Entität /// public string TargetId { get; set; } } }