private void ComboBoxCardTypeSelectionChangd(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(m_CreditCard.CardNumber))
            {
                ICreditCardValidator creditCardValidator = m_CreditCard.GetService(typeof(ICreditCardValidator)) as ICreditCardValidator;
                if (creditCardValidator != null)
                {
                    string errorMessage;
                    bool   isValid = false;

                    isValid = creditCardValidator.ValidateCreditCard(m_CreditCard, out errorMessage);
                    if (!isValid)
                    {
                        labelFeedback.BackColor = Color.LightYellow;
                        labelFeedback.Text      = "Feedback:" + Environment.NewLine + errorMessage;
                        formErrorProvider.SetError(labelFeedback, errorMessage);
                    }

                    else
                    {
                        this.labelFeedback.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
                        labelFeedback.Text           = "Feedback: Credit Card details were verified successfully.";
                        formErrorProvider.Clear();
                    }
                }
            }
            else
            {
                this.labelFeedback.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
                labelFeedback.Text           = string.Empty;
                formErrorProvider.Clear();
            }
        }
        private static void ValidateCreditCard(Card card)
        {
            if (card.CardType != CardType.Unknown)
            {
                ICreditCardValidator creditCardValidator = card.GetService(typeof(ICreditCardValidator)) as ICreditCardValidator;
                if (creditCardValidator != null)
                {
                    string errorMessage;
                    bool   isValid = false;

                    isValid = creditCardValidator.ValidateCreditCard(card, out errorMessage);
                    if (!isValid)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine($"{card.CardType}: {card.CardNumber} (Invalid)");
                        Console.ForegroundColor = ConsoleColor.Gray;
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine($"{card.CardType}: {card.CardNumber} (Valid)");
                        Console.ForegroundColor = ConsoleColor.Gray;
                    }
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"Unknown: {card.CardNumber} (Invalid)");
                Console.ForegroundColor = ConsoleColor.Gray;
            }
        }
        private void MaskedTextBoxCreditCardNumberValidated(object sender, EventArgs e)
        {
            //TODO: Made model properties more robust when setting values.
            if (!string.IsNullOrEmpty(m_CreditCard.CardNumber.Trim()))
            {
                ICreditCardValidator creditCardValidator = m_CreditCard.GetService(typeof(ICreditCardValidator)) as ICreditCardValidator;
                if (creditCardValidator != null)
                {
                    string errorMessage;
                    bool   isValid = false;

                    isValid = creditCardValidator.ValidateCreditCard(m_CreditCard, out errorMessage);
                    if (!isValid)
                    {
                        labelFeedback.BackColor = Color.LightYellow;
                        labelFeedback.Text      = "Feedback:" + Environment.NewLine + errorMessage;
                        formErrorProvider.SetError(labelFeedback, errorMessage);
                    }
                    else
                    {
                        this.labelFeedback.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
                        labelFeedback.Text           = "Feedback: Credit Card details were verified successfully.";
                        formErrorProvider.Clear();
                    }
                }
            }
            else
            {
                this.labelFeedback.BackColor = System.Drawing.SystemColors.GradientActiveCaption;
                labelFeedback.Text           = string.Empty;
                formErrorProvider.Clear();
            }
        }
        static void Main(string[] args)
        {
            string creditCardNumber        = "4539 0685 4366 1747";
            ICreditCardValidator validator = CreditCardValidationFactory.Validator(CreditCardIssuerEnum.Nccc);
            string validationResult        = validator.IsValid(creditCardNumber) ? "有效" : "無效";

            Console.WriteLine($"信用卡卡號[{creditCardNumber}] 是{validationResult}的");
            Console.ReadKey();
        }
 public OrderAcceptor(IDBContext dbContext, ICreditCardValidator creditCardValidator,
                      IPaymentProcessor paymentProcessor, IEmailSender emailSender, IMessageWriter messageWriter,
                      IInputReader inputReader)
 {
     _dbContext           = dbContext;
     _creditCardValidator = creditCardValidator;
     _paymentProcessor    = paymentProcessor;
     _emailSender         = emailSender;
     _messageWriter       = messageWriter;
     _inputReader         = inputReader;
 }
        public void ValidateInValidCreditCardNumbers(string cardNumber, CardType cardType)
        {
            Card creditCard = new Card()
            {
                CardNumber = cardNumber, CardType = cardType
            };
            ICreditCardValidator creditCardValidator = creditCard.GetService(typeof(ICreditCardValidator))
                                                       as ICreditCardValidator;
            bool   isValid      = false;
            string errorMessage = string.Empty;

            if (creditCardValidator != null)
            {
                isValid = creditCardValidator.ValidateCreditCard(creditCard, out errorMessage);
            }
            NUnit.Framework.Assert.False(isValid, $"Failed for {creditCard.CardNumber} with type {creditCard.CardType}");
            NUnit.Framework.Assert.IsEmpty(errorMessage, $"Failed for {creditCard.CardNumber} with type {creditCard.CardType}");
        }
Beispiel #7
0
 public CreditCardFactory(ICreditCardValidator validator, Tuple <Regex, Type>[] cardDefinitionList)
 {
     _validator          = validator;
     _cardDefinitionList = cardDefinitionList;
 }
        public void Initialize()
        {
            ICreditCardValidator validator = Substitute.For <ICreditCardValidator>();

            _factory = new CreditCardFactory(validator, CARDDEFINITIONS);
        }
 /// <summary>Create an authorizer using a provided credit card validator.</summary>
 /// <param name="creditCardValidator">The ICreditCardValidator instance to use.</param>
 public AlwaysAuthorize(ICreditCardValidator creditCardValidator)
 {
     this.creditCardValidator = creditCardValidator;
 }
Beispiel #10
0
 public void Initialize()
 {
     _validator = Substitute.For <ICreditCardValidator>();
 }
Beispiel #11
0
 public void SetUp()
 {
     _uut = new CreditCardValidator();
 }
 /// <summary>Create an authorizer using an instance of CreditCardValidator.</summary>
 public AlwaysAuthorize()
 {
     creditCardValidator = new CreditCardValidator();
 }
 public CreditCard(string cardNumber, ICreditCardValidator validator)
 {
     _cardNumber = cardNumber;
     _validator  = validator;
 }
 public MasterCardCreditCard(string cardNumber, ICreditCardValidator validator) : base(cardNumber, validator)
 {
 }
Beispiel #15
0
 public AmexCreditCard(string cardNumber, ICreditCardValidator validator) : base(cardNumber, validator)
 {
 }
 public DiscoverCreditCard(string cardNumber, ICreditCardValidator validator) : base(cardNumber, validator)
 {
 }
Beispiel #17
0
 public Card()
 {
     //TODO: Instantiate this sevcie using dependency injection to have loose coupling.
     m_CreditCardValidator = new CreditCardValidator();
 }
 /// <summary>Create an authorizer using a provided credit card validator.</summary>
 /// <param name="creditCardValidator">The ICreditCardValidator instance to use.</param>
 public AuthorizationService(ICreditCardValidator creditCardValidator)
 {
     this.creditCardValidator = creditCardValidator;
 }
 /// <summary>Create an authorizer using an instance of CreditCardValidator.</summary>
 public AuthorizationService()
 {
     creditCardValidator = new CreditCardValidator();
 }
 public void Initialize()
 {
     validator = new LuhnValidator();
 }
Beispiel #21
0
 public UnknownCreditCard(string cardNumber, ICreditCardValidator validator) : base(cardNumber, validator)
 {
 }