namespace QRBee.Core.Data
{
public class ClientCardData
{
public string TransactionId { get; set; }
public string CardNumber { get; set; }
public string ExpirationDateYYYYMM { get; set; }
public string ValidFromYYYYMM { get; set; }
public string CardHolderName { get; set; }
public string CVC { get; set; }
public int? IssueNo { get; set; }
///
/// Convert ClientCardData to string to be used as a source for encryption.
/// WARNING: this should always be encrypted and never transmitted in clear text form.
///
/// Converted string
public string AsString() => $"{TransactionId}|{CardNumber}|{ExpirationDateYYYYMM}|{ValidFromYYYYMM}|{CardHolderName}|{CVC}|{IssueNo ?? 0}";
public static ClientCardData FromString(string input)
{
var s = input.Split('|');
if (s.Length < 7)
{
throw new ApplicationException("Expected 7 or more elements");
}
var res = new ClientCardData()
{
TransactionId = s[0],
CardNumber = s[1],
ExpirationDateYYYYMM = s[2],
ValidFromYYYYMM = s[3],
CardHolderName = s[4],
CVC = s[5]
};
if (!string.IsNullOrWhiteSpace(s[6]))
res.IssueNo = Convert.ToInt32(s[6]);
if (res.IssueNo <= 0)
{
res.IssueNo = null;
}
return res;
}
}
}