Exemple #1
0
        public async Task <IActionResult> Search(string keyword)
        {
            if (string.IsNullOrEmpty(keyword))
            {
                return(Redirect("/"));
            }
            var apiService = _configuration.GetApiServiceInfo();

            ViewBag.Keyword = keyword;
            if (!string.IsNullOrEmpty(keyword))
            {
                keyword = keyword.Trim().StripVietnameseChars().ToUpper();
            }

            var products = await _productService.ProductSearch(apiService.TenantId,
                                                               CultureInfo.CurrentCulture.Name, keyword, null, null, null, 1, 100);

            ViewBag.ListProduct = JsonConvertHelper.GetObjectFromObject <List <ProductSearchViewModel> >(products?.Items);
            var news = await _newsService.Search(apiService.TenantId,
                                                 CultureInfo.CurrentCulture.Name, keyword, null, null, null, 1, 100);

            ViewBag.ListNews = JsonConvertHelper.GetObjectFromObject <List <NewsSearchViewModel> >(news?.Items);

            return(View());
        }
Exemple #2
0
        public async Task <IActionResult> About()
        {
            var apiService    = _configuration.GetApiServiceInfo();
            var listCoreValue = await _coreService.GetAllActivatedCoreValueAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name);

            if (listCoreValue != null)
            {
                ViewBag.ListCoreValue = JsonConvertHelper.GetObjectFromObject <List <ValueViewModel> >(listCoreValue);
            }

            if (_cache.TryGetValue($"{CacheParam.MenuMiddle}{CultureInfo.CurrentCulture.Name}", out MenuDetailViewModel CategoryMiddleCache))
            {
                ViewBag.MenuContact = CategoryMiddleCache;
            }
            else
            {
                var menuMiddle = await _menuService.GetAllActivatedMenuByPositionAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, WebsiteClient.Api.Domain.Constants.Position.Middle);

                var menuMiddleData = JsonConvertHelper.GetObjectFromObject <MenuDetailViewModel>(menuMiddle);
                _cache.Set($"{CacheParam.MenuMiddle}{CultureInfo.CurrentCulture.Name}", menuMiddleData, TimeSpan.FromHours(1));
                ViewBag.MenuContact = menuMiddleData;
            }

            return(View());
        }
Exemple #3
0
        public async Task <IActionResult> Agency()
        {
            var listProvince = await _coreService.GetProvinceByNationId(1);

            ViewBag.ListProvice = JsonConvertHelper.GetObjectFromObject <List <ObjectViewModel> >(listProvince);
            ViewBag.Message     = "Chúc mừng bạn đã đăng ký đại lý thành công. Chúng tôi sẽ liên hệ với bạn trong thời gian sớm nhất để xác nhận.";
            return(View());
        }
Exemple #4
0
        public async Task <IActionResult> GetNewsByCategory(int categoryId, int page = 3, int pageSize = 6)
        {
            var apiService = _configuration.GetApiServiceInfo();

            var listNews = await _newsService.GetNewsByCategoryIdAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, categoryId, page, pageSize);

            var listNewsData = JsonConvertHelper.GetObjectFromObject <CategoryWidthNewsViewModel>(listNews.Data);

            return(Json(listNewsData.ListNews));
        }
Exemple #5
0
        public async Task <JsonResult> GetComment(string objectId, int objectType, int page = 1, int pageSize = 20)
        {
            var apiService  = _configuration.GetApiServiceInfo();
            var commentMeta = await _feedbackService.GetComment(apiService.TenantId, objectId, objectType, page, pageSize);

            var comment = JsonConvertHelper.GetObjectFromObject <SearchResult <CommentViewModel> >(commentMeta);

            var result = RenderTree(comment.Items, null);

            return(Json(new { Items = result, comment.TotalRows }));
        }
Exemple #6
0
        public async Task <JsonResult> Send(FeedbackMeta feedback)
        {
            if (!ModelState.IsValid)
            {
                return(Json(GetErrorsInModelState()));
            }

            var apiService = _configuration.GetApiServiceInfo();

            var feedbackMetaData = JsonConvertHelper.GetObjectFromObject <GHM.WebsiteClient.Api.Domain.ModelMetas.FeedbackMeta>(feedback);
            var result           = await _feedbackService.Insert(apiService.TenantId, feedbackMetaData);

            return(Json(result));
        }
Exemple #7
0
        public async Task <JsonResult> Comment(CommentMeta commentMeta)
        {
            if (!ModelState.IsValid)
            {
                return(Json(GetErrorsInModelState()));
            }

            var apiService = _configuration.GetApiServiceInfo();

            var listSettings = await _settingService.GetWebsiteSettingsAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name);

            var settings = listSettings.Items.Select(x => new Setting
            {
                Key = x.Key,
                ConcurrencyStamp = x.ConcurrencyStamp,
                DisplayName      = x.DisplayName,
                GroupId          = x.GroupId,
                LanguageId       = x.LanguageId,
                Value            = x.Value
            }).ToList();

            var    websiteSetting = new WebsiteSetting();
            string convention     = typeof(WebsiteSetting).Namespace;

            var commentNotAllow = Common.GetSettingValue(settings, string.Format("{0}.CommentNotAllow", convention));

            if (!string.IsNullOrEmpty(commentNotAllow))
            {
                var listComment = commentNotAllow.Split(',');
                if (listComment != null && listComment.Any())
                {
                    foreach (var comment in listComment)
                    {
                        if (commentMeta.Content.Contains(comment))
                        {
                            return(Json($"Bạn không được phép bình luận từ {comment}"));
                        }
                    }
                }
            }

            var commentMetaData = JsonConvertHelper.GetObjectFromObject <WebsiteClient.Api.Domain.ModelMetas.CommentMeta>(commentMeta);

            commentMetaData.TenantId = apiService.TenantId;

            var result = await _feedbackService.InsertComment(commentMetaData);

            return(Json(result));
        }
Exemple #8
0
        public async Task <JsonResult> AgencyRegister(AgencyMeta agencyMeta)
        {
            if (!ModelState.IsValid)
            {
                return(Json(GetErrorsInModelState()));
            }

            var apiService = _configuration.GetApiServiceInfo();

            var agencyMetaData = JsonConvertHelper.GetObjectFromObject <GHM.WebsiteClient.Api.Domain.ModelMetas.AgencyInfoMeta>(agencyMeta);

            agencyMetaData.TenantId = apiService.TenantId;
            var result = await _agencyInfoService.Insert(CultureInfo.CurrentCulture.Name, agencyMetaData);

            return(Json(result));
        }
Exemple #9
0
        public async Task <IActionResult> Index()
        {
            var apiService = _configuration.GetApiServiceInfo();

            var listProductCategory = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, null, false, int.MaxValue);

            var listProductCategoryData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategory);

            ViewBag.ListProductCategory = listProductCategoryData;

            var productCategoryInfo = listProductCategory.FirstOrDefault();

            ViewBag.ProductCategoryId = productCategoryInfo?.Id;
            var products = await _productService.ProductSearchByCategory(apiService.TenantId, CultureInfo.CurrentCulture.Name, productCategoryInfo?.SeoLink, null, null, 1, 6);

            ViewBag.ListProduct  = products?.Items;
            ViewBag.TotalProduct = products?.TotalRows;
            return(View());
        }
Exemple #10
0
        public async Task <IActionResult> Buy(string productId, int?quantity)
        {
            var apiService = _configuration.GetApiServiceInfo();

            var productInfo = await _productService.ProductGetDetail(apiService.TenantId, CultureInfo.CurrentCulture.Name, productId, null);

            var product = JsonConvertHelper.GetObjectFromObject <ProductSearchViewModel>(productInfo);

            if (SessionHelper.GetObjectFromJson <List <ProductSelectedItem> >(HttpContext.Session, SessionParam.ShoppingCart) == null)
            {
                List <ProductSelectedItem> cart = new List <ProductSelectedItem>
                {
                    new ProductSelectedItem {
                        Product = product, Quantity = quantity ?? 0
                    }
                };

                SessionHelper.SetObjectAsJson(HttpContext.Session, SessionParam.ShoppingCart, cart);
            }
            else
            {
                List <ProductSelectedItem> cart = SessionHelper.GetObjectFromJson <List <ProductSelectedItem> >(HttpContext.Session, SessionParam.ShoppingCart);
                int index = IsExists(productId);

                if (index >= 0)
                {
                    cart[index].Quantity = quantity ?? 0;
                }
                else
                {
                    cart.Add(new ProductSelectedItem {
                        Product = product, Quantity = quantity ?? 0
                    });
                }

                SessionHelper.SetObjectAsJson(HttpContext.Session, SessionParam.ShoppingCart, cart);
            }

            var listProduct = SessionHelper.GetObjectFromJson <List <ProductSelectedItem> >(HttpContext.Session, SessionParam.ShoppingCart);

            return(Ok(listProduct));
        }
