Example #1
0
        public ActionResult Index(string trackingID, string categoryName, int?page, string sort, int?width, int?height)
        {
            //in case request came from wix to css page and not to inner page
            if (!string.IsNullOrEmpty(Request.QueryString["instance"]) && !Request.Url.AbsoluteUri.ToLower().Contains("widget/wix/widget"))
            {
                return(new MVCTransferResult(new {
                    controller = "Wix",
                    action = "Index",
                    instance = Request.QueryString["instance"],
                    trackingID = (HttpContext.Request.RequestContext.RouteData.Values["trackingID"] as string) ?? HttpContext.Request.QueryString["trackingId"],
                    categoryName = HttpContext.Request.RequestContext.RouteData.Values["categoryName"],
                    width = HttpContext.Request.QueryString["width"],
                    height = HttpContext.Request.QueryString["height"],
                    viewmode = HttpContext.Request.QueryString["viewmode"],
                    compId = HttpContext.Request.QueryString["compId"],
                    cacheKiller = HttpContext.Request.QueryString["cacheKiller"],
                    section_url = HttpContext.Request.QueryString["section-url"],
                    target = HttpContext.Request.QueryString["target"]
                }));
            }

            if (MainLayoutViewModel == null || (MainLayoutViewModel.Status != WebStoreEnums.StoreStatus.Published && !MainLayoutViewModel.IsUserPurchasesCategory))
            {
                return(RedirectToAction("NotFound", "Error", new { status = MainLayoutViewModel != null ? MainLayoutViewModel.Status : WebStoreEnums.StoreStatus.Unknown, Area = "Widget" }));
            }

            var userID = CurrentUserId < 0 ? (int?)null : CurrentUserId;

            //if only one course exist in store don't display the index
            if (MainLayoutViewModel.IsSingleCourseStore && !MainLayoutViewModel.IsUserPurchasesCategory)
            {
                if (!string.IsNullOrEmpty(Request.QueryString["_escaped_fragment_"]))
                {
                    ViewBag.TabName = Request.QueryString["_escaped_fragment_"];
                }

                ItemProductPageToken token;

                //if (MainLayoutViewModel.NumCourses == 0)
                //{
                //    token = WidgetServices.GetPlaceHolderItemInfoToken();
                //    return View("~/Areas/Widget/Views/Wix/PlaceHolder.cshtml", token);
                //}

                if (MainLayoutViewModel.NumCourses > 0 && MainLayoutViewModel.CategoriesList != null && MainLayoutViewModel.CategoriesList.Any())
                {
                    // get the single course
                    token            = WidgetServices.GetWixDefaultItem(MainLayoutViewModel.CategoriesList.Select(x => x.WebStoreCategoryID).ToList(), CurrentUserId);
                    token.TrackingID = trackingID;
                    return(View("~/Areas/Widget/Views/Wix/PlaceHolder.cshtml", token));
                }

                //if no courses were defined display template place holder.
                token            = WidgetServices.GetPlaceHolderItemInfoToken();
                token.TrackingID = trackingID;
                return(View("~/Areas/Widget/Views/Wix/PlaceHolder.cshtml", token));
            }
            //display Index
            var pagesize = WidgetServices.NumItemsInPage(width, height);

            if (page == null)
            {
                page = 1;
            }

            //if main lfe site - display all courses that exist in lfe
            IndexModelViewToken model;

            if ((MainLayoutViewModel.ParentURL.ToLower().StartsWith("http://" + Request.Url.Host.ToLower()) || MainLayoutViewModel.ParentURL.ToLower().StartsWith(Utils.GetKeyValue("baseUrl"))) && (string.IsNullOrEmpty(categoryName) || categoryName.ToLower() == "_all"))
            {
                model = WidgetServices.GetAllCoursesView(_webStorePortalServices.GetStoreCurrencyByTrackingId(trackingID), (int)page, sort, pagesize, userID);
            }
            else
            {
                model = WidgetServices.GetIndexModelView(_webStorePortalServices.GetStoreCurrencyByTrackingId(trackingID), trackingID, (int)page, sort, pagesize, MainLayoutViewModel.Category != null ? (int?)MainLayoutViewModel.Category.WebStoreCategoryID : null, categoryName, userID, MainLayoutViewModel.WixViewMode);

                if (model == null)
                {
                    return(View("~/Areas/Widget/Views/Shared/Error.cshtml"));
                }

                if (model.ItemsList.Count.Equals(0))
                {
                    return(View(model));
                }

                //if only one course or bundle in category redirect to product page
                if (model.ItemsList.Count > 1 || page != 1)
                {
                    return(View(model));                                        //|| page != 1
                }
                var item = model.ItemsList[0];

                return(RedirectToAction("Index", "Item", new { type = item.ItemType, author = item.AuthorName.OptimizedUrl(), itemName = item.ItemName.OptimizedUrl(), trackingId = MainLayoutViewModel.WebStore != null ? MainLayoutViewModel.WebStore.TrackingID : string.Empty, mode = string.Empty, width = MainLayoutViewModel.Width, height = MainLayoutViewModel.Height, compId = this.GetWixCompId() }));
            }

            return(model == null?View("~/Areas/Widget/Views/Shared/Error.cshtml") : View(model));
        }