using gehGassi.Domain.Base; using gehGassi.Domain.Common; using System; using System.ComponentModel.DataAnnotations; namespace gehGassi.Domain.Payment { /// /// Repräsentiert ein Dokument für die KYC-Prüfung eines App-Users /// public class IdentityDocument : SyncEntity, IAuditable { /// /// Id des App-Users /// [Required] [MaxLength(128)] public string AppUserId { get; set; } /// /// Id des Dokumentes bei MangoPay /// [MaxLength(255)] public string MangoPayId { get; set; } /// /// Id des Users bei MangoPay /// [MaxLength(255)] public string MangoPayUserId { get; set; } /// /// Typ des Dokumentes /// [Required] public IdentityDocumentType Type { get; set; } /// /// Quelle des Dokumentes /// [Required] public IdentityDocumentSource Source { get; set; } /// /// Status des Dokumentes /// [Required] public IdentityDocumentStatus Status { get; set; } /// /// Anzahl der Seiten des Dokumentes /// [Required] public int PageCount { get; set; } /// /// Datum der Erstellung des Kyc-Dokumentes /// public DateTimeOffset? Processed { get; set; } /// /// Grund für eine Ablehnung des Dokumentes /// [MaxLength(1000)] public string RefusedReasonMessage { get; set; } /// /// Typ der Ablehnung /// [MaxLength(255)] public string RefusedReasonType { get; set; } /// /// Beinhaltet Detail-Fehlercodes wenn ein Dokument abgelehnt wurde /// [MaxLength(1000)] public string FlagsValue { get; set; } /// /// Datum der Erstellung des Kyc-Dokumentes /// [Required] 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 "IdentityDocuments"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } }