예제 #1
0
        public ActionResult Completed()
        {
            //validation
            if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
            {
                return(new HttpUnauthorizedResult());
            }

            //model
            var model = new CheckoutCompletedModel();

            var order = _orderService.SearchOrders(_storeContext.CurrentStore.Id, _workContext.CurrentCustomer.Id,
                                                   null, null, null, null, null, null, null, null, 0, 1).FirstOrDefault();

            if (order == null || order.Deleted || _workContext.CurrentCustomer.Id != order.CustomerId)
            {
                return(HttpNotFound());
            }

            //disable "order completed" page?
            if (_orderSettings.DisableOrderCompletedPage)
            {
                return(RedirectToAction("Details", "Order", new { id = order.Id }));
            }

            model.OrderId     = order.Id;
            model.OrderNumber = order.GetOrderNumber();

            return(View(model));
        }
        public virtual CheckoutCompletedModel PrepareCheckoutCompletedModel(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException("order");
            }

            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
                OnePageCheckoutEnabled = _orderSettings.OnePageCheckoutEnabled
            };

            return(model);
        }
예제 #3
0
        /// <summary>
        /// Prepare checkout completed model
        /// </summary>
        /// <param name="subscription">Subscription</param>
        /// <returns>Checkout completed model</returns>
        public virtual CheckoutCompletedModel PrepareCheckoutCompletedModel(Subscription subscription)
        {
            if (subscription == null)
            {
                throw new ArgumentNullException("subscription");
            }

            var model = new CheckoutCompletedModel
            {
                SubscriptionId           = subscription.Id,
                OnePageCheckoutEnabled   = _subscriptionSettings.OnePageCheckoutEnabled,
                CustomSubscriptionNumber = subscription.CustomSubscriptionNumber
            };

            return(model);
        }
        /// <summary>
        /// Prepare checkout completed model
        /// </summary>
        /// <param name="order">Order</param>
        /// <returns>
        /// A task that represents the asynchronous operation
        /// The task result contains the checkout completed model
        /// </returns>
        public virtual Task <CheckoutCompletedModel> PrepareCheckoutCompletedModelAsync(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
                OnePageCheckoutEnabled = _orderSettings.OnePageCheckoutEnabled,
                CustomOrderNumber      = order.CustomOrderNumber
            };

            return(Task.FromResult(model));
        }
예제 #5
0
        public ActionResult Completed(int?orderId)
        {
            ////validation
            //if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
            //    return new HttpUnauthorizedResult();

            GutterCleanOrder order = null;

            if (orderId.HasValue)
            {
                //load order by identifier (if provided)
                order = _orderService.GetOrderById(orderId.Value);
            }

            if (order == null || order.Deleted || _workContext.CurrentCustomer.Id != order.CustomerId)
            {
                return(RedirectToRoute("HomePage"));
            }



            //model
            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
            };

            model.QuestionDeliveryTimeStr = "5 business days";

            if (order.QuestionDeliveryTime == 1)
            {
                model.QuestionDeliveryTimeStr = "5 business days";
            }

            if (order.QuestionDeliveryTime == 2)
            {
                model.QuestionDeliveryTimeStr = "8 hours";
            }

            if (order.QuestionDeliveryTime == 3)
            {
                model.QuestionDeliveryTimeStr = "4 hours";
            }


            return(View(model));
        }
예제 #6
0
        /// <summary>
        /// Prepare checkout completed model
        /// </summary>
        /// <param name="order">Order</param>
        /// <returns>Checkout completed model</returns>
        public virtual CheckoutCompletedModel PrepareCheckoutCompletedModel(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
                OnePageCheckoutEnabled = _orderSettings.OnePageCheckoutEnabled,
                CustomOrderNumber      = order.CustomOrderNumber,
                OrderTotal             = order.OrderTotal
            };

            return(model);
        }
