using gehGassi.Domain.Base;
using gehGassi.Domain.Common;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace gehGassi.Domain.Payment
{
///
/// Repräsentiert eine Kreditkarte / Maestro eines App-Users
///
public class Card : SyncEntity, IAuditable
{
///
/// Id des App-Users
///
[Required]
[MaxLength(128)]
public string AppUserId { get; set; }
///
/// Id der Karte bei MangoPay
///
[MaxLength(255)]
public string MangoPayId { get; set; }
///
/// Id des Users bei MangoPay
///
[MaxLength(255)]
public string MangoPayUserId { get; set; }
///
/// Monat der Ablaufs
///
[Required]
public int ExpirationMonth { get; set; }
///
/// Jahr des Ablaufs
///
[Required]
public int ExpirationYear { get; set; }
///
/// Kartennummer - Alias
///
[Required]
[MaxLength(50)]
public string CardNumber { get; set; }
///
/// Typ der Karte
///
[Required]
public CardType Type { get; set; }
///
/// Von welchem Anbieter ist die Karte
///
[Required]
[MaxLength(50)]
public string CardProvider { get; set; }
///
/// Gültigkeit der Karte
///
[Required]
public Validity Validity { get; set; }
///
/// Währung ISO 4217 Code
///
[Required]
[MaxLength(3)]
public string Currency { get; set; }
///
/// Ist die Karte aktiv?
///
[Required]
public bool Active { 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 "Cards";
}
public AuditableOptions Options()
{
return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete;
}
#endregion
}
}