Exemple #1
0
        public ActionResult Index()
        {
            var receiptPage = _contentRepository.Get <ReceiptPage>(_siteConfiguration.GetSettings().ReceiptPage);

            var cartHelper = new CartHelper(Cart.DefaultName);

            if (cartHelper.IsEmpty && !PageEditing.PageIsInEditMode)
            {
                return(View("Error/_EmptyCartError"));
            }

            string         message        = "";
            OrderViewModel orderViewModel = null;

            if (cartHelper.Cart.OrderForms.Count > 0)
            {
                var orderNumber = cartHelper.Cart.GeneratePredictableOrderNumber();

                _log.Debug("Order placed - order number: " + orderNumber);

                cartHelper.Cart.OrderNumberMethod = CartExtensions.GeneratePredictableOrderNumber;

                System.Diagnostics.Trace.WriteLine("Running Workflow: " + OrderGroupWorkflowManager.CartCheckOutWorkflowName);
                var results = OrderGroupWorkflowManager.RunWorkflow(cartHelper.Cart, OrderGroupWorkflowManager.CartCheckOutWorkflowName);
                message = string.Join(", ", OrderGroupWorkflowManager.GetWarningsFromWorkflowResult(results));

                if (message.Length == 0)
                {
                    cartHelper.Cart.SaveAsPurchaseOrder();
                    cartHelper.Cart.Delete();
                    cartHelper.Cart.AcceptChanges();
                }

                System.Diagnostics.Trace.WriteLine("Loading Order: " + orderNumber);
                var order = _orderService.GetOrderByTrackingNumber(orderNumber);

                // Must be run after order is complete,
                // This might release the order for shipment and
                // send the order receipt by email
                System.Diagnostics.Trace.WriteLine(string.Format("Process Completed Payment: {0} (User: {1})", orderNumber, User.Identity.Name));
                _paymentCompleteHandler.ProcessCompletedPayment(order, User.Identity);

                orderViewModel = new OrderViewModel(_currentMarket.GetCurrentMarket().DefaultCurrency.Format, order);
            }

            ReceiptViewModel model = new ReceiptViewModel(receiptPage);

            model.CheckoutMessage = message;
            model.Order           = orderViewModel;

            // Track successfull order in Google Analytics
            TrackAfterPayment(model);

            _metricsLoggingService.Count("Purchase", "Purchase Success");
            _metricsLoggingService.Count("Payment", "Generic");

            return(View("ReceiptPage", model));
        }
Exemple #2
0
        public ActionResult ProcessPayment(DibsPaymentPage currentPage, DibsPaymentResult result)
        {
            if (_log.IsDebugEnabled())
            {
                _log.Debug("Payment processed: {0}", result);
            }

            var model = GetReceiptForPayment(result);

            // Track successfull order in Google Analytics
            _googleAnalyticsTracker.TrackAfterPayment(model);

            _metricsLoggingService.Count("Purchase", "Purchase Success");
            _metricsLoggingService.Count("Payment", "Dibs");

            return(View("ReceiptPage", model));
        }
        public ActionResult Login(LoginPage currentPage, LoginViewModel model, LoginForm loginForm, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            string          user = loginForm.Username;
            string          pw   = loginForm.Password;
            CustomerContact cc   = null;

            if (Membership.ValidateUser(user, pw))
            {
                MembershipUser account = Membership.GetUser(user);
                if (account != null)
                {
                    var profile = SecurityContext.Current.CurrentUserProfile as CustomerProfileWrapper;
                    if (profile != null)
                    {
                        cc = CustomerContext.Current.GetContactForUser(account);
                        CreateAuthenticationCookie(ControllerContext.HttpContext, user, Mediachase.Commerce.Core.AppContext.Current.ApplicationName, false);

                        string url = returnUrl;

                        if (string.IsNullOrEmpty(returnUrl))
                        {
                            if (currentPage.LoggedInPage != null)
                            {
                                url = _urlResolver.GetUrl(currentPage.LoggedInPage);
                            }
                            else
                            {
                                url = _urlResolver.GetUrl(ContentReference.StartPage);
                            }
                        }

                        _metrics.Count("Users", "Login Success");
                        return(Redirect(url));
                    }
                }
            }
            ModelState.AddModelError("LoginForm.ValidationMessage", _localizationService.GetString("/common/account/login_error"));
            _metrics.Count("Users", "Login Failure");
            return(View("Index", model));
        }