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 ein Zertifikat für einen Walker /// public class Certificate : IAuditable { /// /// Eindeutige Id /// [Key] public long Id { get; set; } /// /// Id des app-Users / Walkers /// [Required] [MaxLength(128)] public string AppUserId { get; set; } /// /// Name des Dokumentes /// [Required] [MaxLength(200)] public string Name { get; set; } /// /// Datei /// [Required] [MaxLength(500)] public string FileName { get; set; } /// /// Status der Verifizierung /// [Required] public CertificateStatus Status { get; set; } /// /// Datum der Verifizierung /// public DateTimeOffset? VerificationDate { get; set; } /// /// Verification durch wen? /// [MaxLength(255)] public string VerifiedBy { get; set; } /// /// Offizieller Kommentar zur Verifizierung /// [MaxLength(1000)] public string VerificationComment { get; set; } /// /// Interner kommentar für gehGassi /// [MaxLength(1000)] public string InternalComment { get; set; } /// /// Datum der Erstellung /// 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 "Certificates"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } /// /// Status eines Zertifikates /// public enum CertificateStatus { /// /// Noch nicht verifiziert /// NotVerified = 1, /// /// Akzeptiert /// Accepted = 2, /// /// Abgelehnt /// Declined = 10 } }