static void Main(string[] args) { var keepGoing = true; Console.WriteLine("Enter individual credit card numbers at the prompt:"); Console.WriteLine("Enter 'f' to enter an input file name:"); Console.WriteLine("Enter 'x' to exit:"); ICreditCardValidator validator = new LuhnValidator(); ICreditCardFactory factory = new CreditCardFactory(validator, CARDDEFINITIONS); while (keepGoing) { Console.Write("Enter card number > "); var cardNumber = Console.ReadLine(); if (cardNumber == "x") { keepGoing = false; } else if (cardNumber == "f") { Console.Write("Enter a file name of credit card numbers > "); var filename = Console.ReadLine(); if (!File.Exists(filename)) { Console.WriteLine("File does not exist: " + filename); } else { try { using (StreamReader sr = new StreamReader(filename)) { while ((cardNumber = sr.ReadLine()) != null) { CreditCard card = factory.CreateCreditCard(cardNumber); var result = card.ToString(); Console.WriteLine(result); } } } catch (Exception e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } } } else { CreditCard card = factory.CreateCreditCard(cardNumber); var result = card.ToString(); Console.WriteLine(result); } } }
public OperationDetails Create(CreditCardDTO card, string userId) { List <CreditCard> c = Database.CardRepository.Find(x => x.Number == card.Number).ToList(); if (c.Count == 0) { DateTime expiration = new DateTime( Convert.ToInt32("20" + card.Year), Convert.ToInt32(card.Month), 1); if (expiration < DateTime.Now) { return(new OperationDetails(false, "Your card is expired", "")); } var hash = Database.UserManager.PasswordHasher.HashPassword(card.SecurityCode); CreditCard creditCard = CreditCardFactory.CreateCreditCard(card, hash, userId); if (creditCard != null) { Database.CardRepository.Create(creditCard); Database.CardRepository.SaveChanges(); return(new OperationDetails(true, "Card added successfully", "")); } return(new OperationDetails(false, "Card number is incorrect", "Number")); } return(new OperationDetails(false, "Card already exists", "")); }