using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using District_3_App.ProfileSocialNetworkInfoStuff.Entities; namespace District_3_App.ExtraInfo { public class Account { private string cardNumber; private string holderName; private string expirationDate; private string cvv; // public UserExtraInfo UserExtraInfo { get; private set; } public User User { get; private set; } public string CardNumber { get => cardNumber; set { /*if (!IsNumeric(value) || value.Length != 16) { throw new ArgumentException("Card Number must be a string of 16 digits (numeric input only)."); }*/ cardNumber = value; } } public string HolderName { get => holderName; set { /*if (!IsAlphabetic(value)) { throw new ArgumentException("Holder Name must contain alphabetic characters only."); }*/ holderName = value; } } public string ExpirationDate { get => expirationDate; set { /*if (!IsValidExpirationDate(value)) { throw new ArgumentException("Expiration Date must be in MM/YY format (numeric input only)."); }*/ expirationDate = value; } } public string CVV { get => cvv; set { /*if (!IsNumeric(value) || value.Length != 3) { throw new ArgumentException("CVV must be a three-digit code (numeric input only)."); }*/ cvv = value; } } public Account(User user, string cardNumber, string holderName, string expirationDate, string cvv) { User = user; CardNumber = cardNumber; HolderName = holderName; ExpirationDate = expirationDate; CVV = cvv; } private bool IsNumeric(string value) { return long.TryParse(value, out _); } private bool IsAlphabetic(string value) { return !string.IsNullOrWhiteSpace(value) && value.All(c => char.IsLetter(c) || char.IsWhiteSpace(c)); } private bool IsValidExpirationDate(string value) { if (value.Length != 5 || value[2] != '/') { return false; } string[] parts = value.Split('/'); if (parts.Length != 2) { return false; } if (!int.TryParse(parts[0], out int month) || !int.TryParse(parts[1], out int year)) { return false; } if (month < 1 || month > 12 || year < DateTime.Now.Year % 100 || year > (DateTime.Now.Year % 100) + 10) { return false; } return true; } } }