public override bool Equals(object other) { if (!(other is CreditCardDetails)) { return(false); } CreditCardDetails card = (CreditCardDetails)other; return(card.Month == this.Month && card.Year == this.Year && card.CardNumber == this.CardNumber && card.CardVerificationValue == this.CardVerificationValue); }
private CreditCardDetails GenerateRandomCard(string prefix, int length, BankAccountDetails bank) { string ccnumber = prefix; while (ccnumber.Length < (length - 1)) { double rnd = (random.NextDouble() * 1.0f - 0f); ccnumber += Math.Floor(rnd * 10); } // reverse number and convert to int var reversedCCnumberstring = ccnumber.ToCharArray().Reverse(); var reversedCCnumberList = reversedCCnumberstring.Select(c => Convert.ToInt32(c.ToString())); // calculate sum //Luhn Algorithm int sum = 0; int pos = 0; int[] reversedCCnumber = reversedCCnumberList.ToArray(); while (pos < length - 1) { int odd = reversedCCnumber[pos] * 2; if (odd > 9) { odd -= 9; } sum += odd; if (pos != (length - 2)) { sum += reversedCCnumber[pos + 1]; } pos += 2; } // calculate check digit int checkdigit = Convert.ToInt32((Math.Floor((decimal)sum / 10) + 1) * 10 - sum) % 10; ccnumber += checkdigit; var date = DateTime.Now.AddYears(6).AddMonths(6); using (var db = new BankSystemContext()) { var card = new CreditCardDetails { BankAccountId = bank.Id, CardNumber = ccnumber, CardVerificationValue = (random.Next(1000) + "").PadLeft(3), Month = date.Month, Year = date.Year }; db.CreditCards.Add(card); db.SaveChanges(); return(card); } }