Exemple #11
0
        public async Task <IActionResult> Index()
        {
            var apiService   = _configuration.GetApiServiceInfo();
            var listProvince = await _coreService.GetProvinceByNationId(1);

            ViewBag.ListProvice = JsonConvertHelper.GetObjectFromObject <List <ObjectViewModel> >(listProvince);
            var breadcrumbs = new List <Breadcrumb>
            {
                new Breadcrumb()
                {
                    Name      = "Liên hệ",
                    IsCurrent = true,
                }
            };

            ViewBag.Breadcrumb = breadcrumbs;
            ViewBag.ListAgency = await _agencyInfoService.AgencyInfoGetClient(apiService.TenantId, CultureInfo.CurrentCulture.Name,
                                                                              null, null);

            return(View());
        }
Exemple #12
0
        public async Task <IActionResult> Solution(string seoLink)
        {
            var apiService          = _configuration.GetApiServiceInfo();
            var listProductCategory = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, seoLink, null, null, null, 1);

            var productCategoryInfo = listProductCategory.FirstOrDefault();

            var model = JsonConvertHelper.GetObjectFromObject <ProductCategorySearchViewModel>(productCategoryInfo);

            if (productCategoryInfo != null)
            {
                var products = await _productService.ProductSearchByParentCategory(apiService.TenantId,
                                                                                   CultureInfo.CurrentCulture.Name, null, null, productCategoryInfo?.Id ?? 0);

                ViewBag.ListProduct = JsonConvertHelper.GetObjectFromObject <List <ProductWidthCategoryViewModel> >(products?.Items);
            }
            if (model == null)
            {
                return(View("../NotFound/Index"));
            }
            return(View(model));
        }
Exemple #13
0
        public async Task <IActionResult> Search(string keyword,
                                                 string attributeName, string attributeValueName, int page = 1, int pageSize = 6)
        {
            var apiService = _configuration.GetApiServiceInfo();

            ViewBag.Keyword            = keyword?.Trim().StripVietnameseChars()?.ToUpper();
            ViewBag.AttributeName      = attributeName?.Trim().StripVietnameseChars()?.ToUpper();
            ViewBag.AttributeValueName = attributeValueName?.Trim().StripVietnameseChars()?.ToUpper();

            var breadcrumbs = new List <Breadcrumb>
            {
                new Breadcrumb()
                {
                    Name      = "Sản phẩm",
                    IsCurrent = false,
                    Url       = "san-pham"
                },
                new Breadcrumb()
                {
                    Name      = !string.IsNullOrEmpty(keyword) ? $"Tìm kiếm: {keyword}" : $"{attributeName} : {attributeValueName}",
                    IsCurrent = true,
                }
            };

            ViewBag.Breadcrumb = breadcrumbs;

            var listProductCategory = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, null, null, int.MaxValue);

            var listProductCategoryData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategory);

            ViewBag.ListProductCategory = listProductCategoryData;
            if (listProductCategoryData != null && listProductCategoryData.Any())
            {
                ViewBag.ProductCategroryTree = RenderTree(listProductCategoryData, null)?.Take(5);
            }

            if (!string.IsNullOrEmpty(keyword) && string.IsNullOrEmpty(attributeName) &&
                string.IsNullOrEmpty(attributeValueName))
            {
                keyword = keyword?.Trim()?.StripVietnameseChars().ToUpper();
                var products = await _productService.ProductSearch(apiService.TenantId, CultureInfo.CurrentCulture.Name,
                                                                   keyword, null, null, null, page, pageSize);

                ViewBag.ListProduct  = products?.Items;
                ViewBag.TotalProduct = products?.TotalRows;
            }

            if (string.IsNullOrEmpty(keyword) && !string.IsNullOrEmpty(attributeName) &&
                !string.IsNullOrEmpty(attributeValueName))
            {
                attributeName      = attributeName?.Trim()?.StripVietnameseChars().ToUpper();
                attributeValueName = attributeValueName?.Trim()?.StripVietnameseChars().ToUpper();

                var products = await _productService.ProductGetByAttributeValueId(apiService.TenantId, CultureInfo.CurrentCulture.Name,
                                                                                  attributeValueName, attributeName, page, pageSize);

                ViewBag.ListProduct  = products?.Items;
                ViewBag.TotalProduct = products?.TotalRows;
            }

            var productHots = await _productService.ProductSearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, true, null, string.Empty, 1, 5);

            ViewBag.ListProductHot = JsonConvertHelper.GetObjectFromObject <List <ProductSearchViewModel> >(productHots?.Items);

            return(View());
        }
