public ActionResult GroupDealList(DataSourceRequest command, GroupDealListModel model) { //if (!_permissionService.Authorize(StandardPermissionProvider.ManageProducts)) // return AccessDeniedView(); //a vendor should have access only to his products if (_workContext.CurrentVendor != null) { //model.SearchVendorId = _workContext.CurrentVendor.Id; } var categoryIds = new List<int> { model.SearchCategoryId }; //include subcategories if (model.SearchIncludeSubCategories && model.SearchCategoryId > 0) categoryIds.AddRange(GetChildCategoryIds(model.SearchCategoryId)); //0 - all (according to "ShowHidden" parameter) //1 - published only //2 - unpublished only bool? overridePublished = null; if (model.SearchPublishedId == 1) overridePublished = true; else if (model.SearchPublishedId == 2) overridePublished = false; var groupDeals = _groupdealService.SearchGroupDeals( categoryIds: categoryIds, manufacturerId: model.SearchManufacturerId, storeId: model.SearchStoreId, vendorId: model.SearchVendorId, warehouseId: model.SearchWarehouseId, productType: model.SearchProductTypeId > 0 ? (ProductType?)model.SearchProductTypeId : null, keywords: model.SearchProductName, pageIndex: command.Page - 1, pageSize: command.PageSize, showHidden: true, overridePublished: overridePublished ); var gridModel = new DataSourceResult(); gridModel.Data = groupDeals.Select(x => { //var productModel = x.ToModel(); var groupDealModel = new ModelsMapper().CreateMap<Product, GroupDealViewModel>(x); //little hack here: //ensure that product full descriptions are not returned //otherwise, we can get the following error if products have too long descriptions: //"Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property. " //also it improves performance groupDealModel.FullDescription = ""; //picture var defaultProductPicture = _pictureService.GetPicturesByProductId(x.Id, 1).FirstOrDefault(); groupDealModel.PictureThumbnailUrl = _pictureService.GetPictureUrl(defaultProductPicture, 75, true); //product type groupDealModel.ProductTypeName = x.ProductType.GetLocalizedEnum(_localizationService, _workContext); //friendly stock qantity //if a simple product AND "manage inventory" is "Track inventory", then display if (x.ProductType == ProductType.SimpleProduct && x.ManageInventoryMethod == ManageInventoryMethod.ManageStock) groupDealModel.StockQuantityStr = x.GetTotalStockQuantity().ToString(); if (x.AvailableStartDateTimeUtc < x.AvailableEndDateTimeUtc) { groupDealModel.GroupdealStatusName = PluginHelper.GetAttribute<DisplayAttribute>(GroupdealStatus.Running).Name; } else { groupDealModel.GroupdealStatusName = PluginHelper.GetAttribute<DisplayAttribute>(GroupdealStatus.Ended).Name; } return groupDealModel; }); gridModel.Total = groupDeals.TotalCount; return Json(gridModel); /////////////////////////////////////////////////////////////////////////////////////////////////////////// //var groupDeals = _groupdealService.GetAllGroupdeals().ToList(); //var groupDeals = _groupdealService.GetAllGroupDealProducts().ToList(); //var groupDealViewModels = new List<GroupDealViewModel>(); //foreach (var gd in groupDeals) //{ // //var gdvm = new ModelsMapper().CreateMap<GroupDeal, GroupDealViewModel>(gd); // var gdvm = new ModelsMapper().CreateMap<Product, GroupDealViewModel>(gd); // if (gd.AvailableStartDateTimeUtc < gd.AvailableEndDateTimeUtc) // { // gdvm.GroupdealStatusName = PluginHelper.GetAttribute<DisplayAttribute>(GroupdealStatus.Running).Name; // } // else // { // gdvm.GroupdealStatusName = PluginHelper.GetAttribute<DisplayAttribute>(GroupdealStatus.Ended).Name; // } // groupDealViewModels.Add(gdvm); //} //var gridModel = new DataSourceResult //{ // Data = groupDealViewModels, // Total = groupDealViewModels.Count //}; //return Json(gridModel); }
public ActionResult List() { //if (!_permissionService.Authorize(StandardPermissionProvider.ManageProducts)) // return AccessDeniedView(); var model = new GroupDealListModel(); //a vendor should have access only to his products model.IsLoggedInAsVendor = _workContext.CurrentVendor != null; //categories model.AvailableCategories.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); var categories = _categoryService.GetAllCategories(showHidden: true); foreach (var c in categories) model.AvailableCategories.Add(new SelectListItem { Text = c.GetFormattedBreadCrumb(categories), Value = c.Id.ToString() }); //manufacturers model.AvailableManufacturers.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var m in _manufacturerService.GetAllManufacturers(showHidden: true)) model.AvailableManufacturers.Add(new SelectListItem { Text = m.Name, Value = m.Id.ToString() }); //stores model.AvailableStores.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var s in _storeService.GetAllStores()) model.AvailableStores.Add(new SelectListItem { Text = s.Name, Value = s.Id.ToString() }); //warehouses model.AvailableWarehouses.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var wh in _shippingService.GetAllWarehouses()) model.AvailableWarehouses.Add(new SelectListItem { Text = wh.Name, Value = wh.Id.ToString() }); //vendors model.AvailableVendors.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var v in _vendorService.GetAllVendors(showHidden: true)) model.AvailableVendors.Add(new SelectListItem { Text = v.Name, Value = v.Id.ToString() }); //product types model.AvailableProductTypes = ProductType.SimpleProduct.ToSelectList(false).ToList(); model.AvailableProductTypes.Insert(0, new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); //"published" property //0 - all (according to "ShowHidden" parameter) //1 - published only //2 - unpublished only model.AvailablePublishedOptions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Catalog.Products.List.SearchPublished.All"), Value = "0" }); model.AvailablePublishedOptions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Catalog.Products.List.SearchPublished.PublishedOnly"), Value = "1" }); model.AvailablePublishedOptions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Catalog.Products.List.SearchPublished.UnpublishedOnly"), Value = "2" }); return View(model); }