예제 #1
0
        private void LoadShippingMethods(Order o)
        {
            var rates = new SortableCollection <ShippingRateDisplay>();

            if (!o.HasShippingItems)
            {
                var r = new ShippingRateDisplay
                {
                    DisplayName         = GlobalLocalization.GetString("NoShippingRequired"),
                    ProviderId          = string.Empty,
                    ProviderServiceCode = string.Empty,
                    Rate             = 0,
                    ShippingMethodId = "NOSHIPPING"
                };
                rates.Add(r);
            }
            else
            {
                // Shipping Methods
                rates = HccApp.OrderServices.FindAvailableShippingRates(o);

                if (rates.Count < 1)
                {
                    var result = new ShippingRateDisplay();
                    result.DisplayName      = GlobalLocalization.GetString("ToBeDetermined");
                    result.ShippingMethodId = "TOBEDETERMINED";
                    result.Rate             = 0;
                    rates.Add(result);
                }
            }

            litShippingMethods.Text = HtmlRendering.ShippingRatesToRadioButtons(rates, 300, o.ShippingMethodUniqueKey);
        }
        public ActionResult GetRatesAsRadioButtons(FormCollection form)
        {
            var result = new ShippingRatesJsonModel();

            var country   = form["country"] ?? string.Empty;
            var firstname = form["firstname"] ?? string.Empty;
            var lastname  = form["lastname"] ?? string.Empty;
            var address   = form["address"] ?? string.Empty;
            var city      = form["city"] ?? string.Empty;
            var state     = form["state"] ?? string.Empty;
            var zip       = form["zip"] ?? string.Empty;
            var orderid   = form["orderid"] ?? string.Empty;

            var order = HccApp.OrderServices.Orders.FindForCurrentStore(orderid);

            order.ShippingAddress.FirstName  = firstname;
            order.ShippingAddress.LastName   = lastname;
            order.ShippingAddress.Line1      = address;
            order.ShippingAddress.City       = city;
            order.ShippingAddress.PostalCode = zip;
            var c = HccApp.GlobalizationServices.Countries.Find(country);

            if (c != null)
            {
                order.ShippingAddress.CountryBvin = country;
                var region = c.Regions.
                             FirstOrDefault(r => r.Abbreviation == state);
                if (region != null)
                {
                    order.ShippingAddress.RegionBvin = region.Abbreviation;
                }
            }

            var rates = HccApp.OrderServices.FindAvailableShippingRates(order);

            if (rates != null && rates.Count > 0)
            {
                var selectedRate = rates.
                                   OfType <ShippingRateDisplay>().
                                   FirstOrDefault(r => r.UniqueKey == order.ShippingMethodUniqueKey);
                if (selectedRate == null)
                {
                    selectedRate = rates[0];
                }

                HccApp.OrderServices.OrdersRequestShippingMethod(selectedRate, order);
            }
            else
            {
                order.ClearShippingPricesAndMethod();
            }

            result.rates = HtmlRendering.ShippingRatesToRadioButtons(rates, 300, order.ShippingMethodUniqueKey);

            HccApp.CalculateOrderAndSave(order);

            return(new PreJsonResult(Web.Json.ObjectToJson(result)));
        }
예제 #3
0
        private void RenderProductOptions(Product p)
        {
            litProductInfo.Text = p.ProductName;
            phChoices.Controls.Clear();
            HtmlRendering.ProductOptionsAsControls(p, phChoices);

            pnlUserPrice.Visible = p.IsUserSuppliedPrice;
            lblUserPrice.Text    = p.UserSuppliedPriceLabel ?? "User Price";
        }
예제 #4
0
        private void SetProducts(ContentBlockSettingListItem data)
        {
            string            bvin  = data.Setting1;
            Product           p     = MyPage.MTApp.CatalogServices.Products.Find(bvin);
            StringBuilder     sb    = new StringBuilder();
            UserSpecificPrice price = MyPage.MTApp.PriceProduct(p, MyPage.MTApp.CurrentCustomer, null);

            HtmlRendering.RenderSingleProduct(ref sb, p, false, false, this.Page, price);
            this.litMain.Text = sb.ToString();
        }
예제 #5
0
        //GET: /{*slug}
        public ActionResult Index(string slug)
        {
            // Basic Setup
            ProductPageViewModel model = IndexSetup(slug);

            // Load an line item specific values
            LoadLineItemValues(model);

            // Render Options
            model.PreRenderedOptions = HtmlRendering.ProductOptions(model.LocalProduct.Options, model.Selections);

            // Record and Return view
            PersonalizationServices.RecordProductViews(model.LocalProduct.Bvin, MTApp);
            return(View(model));
        }