Exemple #14
0
        public async Task <ActionResult> Index()
        {
            var apiService = _configuration.GetApiServiceInfo();

            var listProductCategoryHomePage = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, true, null, 10);

            var listProductCategoryHomePageData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategoryHomePage);

            ViewBag.ListProductCategoryHomePage = listProductCategoryHomePageData;

            //var listProductCategoryHot = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, true, null, null, int.MaxValue);
            //var listProductCategoryHotData = JsonConvertHelper.GetObjectFromObject<List<ProductCategorySearchViewModel>>(listProductCategoryHot);
            //ViewBag.ListProductCategoryHot = listProductCategoryHotData;
            //ViewBag.ProductCategoryId = listProductCategoryHot?.FirstOrDefault()?.Id;

            var products = await _productService.ProductSearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, null, true, null, null, 1, 100);

            ViewBag.ListProduct = products?.Items;

            var listProductCategorySolution = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, null, true, 20);

            var listProductCategorySolutionData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategorySolution);

            ViewBag.ListProductCategorySolution = listProductCategorySolutionData;

            var listVideoHomePage = await _videoService.ListTopVideoAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, 20);

            var listVideoHomePageData = JsonConvertHelper.GetObjectFromObject <List <VideoViewModel> >(listVideoHomePage);

            ViewBag.ListVideoHomePage = listVideoHomePageData;

            var listCategoryWidthNews = await _newsService.GetListCategoryWidthNewsAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, 2, true, 10);

            var listNewsData = JsonConvertHelper.GetObjectFromObject <List <CategoryWidthNewsViewModel> >(listCategoryWidthNews?.Items);

            if (listNewsData != null && listNewsData.Any())
            {
                var newsHostHomePage = listNewsData.FirstOrDefault();
                ViewBag.NewsHostHomePage = newsHostHomePage;
                ViewBag.NewHomePage      = listNewsData.Where(x => x.CategoryId != newsHostHomePage?.CategoryId).FirstOrDefault();
            }

            #region cache home
            if (_cache.TryGetValue($"{CacheParam.MenuMiddle}{CultureInfo.CurrentCulture.Name}", out MenuDetailViewModel CategoryMiddleCache))
            {
                ViewBag.MenuContact = CategoryMiddleCache;
            }
            else
            {
                var menuMiddle = await _menuService.GetAllActivatedMenuByPositionAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, WebsiteClient.Api.Domain.Constants.Position.Middle);

                var menuMiddleData = JsonConvertHelper.GetObjectFromObject <MenuDetailViewModel>(menuMiddle);
                _cache.Set($"{CacheParam.MenuMiddle}{CultureInfo.CurrentCulture.Name}", menuMiddleData, TimeSpan.FromHours(1));
                ViewBag.MenuContact = menuMiddleData;
            }

            //if (_cache.TryGetValue(CacheParam.Banner, out BannerViewModel banners))
            //{
            //    ViewBag.MainBanner = banners;
            //}
            //else
            //{
            var listBannerInHomeData = await _bannerService.GetBannerItemByPositionAsync(apiService.TenantId, (int)Position.Top);

            var listBannerInHome = JsonConvertHelper.GetObjectFromObject <BannerViewModel>(listBannerInHomeData.Data);
            _cache.Set(CacheParam.Banner, listBannerInHome, TimeSpan.FromHours(1));

            ViewBag.MainBanner = listBannerInHome;
            //}
            #endregion
            return(View());
        }
