public ActionResult getTopCategories() { List <TopCategory> topCategories = new List <TopCategory>(); var catlist = db.catagories.ToList(); foreach (var i in db.booking.GroupBy(e => e.CategoryId).Select(group => new { count = group.Count(), id = group.Key }).OrderByDescending(a => a.count)) { TopCategory tcat = new TopCategory { count = i.count, id = i.id }; catagory cat = catlist.FirstOrDefault(e => e.cat_Id == tcat.id); tcat.catname = cat.cat_Name; topCategories.Add(tcat); } return(Ok(topCategories)); }
public IActionResult ProductsBySubCategory(string topCategoryNameUrl, string middleCategoryNameUrl, string subCategoryNameUrl, int?page) { var locale = Request.HttpContext.Features.Get <IRequestCultureFeature>(); string culture = locale.RequestCulture.UICulture.ToString(); try { int currentPage = page ?? 1; TopCategory topCate = _topRepo.GetTopCateByUrlTR(topCategoryNameUrl) ?? _topRepo.GetTopCateByUrlEN(topCategoryNameUrl); MiddleCategory midCate = _midRepo.GetMidCateByUrlTR(middleCategoryNameUrl, topCate.Id) ?? _midRepo.GetMidCateByUrlEN(middleCategoryNameUrl, topCate.Id); SubCategory subCate = _subRepo.GetSubCateByUrlTR(subCategoryNameUrl, midCate.Id, topCate.Id) ?? _subRepo.GetSubCateByUrlEN(subCategoryNameUrl, midCate.Id, topCate.Id); ViewBag.metaTitle = culture.Equals("tr") ? subCate.HeadTitleTR : culture.Equals("ru") ? subCate.HeadTitleRU : subCate.HeadTitleEN; ViewBag.metaDesc = culture.Equals("tr") ? subCate.HeadDescriptionTR : culture.Equals("ru") ? subCate.HeadDescriptionRU : subCate.HeadDescriptionEN; int productCount = _productRepo.CountEntity(x => x.TopCategoryId == topCate.Id && x.MiddleCategoryId == midCate.Id && x.SubCategoryId == subCate.Id); if (productCount == 0) { HttpContext.Session.SetString("alert", _localizer["Bu kategoride ürün bulunmamaktadır."]); return(LocalRedirect("/")); } double division = Convert.ToDouble(productCount) / Convert.ToDouble(30); int lastPage = Convert.ToInt32(Math.Ceiling(division)); if (currentPage > lastPage || currentPage < 0) { _errorRepo.CreateEntity(new ErrorLog { ErrorLocation = "ProductsBySubCategory", Culture = culture, ErrorDetail = $"Gitmek istenilen sayfa numarası hatalı. Hatalı sayfa numarası: {currentPage}", ErrorUrl = HttpContext.Request.Path }); return(LocalRedirect("/Error/500")); } var products = _productRepo.GetProductsWithSubcateId(subCate.Id).AsQueryable(); var sortVal = HttpContext.Session.GetString("categorySort"); if (sortVal != null) { if (sortVal.Equals("0")) { ViewBag.selectedDefault = "selected"; } else if (sortVal.Equals("1")) { products = culture.Equals("tr") ? products.OrderBy(x => x.NameTR) : culture.Equals("ru") ? products.OrderBy(x => x.NameRU) : products.OrderBy(x => x.NameEN); ViewBag.selectedByProductName = "selected"; } else if (sortVal.Equals("2")) { products = products.OrderBy(x => x.Brand.BrandName); ViewBag.selectedByBrandName = "selected"; } else if (sortVal.Equals("3")) { products = products.OrderByDescending(x => x.CreatedDate); ViewBag.selectedByNew = "selected"; } else if (sortVal.Equals("4")) { products = products.OrderByDescending(x => x.DiscountRate); ViewBag.selectedBySale = "selected"; } } var targetProducts = page == 1 ? products.Take(30) : (page > 1 && page < lastPage) ? products.Skip((currentPage - 1) * 30).Take(30) : page == lastPage?products.Skip((currentPage - 1) * 30).Take(productCount - ((currentPage - 1) * 30)) : null; if (targetProducts == null) { _errorRepo.CreateEntity(new ErrorLog { ErrorLocation = "ProductsBySubCategory", Culture = culture, ErrorDetail = "targetProducts null döndü", ErrorUrl = HttpContext.Request.Path }); return(LocalRedirect("/Error/500")); } ViewBag.topcategoryName = culture.Equals("tr") ? midCate.TopCategory.NameTR : culture.Equals("ru") ? midCate.TopCategory.NameRU : midCate.TopCategory.NameEN; ViewBag.topcategoryNameUrl = culture.Equals("tr") ? midCate.TopCategory.TopCategoryNameUrlTR : midCate.TopCategory.TopCategoryNameUrlEN; ViewBag.midcategoryName = culture.Equals("tr") ? midCate.NameTR : culture.Equals("ru") ? midCate.NameRU : midCate.NameEN; ViewBag.midcategoryNameUrl = culture.Equals("tr") ? midCate.MiddleCategoryNameUrlTR : midCate.MiddleCategoryNameUrlEN; //category sidebar componenti ViewBag.cateId = subCate.Id; ViewBag.subcategoryName = culture.Equals("tr") ? subCate.NameTR : culture.Equals("ru") ? subCate.NameRU : subCate.NameEN; ViewBag.subcategoryNameUrl = subCate.SubCategoryNameUrlTR; ViewBag.currentPage = currentPage; ViewBag.paginationCount = lastPage; List <ProductDto> proDtos = new List <ProductDto>(); foreach (var item in products) { ProductDto dto = new ProductDto(); dto.MainPhotoFileName = item.MainPhotoFileName; dto.PhotoAltTag = culture.Equals("tr") ? item.PhotoAltTagTR : culture.Equals("ru") ? item.PhotoAltTagRU : item.PhotoAltTagEN; dto.HasNewBadge = item.HasNewBadge; dto.IsFreeShipping = item.IsFreeShipping; dto.Name = culture.Equals("tr") ? item.NameTR : culture.Equals("ru") ? item.NameRU : item.NameEN; dto.Id = item.Id; dto.ProductNameUrl = culture.Equals("tr") ? item.ProductNameUrlTR : culture.Equals("ru") ? item.ProductNameUrlRU : item.ProductNameUrlEN; dto.BrandName = item.Brand.BrandName; dto.BrandNameUrl = item.Brand.BandNameUrl; dto.ProductHref = culture.Equals("tr") ? $"/tr/urun-detay/{item.Brand.BandNameUrl}/{item.TopCategory.TopCategoryNameUrlTR}/{item.MiddleCategory.MiddleCategoryNameUrlTR}/{item.SubCategory.SubCategoryNameUrlTR}/{item.NameTR.ConvertToFriendlyUrl()}" : culture.Equals("ru") ? $"/ru/product-detail/{item.Brand.BandNameUrl}/{item.TopCategory.TopCategoryNameUrlRU}/{item.MiddleCategory.MiddleCategoryNameUrlRU}/{item.SubCategory.SubCategoryNameUrlRU}/{item.NameEN.ConvertToFriendlyUrl()}" : $"/en/product-detail/{item.Brand.BandNameUrl}/{item.TopCategory.TopCategoryNameUrlEN}/{item.MiddleCategory.MiddleCategoryNameUrlEN}/{item.SubCategory.SubCategoryNameUrlEN}/{item.NameEN.ConvertToFriendlyUrl()}"; proDtos.Add(dto); } //pagination numaralandırması List <int> pageNumbers1 = new List <int>(); for (int i = 1; i <= 5; i++) { if (currentPage - i > 0) { pageNumbers1.Add(currentPage - i); } } int listCount = pageNumbers1.Count; for (int i = 0, j = 1; i < 10 - listCount; i++) { if (currentPage + i <= lastPage) { pageNumbers1.Add(currentPage + i); } } pageNumbers1.Sort(); ViewBag.numbers = pageNumbers1; return(View(proDtos)); } catch (Exception e) { _errorRepo.CreateEntity(new ErrorLog { ErrorLocation = "ProductsBySubCategory", Culture = culture, ErrorDetail = e.Message + " , " + e.InnerException, ErrorUrl = HttpContext.Request.Path }); HttpContext.Session.SetString("alert", _localizer["Hata oluştu ve kayıt altına alındı."]); return(LocalRedirect("/")); } }