예제 #6
0
        public List <HtmlTemplateTag> DefaultReplacementTags(HccRequestContext context)
        {
            var tags = new List <HtmlTemplateTag>();

            var store             = context.CurrentStore;
            var hccApp            = new HotcakesApplication(context);
            var addressRepository = Factory.CreateRepo <AddressRepository>(context);

            tags.Add(new HtmlTemplateTag("[[Store.Address]]", addressRepository.FindStoreContactAddress().ToHtmlString()));
            tags.Add(new HtmlTemplateTag("[[Store.ContactEmail]]", store.Settings.MailServer.EmailForGeneral));
            tags.Add(new HtmlTemplateTag("[[Store.Logo]]", HtmlRendering.Logo(hccApp, false)));
            tags.Add(new HtmlTemplateTag("[[Store.SecureUrl]]", store.RootUrlSecure()));
            tags.Add(new HtmlTemplateTag("[[Store.StoreName]]", store.Settings.FriendlyName));
            tags.Add(new HtmlTemplateTag("[[Store.RawStoreName]]", store.StoreName));
            tags.Add(new HtmlTemplateTag("[[Store.StandardUrl]]", store.RootUrl()));
            tags.Add(new HtmlTemplateTag("[[Store.CurrentLocalTime]]", DateTime.Now.ToString()));
            tags.Add(new HtmlTemplateTag("[[Store.CurrentUtcTime]]", DateTime.UtcNow.ToString()));

            return(tags);
        }
예제 #7
0
        private void LoadShippingMethodsForOrder(Order o)
        {
            SortableCollection <ShippingRateDisplay> rates = MTApp.OrderServices.FindAvailableShippingRates(o, MTApp.CurrentStore);

            string rateKey         = o.ShippingMethodUniqueKey;
            bool   rateIsAvailable = false;

            // See if rate is available
            if ((rateKey.Length > 0))
            {
                foreach (MerchantTribe.Commerce.Shipping.ShippingRateDisplay r in rates)
                {
                    if ((r.UniqueKey == rateKey))
                    {
                        rateIsAvailable = true;
                        MTApp.OrderServices.OrdersRequestShippingMethod(r, o);
                    }
                }
            }

            // if it's not availabe, pick the first one or default
            if ((rateIsAvailable == false))
            {
                if ((rates.Count > 0))
                {
                    MTApp.OrderServices.OrdersRequestShippingMethod(rates[0], o);
                    rateKey = rates[0].UniqueKey;
                }
                else
                {
                    o.ClearShippingPricesAndMethod();
                }
            }

            ViewBag.ShippingRates = HtmlRendering.ShippingRatesToRadioButtons(rates, 300, o.ShippingMethodUniqueKey);
        }
예제 #8
0
        private void LoadShippingMethodsForOrder(Order o)
        {
            var rates = HccApp.OrderServices.FindAvailableShippingRates(o);

            var rateKey         = o.ShippingMethodUniqueKey;
            var rateIsAvailable = false;

            // See if rate is available
            if (rateKey.Length > 0)
            {
                foreach (ShippingRateDisplay r in rates)
                {
                    if (r.UniqueKey == rateKey)
                    {
                        rateIsAvailable = true;
                        HccApp.OrderServices.OrdersRequestShippingMethod(r, o);
                    }
                }
            }

            // if it's not availabe, pick the first one or default
            if (rateIsAvailable == false)
            {
                if (rates.Count > 0)
                {
                    HccApp.OrderServices.OrdersRequestShippingMethod(rates[0], o);
                    rateKey = rates[0].UniqueKey;
                }
                else
                {
                    o.ClearShippingPricesAndMethod();
                }
            }

            ViewBag.ShippingRates = HtmlRendering.ShippingRatesToRadioButtons(rates, 300, o.ShippingMethodUniqueKey);
        }