예제 #7
0
        /// <summary>
        /// Prepare checkout completed model
        /// </summary>
        /// <param name="order">Order</param>
        /// <returns>Checkout completed model</returns>
        public virtual CheckoutCompletedModel PrepareCheckoutCompletedModel(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
                OnePageCheckoutEnabled = _orderSettings.OnePageCheckoutEnabled,
                CustomOrderNumber      = order.CustomOrderNumber,
                HasPaid = order.PaymentMethodSystemName != "Payments.CheckMoneyOrder"
            };

            return(model);
        }
        /// <summary>
        /// Prepare checkout completed model
        /// </summary>
        /// <param name="order">Order</param>
        /// <returns>Checkout completed model</returns>
        public virtual CheckoutCompletedModel PrepareCheckoutCompletedModel(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
                OnePageCheckoutEnabled  = _orderSettings.OnePageCheckoutEnabled,
                CustomOrderNumber       = order.CustomOrderNumber,
                PaymentMethodSystemName = order.PaymentMethodSystemName,
                CustomOrderVoucher      = order.CaptureTransactionResult
            };

            return(model);
        }
        /// <summary>
        /// Prepare checkout completed model
        /// </summary>
        /// <param name="order">Order</param>
        /// <returns>Checkout completed model</returns>
        public virtual CheckoutCompletedModel PrepareCheckoutCompletedModel(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
                OnePageCheckoutEnabled = _orderSettings.OnePageCheckoutEnabled,
                CustomOrderNumber      = order.CustomOrderNumber,
                CustomerEmail          = order.ShippingAddress.Email,
                EstimatedDeliveryDate  = DateTime.Now.AddDays(1)
            };

            return(model);
        }
        public string GetOrderCompletedScript(CheckoutCompletedModel model)
        {
            //var analyticsTrackingScript = _segmentAnalyticsSettings.TrackingScript + Environment.NewLine;
            var order = GetOrder(model);

            if (order == null || _genericAttributeService.GetAttribute <bool>(order, SegmentAnalyticsSettings.ORDER_ALREADY_PROCESSED_ATTRIBUTE_NAME))
            {
                return(null);
            }

            var segmentAnalyticsSettings = _settingService.LoadSetting <SegmentAnalyticsSettings>(_storeContext.CurrentStore.Id);

            var orderCompleted = new SegmentOrderCompleted
            {
                OrderId     = order.CustomOrderNumber,
                Affiliation = _storeContext.CurrentStore.Name,
                Currency    = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId).CurrencyCode,
                Total       = order.OrderTotal,
                Tax         = order.OrderTax,
                Shipping    = segmentAnalyticsSettings.IncludingTax
                    ? order.OrderShippingInclTax
                    : order.OrderShippingExclTax
            };

            var position = 1;

            order.OrderItems.ForEach(oi =>
            {
                orderCompleted.Products.Add(new SegmentProduct
                {
                    ProductId = oi.ProductId.ToString(),
                    Sku       = _productService.FormatSku(oi.Product, oi.AttributesXml),
                    Name      = oi.Product.Name,
                    Category  = _categoryService.GetProductCategoriesByProductId(oi.ProductId).FirstOrDefault()?.Category.Name,
                    Price     = segmentAnalyticsSettings.IncludingTax ? oi.UnitPriceInclTax : oi.UnitPriceExclTax,
                    Quantity  = oi.Quantity,
                    Position  = position++
                });
            });

            _genericAttributeService.SaveAttribute(order, SegmentAnalyticsSettings.ORDER_ALREADY_PROCESSED_ATTRIBUTE_NAME, true);

            return(orderCompleted.GetScript());
        }
예제 #11
0
        /// <summary>
        /// Prepare checkout completed model
        /// </summary>
        /// <param name="order">Order</param>
        /// <returns>
        /// A task that represents the asynchronous operation
        /// The task result contains the checkout completed model
        /// </returns>
        public virtual async Task <CheckoutCompletedModel> PrepareCheckoutCompletedModelAsync(Order order)
        {
            if (order == null)
            {
                throw new ArgumentNullException(nameof(order));
            }

            var now = await _dateTimeHelper.ConvertToUserTimeAsync(DateTime.Now);

            var untilLunchTimeDeliveryDeadline = new DateTime(now.Year, now.Month, now.Day, 11, 0, 0);
            var lunchTime = new DateTime(now.Year, now.Month, now.Day, 13, 0, 0);

            string message;

            if (now < new DateTime(now.Year, now.Month, now.Day, 12, 00, 00))
            {
                message = "Your lunch will be delivered at 1 PM.";
            }
            else if (now < new DateTime(now.Year, now.Month, now.Day, 13, 30, 00))
            {
                message = "Your lunch will be delivered at 2 PM.";
            }
            else if (now < new DateTime(now.Year, now.Month, now.Day, 15, 30, 00))
            {
                message = "Your lunch will be delivered at 4 PM.";
            }
            else
            {
                message = "Your lunch will be delivered TOMORROW at 1 PM.";
            }

            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,
                OnePageCheckoutEnabled    = _orderSettings.OnePageCheckoutEnabled,
                CustomOrderNumber         = order.CustomOrderNumber,
                DeliveryTimeWindowMessage = message
            };

            return(model);
        }
