protected override void Seed(Assignment2API.Models.ApplicationDbContext context) { if (!context.CreditCardBrands.Any(p => p.Name == nameof(BrandNames.Visa))) { var visa = new CreditCardBrand() { IdentificationNumber = "011", Name = nameof(BrandNames.Visa), }; context.CreditCardBrands.Add(visa); } if (!context.CreditCardBrands.Any(p => p.Name == nameof(BrandNames.Mastercard))) { var mastercard = new CreditCardBrand() { IdentificationNumber = "021", Name = nameof(BrandNames.Mastercard), }; context.CreditCardBrands.Add(mastercard); } if (!context.CreditCardBrands.Any(p => p.Name == nameof(BrandNames.AmericanExpress))) { var americanExpress = new CreditCardBrand() { IdentificationNumber = "031", Name = nameof(BrandNames.AmericanExpress), }; context.CreditCardBrands.Add(americanExpress); } }
internal void AddCreditCard(Guid instantBuyKey, CreditCardBrand brand, string lastDigits, int expMonth, int expYear) { var card = new CreditCard(this, instantBuyKey, brand, lastDigits, expMonth, expYear); this.CreditCards.Add(card); }
private void ValidateBrand(CreditCardBrand brand) { var exists = Enum.IsDefined(typeof(CreditCardBrand), brand); if (!exists) { throw new ArgumentException("Invalid Brand."); } }
public CreditCard(User user, Guid instantBuyKey, CreditCardBrand creditCardBrand, string lastFourDigits, int expMonth, int expYear) : this() { User = user; InstantBuyKey = instantBuyKey; Brand = creditCardBrand; LastFourDigits = lastFourDigits; ExpMonth = expMonth; ExpYear = expYear; }
}//end constructor /// <summary> /// Changes the Brand and Number to a test card base on the /// user's decision. /// </summary> /// <param name="cardBrand"></param> public void UserAssignedTestCard(int cardBrand) { switch (cardBrand) { case 1: CreditCardBrand = 0; CardNumber = "" + 378282246310005; break; case 2: CreditCardBrand = (CreditCardBrand)1; CardNumber = "" + 378734493671000; break; case 3: CreditCardBrand = (CreditCardBrand)2; CardNumber = "" + 5610591081018250; break; case 4: CreditCardBrand = (CreditCardBrand)3; CardNumber = "" + 30569309025904; break; case 5: CreditCardBrand = (CreditCardBrand)4; CardNumber = "" + 6011111111111117; break; case 6: CreditCardBrand = (CreditCardBrand)5; CardNumber = "" + 3530111333300000; break; case 7: CreditCardBrand = (CreditCardBrand)6; CardNumber = "" + 5105105105105100; break; case 8: CreditCardBrand = (CreditCardBrand)7; CardNumber = "" + 4111111111111111; break; case 9: CreditCardBrand = (CreditCardBrand)8; CardNumber = "" + 76009244561; break; default: CreditCardBrand = (CreditCardBrand)8; CardNumber = "" + 76009244561; break; } }
/// <summary> /// CreditCard Constructor /// </summary> public CreditCard() { CreditCardBrand = (CreditCardBrand) new Random().Next(0, Enum.GetNames(typeof(CreditCardBrand)).Length); AssignCardNumber(); Csv = new Random().Next(100, 9999); var dateAndTime = DateTime.Now.AddDays( new Random().Next((3 * 365), (4 * 365))); ExpirationDate = dateAndTime.ToString("dd/mm/yyyy"); }//end constructor
public CreditCard(User user, Guid instantBuyKey, CreditCardBrand brand, string lastDigits, int expMonth, int expYear) { ValidateUser(user); ValidateBrand(brand); ValidateLastDigits(lastDigits); ValidateExpiration(expMonth, expYear); User = user; InstantBuyKey = instantBuyKey; Brand = brand; LastDigits = lastDigits; ExpMonth = expMonth; ExpYear = expYear; }
/// <summary> /// Assigns The Number to the CreditCard /// </summary> private void AssignCardNumber() { if (CreditCardBrand.ToString().Equals("American_Express")) { var firstTwoDigits = 34; if (new Random().Next(0, 2) == 0) { firstTwoDigits = 37; } var firstHalf = new Random().Next(100000, 999999); var secondHalf = new Random().Next(1000000, 9999999); CardNumber = firstTwoDigits + firstHalf.ToString() + secondHalf; } else if (CreditCardBrand.ToString().Equals("Discover")) { var firstDigits = 6011; if (new Random().Next(0, 3) == 0) { firstDigits = 64; } else if (new Random().Next(0, 3) == 1) { firstDigits = 65; } if (firstDigits == 6011) { var firstPart = new Random().Next(10000, 99999); var secondPart = new Random().Next(100000, 999999); var thirdPart = new Random().Next(1, 9999); CardNumber = firstDigits.ToString() + firstPart + secondPart + thirdPart; } else { var firstPart = new Random().Next(100000, 999999); var secondPart = new Random().Next(1000000, 9999999); var thirdPart = new Random().Next(1, 9999); CardNumber = firstDigits.ToString() + firstPart + secondPart + thirdPart; } } else if (CreditCardBrand.ToString().Equals("MasterCard")) { if (new Random().Next(0, 2) == 0) { var firstDigits = new Random().Next(222100, 272099); var secondDigits = new Random().Next(100000, 999999); var thirdDigits = new Random().Next(1000, 9999); CardNumber = firstDigits.ToString() + secondDigits + thirdDigits; } else { var firstDigits = new Random().Next(51, 55); var secondDigits = new Random().Next(1000000, 9999999); var thirdDigits = new Random().Next(1000000, 9999999); CardNumber = firstDigits.ToString() + secondDigits + thirdDigits; } } else if (CreditCardBrand.ToString().Equals("Visa")) { var firstDigit = 4; var secondDigits = new Random().Next(1000000, 9999999); var thirdDigits = new Random().Next(10000000, 99999999); CardNumber = firstDigit.ToString() + secondDigits + thirdDigits; } else { CreditCardBrand = (CreditCardBrand)7; var firstDigit = 4; var secondDigits = new Random().Next(1000000, 9999999); var thirdDigits = new Random().Next(10000000, 99999999); CardNumber = firstDigit.ToString() + secondDigits + thirdDigits; } } //end method
/// <summary> /// Check if credit card is specific brand /// </summary> /// <param name="brand">Brand enum value</param> /// <param name="number">Credit card number (only numbers, without mask)</param> /// <returns></returns> public static bool IsBrand(CreditCardBrand brand, string number) { if (!Regex.IsMatch(number, "^[0-9]*$")) { return(false); } // American Express if ((number.StartsWith("34") || number.StartsWith("37")) && brand == CreditCardBrand.AmericanExpress) { return(true); } // Diners Club - Carte Blanche if ("300|301|302|303|304|305".Contains(number.Substring(0, 3)) && brand == CreditCardBrand.DinersClubCarteBlanche) { return(true); } // Diners Club - International if (number.StartsWith("36") && brand == CreditCardBrand.DinersClubInternational) { return(true); } // Diners Club - USA & Canada if (number.StartsWith("54") && brand == CreditCardBrand.DinersClubUSACanada) { return(true); } // Discover int startSixPosition = int.Parse(number.Substring(0, 6)); if ( brand == CreditCardBrand.Discover && ( "16|65".Contains(number.Substring(0, 2)) || "644|645|646|647|648|649".Contains(number.Substring(0, 3)) || number.Substring(0, 4) == "6011" || (startSixPosition >= 622126 && startSixPosition <= 622925) ) ) { return(true); } // InstaPayment if ("637|638|639".Contains(number.Substring(0, 3)) && brand == CreditCardBrand.InstaPayment) { return(true); } // JCB int startFourPosition = int.Parse(number.Substring(0, 4)); if ((startFourPosition >= 3528 && startFourPosition <= 3589) && brand == CreditCardBrand.JCB) { return(true); } // Laser if ("6304|6706|6771|6709".Contains(number.Substring(0, 4)) && brand == CreditCardBrand.Laser) { return(true); } // Maestro if ("5018|5020|5038|5893|6304|6759|6761|6762|6763".Contains(number.Substring(0, 4)) && brand == CreditCardBrand.Maestro) { return(true); } // MasterCard if ("51|52|53|54|55".Contains(number.Substring(0, 2)) && brand == CreditCardBrand.MasterCard) { return(true); } // Visa Electron if (("4026|4508|4844|4913|4917".Contains(number.Substring(0, 4)) || number.StartsWith("417500")) && brand == CreditCardBrand.VisaElectron) { return(true); } // Visa if (number.StartsWith("4") && brand == CreditCardBrand.Visa) { return(true); } return(false); }
private static async Task InitCreditCards() { try { //Trace.WriteLine("Credit Cards"); var creditCard = new CreditCardDict(); foreach (var brand in creditCard.Brands) { var brandI = new CreditCardBrand { //Id = brand.Key, Name = brand.Value }; switch (brand.Value) { case "AmericanExpress": brandI.Id = CreditCardEnum.AmericanExpress; brandI.Pattern = "^3[47][0-9]{13}$"; brandI.CvcLength = 4; brandI.TestNumber = "370000000000002"; brandI.EagerPattern = "^3[47]"; brandI.GroupPattern = "(\\d{1,4})(\\d{1,6})?(\\d{1,5})?"; brandI.Mnemonic = "amex"; brandI.MaskArray = @"/[1-9]/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/"; brandI.CvcName = "CID"; break; case "Visa": brandI.Id = CreditCardEnum.Visa; brandI.Pattern = "^4[0-9]{12}(?:[0-9]{3})?$"; brandI.CvcLength = 3; brandI.TestNumber = "4007000000000027"; brandI.EagerPattern = "^4"; brandI.GroupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?"; brandI.Mnemonic = "visa"; brandI.MaskArray = @"/[1-9]/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/"; brandI.CvcName = "CVV"; break; case "MasterCard": brandI.Id = CreditCardEnum.MasterCard; brandI.Pattern = "^5[1-5][0-9]{14}$"; brandI.CvcLength = 3; brandI.TestNumber = "5424000000000015"; brandI.EagerPattern = "^5[1-5]"; brandI.GroupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?"; brandI.Mnemonic = "mc"; brandI.MaskArray = @"/[1-9]/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/"; brandI.CvcName = "CVC"; break; case "DinersClub": brandI.Id = CreditCardEnum.DinersClub; brandI.Pattern = "^3(?:0[0-5]|[68][0-9])[0-9]{11}$"; brandI.TestNumber = ""; brandI.CvcLength = 3; brandI.TestNumber = "38000000000006"; brandI.EagerPattern = "^3(0|[68])"; brandI.GroupPattern = "(\\d{1,4})?(\\d{1,6})?(\\d{1,4})?"; brandI.Mnemonic = "diners"; brandI.MaskArray = @"/[1-9]/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/"; brandI.CvcName = "CID"; break; case "Discover": brandI.Id = CreditCardEnum.Discover; brandI.Pattern = "^6(?:011|5[0-9]{2})[0-9]{12}$"; brandI.TestNumber = ""; brandI.CvcLength = 3; brandI.TestNumber = "6011000000000012"; brandI.EagerPattern = "^6(011(0[0-9]|[2-4]|74|7[7-9]|8[6-9]|9[0-9])|4[4-9]|5)"; brandI.GroupPattern = "(\\d{1,4})(\\d{1,4})?(\\d{1,4})?(\\d{1,4})?(\\d{1,3})?"; brandI.Mnemonic = "disc"; brandI.MaskArray = @"/[1-9]/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/, /\d/, ' ', /\d/, /\d/, /\d/"; brandI.CvcName = "CID"; break; } await _context.CreditCardBrands.AddAsync(brandI); } } catch (Exception e) { throw e; } await _context.SaveChangesAsync(); }
public SavedCreditCard(string idOfSavedCardInTheGateway, CreditCardBrand creditCardBrand, string maskedCreditCardNumber) { IdOfSavedCardInTheGateway = idOfSavedCardInTheGateway; CreditCardBrand = creditCardBrand; MaskedCreditCardNumber = maskedCreditCardNumber; }
public BrandViewModel(CreditCardBrand brand) { BrandId = brand.Id; IdentificationNumber = brand.IdentificationNumber; Name = brand.Name; }
public CreditCardCreator WithBrand(CreditCardBrand newCreditCardBrand) { createdCreditCard.Brand = newCreditCardBrand; return this; }