Exemple #15
0
        public async Task <ActionResult> Coordinator(string segment, int page = 1, int pageSize = 12)
        {
            var apiService = _configuration.GetApiServiceInfo();

            ViewBag.Page     = page;
            ViewBag.PageSize = pageSize;
            var menuInfo = await _menuService.GetDetailBySeoLinkAsync(apiService.TenantId, segment, CultureInfo.CurrentCulture.Name);

            if (menuInfo == null)
            {
                string[] segmentArray = segment.Split('.');
                bool     isNews       = segmentArray.Length > 1 && segmentArray[1].ToLower().Equals("html");
                bool     isProduct    = segmentArray.Length > 1 && segmentArray[1].ToLower().Equals("htm");
                if (isNews)
                {
                    var newInfo = await _newsService.GetClientAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, segmentArray[0]);

                    if (newInfo != null)
                    {
                        await _newsService.UpdateViewNewsAsync(apiService.TenantId, newInfo.Id, CultureInfo.CurrentCulture.Name);

                        var newsHost = await _newsService.GetListTopNewsHotAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, 4);

                        ViewBag.NewsHot = JsonConvertHelper.GetObjectFromObject <List <NewsSearchViewModel> >(newsHost);

                        var newData = JsonConvertHelper.GetObjectFromObject <NewsDetailViewModel>(newInfo);

                        //if (_cache.TryGetValue(CacheParam.BannerRight, out BannerViewModel banners))
                        //{
                        //    ViewBag.MainBanner = banners;
                        //}
                        //else
                        //{
                        var listBannerRightData = await _bannerService.GetBannerItemByPositionAsync(apiService.TenantId, GHM.WebsiteClient.Api.Domain.Constants.Position.Right);

                        var listBannerRight = JsonConvertHelper.GetObjectFromObject <BannerViewModel>(listBannerRightData.Data);
                        _cache.Set(CacheParam.BannerRight, listBannerRight, TimeSpan.FromHours(1));

                        ViewBag.BannerRight = listBannerRight;
                        //}
                        return(View("../News/Detail", newData));
                    }
                    else
                    {
                        return(View("../NotFound/Index"));
                    }
                }
                else if (isProduct)
                {
                    var segmentProduct      = segmentArray[0].ToString();
                    var segmentProductArray = segmentProduct.Split('/');

                    if (segmentProductArray.Length <= 1 && segmentProduct.Contains("san-pham"))
                    {
                        return(View("../NotFound/Index"));
                    }

                    var seoLinKProduct = segmentProductArray.Length > 1 ? segmentProductArray[1].ToString() : segmentProduct;
                    var productInfo    = await _productService.ProductGetDetail(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, seoLinKProduct);

                    if (productInfo != null)
                    {
                        ViewBag.ProductInfo = JsonConvertHelper.GetObjectFromObject <ProductSearchViewModel>(productInfo);
                        var productImages = await _productService.ProductImageSearchByProductId(apiService.TenantId, productInfo.Id);

                        ViewBag.ProdutImages = productImages?.Items;

                        var productAttributes = await _productService.ProductAttributeValueGetByProductId(apiService.TenantId, CultureInfo.CurrentCulture.Name, productInfo?.Id);

                        ViewBag.ProudctAttributes = productAttributes?.Items;

                        var productCategories = await _productService.ProductCategoryGetByProductId(apiService.TenantId, CultureInfo.CurrentCulture.Name, productInfo?.Id);

                        ViewBag.ProductCategory = productCategories?.Items;

                        ViewBag.ProductSelectItems = SessionHelper.GetObjectFromJson <List <ProductSelectedItem> >(HttpContext.Session, SessionParam.ShoppingCart);

                        var listProductCategory = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, null, null, int.MaxValue);

                        var listProductCategoryData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategory);
                        ViewBag.ListProductCategory = listProductCategoryData;

                        if (listProductCategoryData != null && listProductCategoryData.Any())
                        {
                            var trees = RenderTree(listProductCategoryData, null);
                            ViewBag.ProductCategroryTree = trees?.Take(5);
                        }

                        var productHots = await _productService.ProductSearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, true, null, string.Empty, 1, 5);

                        ViewBag.ListProductHot = JsonConvertHelper.GetObjectFromObject <List <ProductSearchViewModel> >(productHots?.Items);

                        return(View("../Product/Detail"));
                    }
                    else
                    {
                        var categoryInfo = await _productService.ProductCategoryGetDetail(apiService.TenantId, CultureInfo.CurrentCulture.Name, seoLinKProduct, null);

                        if (categoryInfo != null)
                        {
                            if (!categoryInfo.IsSolution.HasValue || !categoryInfo.IsSolution.Value)
                            {
                                var listProductCategory = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, null, null, int.MaxValue);

                                var listProductCategoryData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategory);
                                ViewBag.ListProductCategory = listProductCategoryData;

                                if (listProductCategoryData != null && listProductCategoryData.Any())
                                {
                                    var trees = RenderTree(listProductCategoryData, null);
                                    ViewBag.ProductCategroryTree = trees?.Take(5);
                                }

                                ViewBag.ProductCategoryInfo = JsonConvertHelper.GetObjectFromObject <ProductCategorySearchViewModel>(categoryInfo);
                                ViewBag.ProductCategoryId   = categoryInfo?.Id;
                                var products = await _productService.ProductSearchByCategory(apiService.TenantId, CultureInfo.CurrentCulture.Name, categoryInfo?.SeoLink, null, null, 1, 6);

                                ViewBag.ListProduct  = products?.Items;
                                ViewBag.TotalProduct = products?.TotalRows;

                                var productHots = await _productService.ProductSearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, true, null, string.Empty, 1, 5);

                                ViewBag.ListProductHot = JsonConvertHelper.GetObjectFromObject <List <ProductSearchViewModel> >(productHots?.Items);

                                return(View("../Product/Category"));
                            }
                            else
                            {
                                var model    = JsonConvertHelper.GetObjectFromObject <ProductCategorySearchViewModel>(categoryInfo);
                                var products = await _productService.ProductSearchByParentCategory(apiService.TenantId,
                                                                                                   CultureInfo.CurrentCulture.Name, null, null, categoryInfo?.Id ?? 0);

                                ViewBag.ListProduct = JsonConvertHelper.GetObjectFromObject <List <ProductWidthCategoryViewModel> >(products?.Items);

                                return(View("../Product/Solution", model));
                            }
                        }
                        else
                        {
                            return(View("../NotFound/Index"));
                        }
                    }
                }
                else
                {
                    return(View("../NotFound/Index"));
                }
            }
            else
            {
                if (menuInfo.SubjectType == (GHM.WebsiteClient.Api.Domain.Constants.SubjectType)SubjectType.NewsCategory)
                {
                    var categoryWithNews = await _newsService.GetNewsByCategoryIdAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, int.Parse(menuInfo.SubjectId), page, pageSize);

                    var categoryWithNewsData = JsonConvertHelper.GetObjectFromObject <CategoryWidthNewsViewModel>(categoryWithNews.Data);

                    ViewBag.CategoryId = categoryWithNews.Data.CategoryId;
                    if (categoryWithNewsData != null)
                    {
                        return(View("../News/CategoryNews", categoryWithNewsData));
                    }
                    else
                    {
                        return(View("../NotFound/Index"));
                    }
                }
                else if (menuInfo.SubjectType == (GHM.WebsiteClient.Api.Domain.Constants.SubjectType)SubjectType.News)
                {
                    var newsDetail = await _newsService.GetDetailForClientAsync(apiService.TenantId, menuInfo.SubjectId, CultureInfo.CurrentCulture.Name);

                    if (newsDetail == null)
                    {
                        return(View("../NotFound/Index"));
                    }
                    await _newsService.UpdateViewNewsAsync(apiService.TenantId, newsDetail.Id, CultureInfo.CurrentCulture.Name);

                    var newsHost = await _newsService.GetListTopNewsHotAsync(apiService.TenantId, CultureInfo.CurrentCulture.Name, 4);

                    var newData = JsonConvertHelper.GetObjectFromObject <NewsDetailViewModel>(newsDetail);

                    ViewBag.NewsHot    = JsonConvertHelper.GetObjectFromObject <List <NewsSearchViewModel> >(newsHost);
                    ViewBag.NewsDetail = newData;

                    //if (_cache.TryGetValue(CacheParam.BannerRight, out BannerViewModel banners))
                    //{
                    //    ViewBag.MainBanner = banners;
                    //}
                    //else
                    //{
                    var listBannerRightData = await _bannerService.GetBannerItemByPositionAsync(apiService.TenantId, GHM.WebsiteClient.Api.Domain.Constants.Position.Right);

                    var listBannerRight = JsonConvertHelper.GetObjectFromObject <BannerViewModel>(listBannerRightData.Data);
                    _cache.Set(CacheParam.BannerRight, listBannerRight, TimeSpan.FromHours(1));

                    ViewBag.BannerRight = listBannerRight;
                    //}

                    return(View("../News/Detail", newData));
                }
                else if (menuInfo.SubjectType == (GHM.WebsiteClient.Api.Domain.Constants.SubjectType)SubjectType.Product)
                {
                    var productInfo = await _productService.ProductGetDetail(apiService.TenantId, CultureInfo.CurrentCulture.Name, menuInfo.SubjectId, string.Empty);

                    if (productInfo != null)
                    {
                        ViewBag.ProductInfo = JsonConvertHelper.GetObjectFromObject <ProductSearchViewModel>(productInfo);
                        var productImages = await _productService.ProductImageSearchByProductId(apiService.TenantId, productInfo.Id);

                        ViewBag.ProdutImages = productImages?.Items;

                        var productAttributes = await _productService.ProductAttributeValueGetByProductId(apiService.TenantId, CultureInfo.CurrentCulture.Name, productInfo?.Id);

                        ViewBag.ProudctAttributes = productAttributes?.Items;

                        var productCategories = await _productService.ProductCategoryGetByProductId(apiService.TenantId, CultureInfo.CurrentCulture.Name, productInfo?.Id);

                        ViewBag.ProductCategory = productCategories?.Items;

                        ViewBag.ProductSelectItems = SessionHelper.GetObjectFromJson <List <ProductSelectedItem> >(HttpContext.Session, SessionParam.ShoppingCart);

                        var listProductCategory = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, null, null, int.MaxValue);

                        var listProductCategoryData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategory);
                        ViewBag.ListProductCategory = listProductCategoryData;

                        if (listProductCategoryData != null && listProductCategoryData.Any())
                        {
                            var trees = RenderTree(listProductCategoryData, null);
                            ViewBag.ProductCategroryTree = trees?.Take(5);
                        }

                        var productHots = await _productService.ProductSearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, true, null, string.Empty, 1, 5);

                        ViewBag.ListProductHot = JsonConvertHelper.GetObjectFromObject <List <ProductSearchViewModel> >(productHots?.Items);

                        return(View("../Product/Detail"));
                    }
                }
                else if (menuInfo.SubjectType == (GHM.WebsiteClient.Api.Domain.Constants.SubjectType)SubjectType.ProductCategory)
                {
                    var categoryInfo = await _productService.ProductCategoryGetDetail(apiService.TenantId, CultureInfo.CurrentCulture.Name, null, int.Parse(menuInfo.SubjectId));

                    if (categoryInfo != null)
                    {
                        if (!categoryInfo.IsSolution.HasValue || !categoryInfo.IsSolution.Value)
                        {
                            var listProductCategory = await _productService.ProductCategorySearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, null, null, null, int.MaxValue);

                            var listProductCategoryData = JsonConvertHelper.GetObjectFromObject <List <ProductCategorySearchViewModel> >(listProductCategory);
                            ViewBag.ListProductCategory = listProductCategoryData;

                            if (listProductCategoryData != null && listProductCategoryData.Any())
                            {
                                var trees = RenderTree(listProductCategoryData, null);
                                ViewBag.ProductCategroryTree = trees?.Take(5);
                            }

                            ViewBag.ProductCategoryInfo = JsonConvertHelper.GetObjectFromObject <ProductCategorySearchViewModel>(categoryInfo);
                            ViewBag.ProductCategoryId   = categoryInfo?.Id;
                            var products = await _productService.ProductSearchByCategory(apiService.TenantId, CultureInfo.CurrentCulture.Name, categoryInfo?.SeoLink, null, null, 1, 6);

                            ViewBag.ListProduct  = products?.Items;
                            ViewBag.TotalProduct = products?.TotalRows;

                            var productHots = await _productService.ProductSearch(apiService.TenantId, CultureInfo.CurrentCulture.Name, string.Empty, true, null, string.Empty, 1, 5);

                            ViewBag.ListProductHot = JsonConvertHelper.GetObjectFromObject <List <ProductSearchViewModel> >(productHots?.Items);

                            return(View("../Product/Category"));
                        }
                        else
                        {
                            var model    = JsonConvertHelper.GetObjectFromObject <ProductCategorySearchViewModel>(categoryInfo);
                            var products = await _productService.ProductSearchByParentCategory(apiService.TenantId,
                                                                                               CultureInfo.CurrentCulture.Name, null, null, categoryInfo?.Id ?? 0);

                            ViewBag.ListProduct = JsonConvertHelper.GetObjectFromObject <List <ProductWidthCategoryViewModel> >(products?.Items);

                            return(View("../Product/Solution", model));
                        }
                    }
                    else
                    {
                        return(View("../NotFound/Index"));
                    }
                }
                else
                {
                    return(View("../NotFound/Index"));
                }
            }

            return(View("../NotFound/Index"));
        }