Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        private void ValidateBrand(CreditCardBrand brand)
        {
            var exists = Enum.IsDefined(typeof(CreditCardBrand), brand);

            if (!exists)
            {
                throw new ArgumentException("Invalid Brand.");
            }
        }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
        }//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;
            }
        }
Exemplo n.º 7
0
        /// <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
Exemplo n.º 8
0
        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;
        }
Exemplo n.º 9
0
        /// <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
Exemplo n.º 10
0
        /// <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);
        }
Exemplo n.º 11
0
    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();
    }
Exemplo n.º 12
0
 public SavedCreditCard(string idOfSavedCardInTheGateway, CreditCardBrand creditCardBrand, string maskedCreditCardNumber)
 {
     IdOfSavedCardInTheGateway = idOfSavedCardInTheGateway;
     CreditCardBrand           = creditCardBrand;
     MaskedCreditCardNumber    = maskedCreditCardNumber;
 }
Exemplo n.º 13
0
 public BrandViewModel(CreditCardBrand brand)
 {
     BrandId = brand.Id;
     IdentificationNumber = brand.IdentificationNumber;
     Name = brand.Name;
 }
Exemplo n.º 14
0
 public CreditCardCreator WithBrand(CreditCardBrand newCreditCardBrand)
 {
     createdCreditCard.Brand = newCreditCardBrand;
     return this;
 }