using System; using System.ComponentModel.DataAnnotations; using gehGassi.Domain.Base; using gehGassi.Domain.Common; namespace gehGassi.Domain.Payment { /// /// Repräsentiert eine Auszahlung /// public class Payout : SyncEntity, IAuditable { /// /// Id des App-Users /// [Required] [MaxLength(128)] public string AppUserId { get; set; } /// /// Id des Users bei MangoPay /// [MaxLength(255)] public string MangoPayUserId { get; set; } /// /// Id des Payouts bei MangoPay /// [MaxLength(255)] public string MangoPayId { get; set; } /// /// Id des Wallets /// [Required] [MaxLength(128)] public string WalletId { get; set; } /// /// Id des Wallets bei MangoPay /// [MaxLength(255)] public string MangoPayWalletId { get; set; } /// /// Id der Bank bei MangoPay /// [MaxLength(255)] public string MangoPayBankId { get; set; } /// /// Iban der Bankverbindung letzt 4 Stellen /// [Required] [MaxLength(4)] public string Iban { get; set; } /// /// Bic der Bankverbindung letzt 4 Stellen wenn verfügbar /// [MaxLength(4)] public string Bic { get; set; } /// /// Status der Transaktion /// [Required] public PaymentTransactionStatus Status { get; set; } /// /// Betrag in der kleinsten Einheit der Währung /// Beispiel: 12.60 EUR werden als 1260 übertragen /// [Required] public long Ammount { get; set; } /// /// Währung ISO 4217 Code /// [Required] [MaxLength(3)] public string Currency { get; set; } /// /// Result code. /// [MaxLength(255)] public string ResultCode { get; set; } /// /// The pre-authorization result message explaining the result code. /// [MaxLength(255)] public string ResultMessage { get; set; } /// /// Ausführungsdatum bei MangoPay /// public DateTimeOffset? ExecutionDate { get; set; } /// /// Rückzahlung? /// [Required] public bool Refunded { get; set; } /// /// Typ Grund für Rückzahlung /// INITIALIZED_BY_CLIENT, BANKACCOUNT_INCORRECT, OWNER_DO_NOT_MATCH_BANKACCOUNT, BANKACCOUNT_HAS_BEEN_CLOSED, WITHDRAWAL_IMPOSSIBLE_ON_SAVINGS_ACCOUNTS, OTHER /// [MaxLength(255)] public string RefundReasonType { get; set; } /// /// Beschreibung Grund Rückzahlung /// Fehlercode mit Nummern /// [MaxLength(255)] public string RefundReasonMessage { get; set; } /// /// Datum an dem die Transaktion erstellt wurde /// 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 "Payouts"; } public AuditableOptions Options() { return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete; } #endregion } }