Beispiel #1
0
        private bool ValidateInputs(QuickDonateRequestDTO request, QuickDonateResponseDTO response)
        {
            if (request.Amount <= 0)
            {
                response.Message = "Invalid Amount";
                return(false);
            }

            if (_validationService.IsEmailAddress(request.Email) == false)
            {
                response.Message = "Invalid Email Address";
                return(false);
            }

            if (_validationService.IsCreditCardNumber(request.CreditCardNumber) == false)
            {
                response.Message = "Invalid Credit Card Number";
                return(false);
            }

            if (_validationService.IsValidExpirationDate(request.CreditCardMonth, request.CreditCardYear) == false)
            {
                response.Message = "Invalid Credit Card Expire Date";
                return(false);
            }

            if (string.IsNullOrEmpty(request.CreditCardCVV))
            {
                response.Message = "Invalid Credit Card Security Code";
                return(false);
            }

            return(true);
        }
Beispiel #2
0
        private bool LoginOrRegisterUser(string email, Session sessionContext, QuickDonateResponseDTO response)
        {
            var user = _userService.FindUserByEmail(email);

            if (user == null)
            {
                //user does not exist
                var registered = _userService.Register(email);
                if (registered == false)
                {
                    response.Message = string.Format("Can not register user using email {0}", email);
                    return(false);
                }
            }


            var loggedIn = _userService.Login(user, sessionContext);

            if (loggedIn == false)
            {
                response.Message = string.Format("Can not login user using email {0}", email);
                return(false);
            }

            return(true);
        }
Beispiel #3
0
        public QuickDonateResponseDTO ProcessDonation(DTO.QuickDonateRequestDTO request)
        {
            var response       = new QuickDonateResponseDTO();
            var sessionContext = _sessionService.GetNewSession();

            //validate fields
            if (ValidateInputs(request, response) == false)
            {
                return(response);
            }

            //login or register user
            if (LoginOrRegisterUser(request.Email, sessionContext, response) == false)
            {
                return(response);
            }

            //add donation to cart
            if (AddContributionToCart(request, sessionContext, response) == false)
            {
                return(response);
            }

            //process checkout with credit card payment
            if (ProcessCheckout(request, sessionContext, response) == false)
            {
                return(response);
            }

            try
            {
                //send confirmation email
                SendConfirmationEmail(request, sessionContext);

                //run post checkout tasks
                PostCheckout(request, sessionContext);
            }
            catch (Exception ex)
            {
                this._loggingService.LogError(ex);
            }

            return(response);
        }
Beispiel #4
0
        private bool ProcessCheckout(QuickDonateRequestDTO request, Session sessionContext, QuickDonateResponseDTO response)
        {
            var creditCard = new CreditCard()
            {
                CardNumber   = request.CreditCardNumber,
                ExpireMonth  = request.CreditCardMonth,
                ExpireYear   = request.CreditCardYear,
                SecurityCode = request.CreditCardCVV
            };
            var success = _cartService.Checkout(creditCard, sessionContext);

            if (success == false)
            {
                response.Message = "Error Checkout the Cart";
                return(false);
            }

            return(true);
        }
Beispiel #5
0
        private bool AddContributionToCart(QuickDonateRequestDTO request, Session sessionContext, QuickDonateResponseDTO response)
        {
            var fundId      = _configurationService.GetValue("QuickDonateFundId", 0);
            var onAccountId = _configurationService.GetValue("QuickDonateOnAccountId", 0);
            var success     = _cartService.AddContribution(request.Amount, fundId, onAccountId, sessionContext);

            if (!success)
            {
                response.Message = "Can not add contribution to cart at this time, please try again later.";
                return(false);
            }

            return(true);
        }