예제 #12
0
        public ActionResult Completed(int?orderid, int?emailinvoiceid, int?hasnhs)
        {
            if (emailinvoiceid.Value == 0 && _workContext.CurrentProfile.IsAnonymous)
            {
                return(new HttpUnauthorizedResult());
            }

            var thankYouTitle = string.Empty;
            var message       = string.Empty;

            // TODO: To implement Trustbadge code
            //var enableReview = true;

            if (emailinvoiceid.HasValue && emailinvoiceid.Value <= 0 && orderid.HasValue && orderid.Value > 0)
            {
                thankYouTitle = string.Format("Your order number is {0}.", orderid.Value);

                if (hasnhs.HasValue && hasnhs.Value == 1)
                {
                    message = string.Format(@"<h4>Now post your prescription to Apollo.</h4>
                            <p>Write your order reference number (<b>{0}</b>) on the top of your prescription.<br/>
                              Send your original prescription to the address below. You do not need to attach a stamp.              
                            </p>
                            <p><b>
                                FREEPOST RSRB-YBYA-EGBL,<br />
                                Apollo Prescriptions,<br />                
                                Unit 27, Orbital 25 Business Park,<br />
                                Dwight Road, Watford,<br />
                                Herts WD18 9DA
                               </b>
                            </p>", orderid.Value);
                }
            }

            //if (emailinvoiceid.HasValue && emailinvoiceid.Value > 0)
            //    enableReview = false;

            //if (_workContext.CurrentProfile.IsAnonymous)
            //    enableReview = false;

            var model = new CheckoutCompletedModel
            {
                OrderId        = orderid,
                EmailInvoiceId = emailinvoiceid,
                ThankYouTitle  = thankYouTitle,
                Message        = message
            };

            if (orderid.HasValue && orderid.Value > 0 && _workContext.CurrentProfile.IsAnonymous == false)
            {
                var profileId = _workContext.CurrentProfile.Id;
                //var order = _orderService.GetCompleteOrderByIdAndProfileId(orderid.Value, profileId);
                //var account = _accountService.GetAccountByProfileId(profileId);

                //model.Email = account.Email;
                //model.Amount = string.Format("{0:0.00}", order.GrandTotal);
                //model.CurrencyCode = order.CurrencyCode;
                //model.PaymentType = order.PaymentMethod;

                _cartService.ClearCart(profileId);
            }

            return(View(model));
        }
예제 #13
0
        public ActionResult Completed(int? orderId)
        {
            ////validation
            //if ((_workContext.CurrentCustomer.IsGuest() && !_orderSettings.AnonymousCheckoutAllowed))
            //    return new HttpUnauthorizedResult();

            GutterCleanOrder order = null;
            if (orderId.HasValue)
            {
                //load order by identifier (if provided)
                order = _orderService.GetOrderById(orderId.Value);
            }

            if (order == null || order.Deleted || _workContext.CurrentCustomer.Id != order.CustomerId)
            {
                return RedirectToRoute("HomePage");
            }

            //model
            var model = new CheckoutCompletedModel
            {
                OrderId = order.Id,

            };

            model.QuestionDeliveryTimeStr = "5 business days";

            if (order.QuestionDeliveryTime == 1)
                model.QuestionDeliveryTimeStr = "5 business days";

            if(order.QuestionDeliveryTime==2)
                model.QuestionDeliveryTimeStr = "8 hours";

            if (order.QuestionDeliveryTime == 3)
                model.QuestionDeliveryTimeStr = "4 hours";

            return View(model);
        }
 private Order GetOrder(CheckoutCompletedModel model)
 {
     return((model == null)
         ? _orderService.SearchOrders(storeId: _storeContext.CurrentStore.Id, customerId: _workContext.CurrentCustomer.Id, pageSize: 1).FirstOrDefault()
         : _orderService.GetOrderById(model.OrderId));
 }