예제 #9
0
        public ActionResult IndexPost(string slug)
        {
            ProductPageViewModel model = IndexSetup(slug);

            // see if we're editing a line item instead of a new add
            string lineItemString = Request.Form["lineitemid"];

            if (!string.IsNullOrEmpty(lineItemString))
            {
                if (model.LineItemId == string.Empty)
                {
                    model.LineItemId = lineItemString;
                }
            }

            ParseSelections(model);

            if (Request.Form["savelaterbutton.x"] != null)
            {
                // Save for Later
                MTApp.CatalogServices.SaveProductToWishList(model.LocalProduct, model.Selections, 1, MTApp);
                return(Redirect("~/account/saveditems"));
            }
            else
            {
                // Add to Cart
                bool IsPurchasable = ValidateSelections(model);
                if ((IsPurchasable))
                {
                    DetermineQuantityToAdd(model);
                    if (model.Quantity > 0)
                    {
                        LineItem li = MTApp.CatalogServices.ConvertProductToLineItem(model.LocalProduct,
                                                                                     model.Selections,
                                                                                     model.Quantity,
                                                                                     MTApp);

                        Order Basket = SessionManager.CurrentShoppingCart(MTApp.OrderServices, MTApp.CurrentStore);
                        if (Basket.UserID != MTApp.CurrentCustomerId)
                        {
                            Basket.UserID = MTApp.CurrentCustomerId;
                        }

                        if (model.LineItemId.Trim().Length > 0)
                        {
                            long lineItemId = 0;
                            long.TryParse(model.LineItemId, out lineItemId);
                            var toRemove = Basket.Items.Where(y => y.Id == lineItemId).SingleOrDefault();
                            if (toRemove != null)
                            {
                                Basket.Items.Remove(toRemove);
                            }
                        }

                        MTApp.AddToOrderWithCalculateAndSave(Basket, li);
                        SessionManager.SaveOrderCookies(Basket, MTApp.CurrentStore);

                        return(Redirect("~/cart"));
                    }
                }
            }


            // Load Selections from form here
            // Do checks and add
            model.PreRenderedOptions = HtmlRendering.ProductOptions(model.LocalProduct.Options, model.Selections);

            return(View(model));
        }
        public ActionResult GetRatesAsRadioButtons(FormCollection form)
        {
            ShippingRatesJsonResponse result = new ShippingRatesJsonResponse();

            string country   = form["country"] ?? string.Empty;
            string firstname = form["firstname"] ?? string.Empty;
            string lastname  = form["lastname"] ?? string.Empty;
            string address   = form["address"] ?? string.Empty;
            string city      = form["city"] ?? string.Empty;
            string state     = form["state"] ?? string.Empty;
            string zip       = form["zip"] ?? string.Empty;
            string orderid   = form["orderid"] ?? string.Empty;

            Order o = MTApp.OrderServices.Orders.FindForCurrentStore(orderid);

            o.ShippingAddress.FirstName  = firstname;
            o.ShippingAddress.LastName   = lastname;
            o.ShippingAddress.Line1      = address;
            o.ShippingAddress.City       = city;
            o.ShippingAddress.PostalCode = zip;
            Country c = Country.FindByBvin(country);

            if ((c != null))
            {
                o.ShippingAddress.CountryBvin = country;
                o.ShippingAddress.CountryName = c.DisplayName;
                foreach (Region r in c.Regions)
                {
                    if ((r.Abbreviation == state))
                    {
                        o.ShippingAddress.RegionBvin = r.Abbreviation;
                        o.ShippingAddress.RegionName = r.Name;
                    }
                }
            }

            SortableCollection <ShippingRateDisplay> rates = MTApp.OrderServices.FindAvailableShippingRates(o);

            string rateKey         = o.ShippingMethodUniqueKey;
            bool   rateIsAvailable = false;

            // See if rate is available
            if ((rateKey.Length > 0))
            {
                foreach (MerchantTribe.Commerce.Shipping.ShippingRateDisplay r in rates)
                {
                    if ((r.UniqueKey == rateKey))
                    {
                        rateIsAvailable = true;
                        MTApp.OrderServices.OrdersRequestShippingMethod(r, o);
                    }
                }
            }

            // if it's not availabe, pick the first one or default
            if ((rateIsAvailable == false))
            {
                if ((rates.Count > 0))
                {
                    MTApp.OrderServices.OrdersRequestShippingMethod(rates[0], o);
                    rateKey = rates[0].UniqueKey;
                }
                else
                {
                    o.ClearShippingPricesAndMethod();
                }
            }

            result.rates = HtmlRendering.ShippingRatesToRadioButtons(rates, 300, o.ShippingMethodUniqueKey);

            MTApp.CalculateOrderAndSave(o);
            SessionManager.SaveOrderCookies(o, MTApp.CurrentStore);

            result.totalsastable = o.TotalsAsTable();

            //System.Threading.Thread.Sleep(500)
            return(new PreJsonResult(MerchantTribe.Web.Json.ObjectToJson(result)));
        }