protected override void StepFinished(object sender, StepEventArgs e) { base.StepFinished(sender, e); // We are on last step and checkout process has not been finalized yet by any web part if (e.IsLastStep && (e.GetValue(CHOP_FINALIZED_KEY) == null)) { // Handle automatic selection of payment and shipping options HandleAutomaticSelections(ShoppingCart); string validationMessage; // Validate cart; in case of failure user is able to go through checkout process and fix errors if (!ValidateShoppingCart(ShoppingCart, out validationMessage)) { e.CancelEvent = true; ShowError(validationMessage); e.SetValue(CHOP_FINALIZED_KEY, true); return; } if (FinalizeCheckout()) { int orderId = ShoppingCart.OrderId; string orderHash = ShoppingCart.GetHashCode().ToString(); WindowHelper.Add(orderHash, orderId); // Create URL for payment page with order id hidden in hash e.FinalStepUrl = URLHelper.AddParameterToUrl(e.FinalStepUrl, "o", orderHash); } else { // Log events created in transaction foreach (Tuple <string, string> error in loggedErrors) { EventLogProvider.LogEvent(EventType.ERROR, EVENT_SOURCE, error.Item2, error.Item1); } foreach (Exception ex in loggedExceptions) { EventLogProvider.LogException(EVENT_SOURCE, EVENT_CODE_EXCEPTION, ex); } e.CancelEvent = true; // Get error text string errorMessage = HTMLHelper.HTMLEncode(ResHelper.GetString("ecommerce.orderpreview.errorordersave")); if (!string.IsNullOrEmpty(registrationBanned)) { errorMessage += HTMLHelper.HTMLEncode(Environment.NewLine + registrationBanned); } ShowError(errorMessage); } CleanUpShoppingCart(); DocumentWizardManager.ResetWizard(); e.SetValue(CHOP_FINALIZED_KEY, true); } }
protected override void StepFinished(object sender, StepEventArgs e) { base.StepFinished(sender, e); // We are on last step and we don't have order yet if (e.IsLastStep && (e.GetValue(ORDER_CREATED_KEY) == null)) { if (FinalizeCheckout()) { int orderId = ShoppingCart.OrderId; string orderHash = ShoppingCart.GetHashCode().ToString(); WindowHelper.Add(orderHash, orderId); // Create URL for payment page with order id hidden in hash e.FinalStepUrl = URLHelper.AddParameterToUrl(e.FinalStepUrl, "o", orderHash); } else { // Log events created in transaction foreach (Tuple <string, string> error in loggedErrors) { EventLogProvider.LogEvent(EventType.ERROR, EVENT_SOURCE, error.Item2, error.Item1); } foreach (Exception ex in loggedExceptions) { EventLogProvider.LogException(EVENT_SOURCE, EVENT_CODE_EXCEPTION, ex); } e.CancelEvent = true; // Get error text string errorMessage = HTMLHelper.HTMLEncode(ResHelper.GetString("ecommerce.orderpreview.errorordersave")); if (!string.IsNullOrEmpty(registrationBanned)) { errorMessage += HTMLHelper.HTMLEncode(Environment.NewLine + registrationBanned); } // Try to show message through Message Panel web part CMSEventArgs <string> args = new CMSEventArgs <string>(); args.Parameter = errorMessage; ComponentEvents.RequestEvents.RaiseEvent(this, args, MESSAGE_RAISED); // If Message Panel web part is not present (Parameter is cleared by web part after successful handling), show message through alert script if (!string.IsNullOrEmpty(args.Parameter)) { ScriptHelper.Alert(Page, errorMessage); } } CleanUpShoppingCart(); DocumentWizardManager.ResetWizard(); e.SetValue(ORDER_CREATED_KEY, true); } }
protected override void LoadStep(object sender, StepEventArgs e) { base.LoadStep(sender, e); // Ensure log off check only once if (e.GetValue(LOG_OFF_VALIDATION) == null) { e.SetValue(LOG_OFF_VALIDATION, true); // Get current shopping cart user id, 0 for null (public user) int currentUserId = ShoppingCart.User == null ? 0 : ShoppingCart.User.UserID; // Get last known user saved in previous load of WP. In case there is no record in session current user id is retrieved. object userIdSessionObject = SessionHelper.GetValue("CheckoutUserID"); int lastKnownUserID = ValidationHelper.GetInteger(userIdSessionObject, currentUserId); // Reset checkout process in case of different users. Possible log-off or login as another user if (lastKnownUserID != currentUserId) { DocumentWizardManager.ResetWizard(); SessionHelper.Remove("CheckoutUserID"); // Refresh page for wizard to jump at first step URLHelper.Redirect(RequestContext.CurrentURL); } // Set user id to session for non public users. Change from public user to authorized does not reset checkout process. if (currentUserId != 0) { SessionHelper.SetValue("CheckoutUserID", currentUserId); } // Clean session entry (if there was one) for public user in case of log-off action to remove previous user id. else if (userIdSessionObject != null) { SessionHelper.Remove("CheckoutUserID"); } } }