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); }
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); }
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); }
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); }
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); }