121 lines
3.0 KiB
C#

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
{
/// <summary>
/// Repräsentiert eine Kreditkarte / Maestro eines App-Users
/// </summary>
public class Card : SyncEntity, IAuditable
{
/// <summary>
/// Id des App-Users
/// </summary>
[Required]
[MaxLength(128)]
public string AppUserId { get; set; }
/// <summary>
/// Id der Karte bei MangoPay
/// </summary>
[MaxLength(255)]
public string MangoPayId { get; set; }
/// <summary>
/// Id des Users bei MangoPay
/// </summary>
[MaxLength(255)]
public string MangoPayUserId { get; set; }
/// <summary>
/// Monat der Ablaufs
/// </summary>
[Required]
public int ExpirationMonth { get; set; }
/// <summary>
/// Jahr des Ablaufs
/// </summary>
[Required]
public int ExpirationYear { get; set; }
/// <summary>
/// Kartennummer - Alias
/// </summary>
[Required]
[MaxLength(50)]
public string CardNumber { get; set; }
/// <summary>
/// Typ der Karte
/// </summary>
[Required]
public CardType Type { get; set; }
/// <summary>
/// Von welchem Anbieter ist die Karte
/// </summary>
[Required]
[MaxLength(50)]
public string CardProvider { get; set; }
/// <summary>
/// Gültigkeit der Karte
/// </summary>
[Required]
public Validity Validity { get; set; }
/// <summary>
/// Währung ISO 4217 Code
/// </summary>
[Required]
[MaxLength(3)]
public string Currency { get; set; }
/// <summary>
/// Ist die Karte aktiv?
/// </summary>
[Required]
public bool Active { get; set; }
/// <summary>
/// Datum der Erstellung des Kyc-Dokumentes
/// </summary>
[Required]
public DateTimeOffset Created { get; set; }
#region IAuditable
/// <summary>
/// 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.
/// </summary>
/// <returns>Eindeutiger Key</returns>
public string AuditKey()
{
return Id.ToString();
}
/// <summary>
/// Gibt den Objektnamen bzw. die Tabelle der Entität zurück
/// </summary>
/// <returns>Objektnamen</returns>
public string AuditTable()
{
return "Cards";
}
public AuditableOptions Options()
{
return AuditableOptions.Create | AuditableOptions.Edit | AuditableOptions.Delete;
}
#endregion
}
}