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.Payment
{
///
/// Repräsentiert eine Transaktion für Zahlungen.
/// Dies können Einzahlungen, Auszahlungen oder Rückerstattungen sein.
/// Eine Sonderform ist Gebühr. Diese geth an gehgassi
///
public class PaymentTransaction
{
///
/// Eindeutige Id
///
[Key]
[Required]
public long Id { get; set; }
///
/// Id der Transaktion bei MangoPay
///
[Required]
[MaxLength(255)]
public string TransactionId { get; set; }
///
/// Typ der Transaktion
///
[Required]
public PaymentTransactionType Type { get; set; }
///
/// Status der Transaktion
///
[Required]
public PaymentTransactionStatus Status { get; set; }
///
/// Walk auf den sich die Transaktion bezieht
///
[MaxLength(128)]
public string WalkId { get; set; }
///
/// Id des AppUsers der die Zahlung erhält
///
[MaxLength(128)]
public string TargetAppUserId { get; set; }
///
/// Id des Wallets, auf das die Transaktion angewendet wird
///
[MaxLength(128)]
public string TargetWalletId { get; set; }
///
/// Id des AppUsers der die Zahlung veranlasst
///
[MaxLength(128)]
public string SourceAppUserId { get; set; }
///
/// Id des Wallets, von dem die Transaktion ausgeht
///
[MaxLength(128)]
public string SourceWalletId { get; set; }
///
/// Betrag in der kleinsten Einheit der Währung
/// Beispiel: 12.60 EUR werden als 1260 übertragen
///
[Required]
public long Ammount { get; set; }
///
/// Betrag der zusätzlich vom Guthaben-Konto verwendet werden muss in der kleinsten Einheit der Währung
/// Beispiel: 12.60 EUR werden als 1260 übertragen
///
[Required]
public long FromCredit { get; set; }
///
/// Währung ISO 4217 Code
///
[Required]
[MaxLength(3)]
public string Currency { get; set; }
///
/// Fehlermeldung nach MangoPay
///
[MaxLength(500)]
public string ErrorMessage { get; set; }
///
/// FehlerTyp nach MangoPay
///
[MaxLength(255)]
public string ErrorType { get; set; }
///
/// Fehlermeldungen nach MangoPay - Zusatzinformationen
///
[MaxLength(1000)]
public string ErrorMessages { get; set; }
///
/// Womit wurde bezahlt?
///
public PayInType? PayInType { get; set; }
///
/// Datum an dem die Transaktion erstellt wurde
///
public DateTimeOffset Created { get; set; }
}
}