public virtual IActionResult AssociatedProductAddPopupList(AddAssociatedProductSearchModel searchModel) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageProducts)) { return(AccessDeniedKendoGridJson()); } //prepare model var model = _productModelFactory.PrepareAddAssociatedProductListModel(searchModel); return(Json(model)); }
/// <summary> /// Prepare paged associated product list model to add to the product /// </summary> /// <param name="searchModel">Associated product search model to add to the product</param> /// <returns>Associated product list model to add to the product</returns> public virtual AddAssociatedProductListModel PrepareAddAssociatedProductListModel(AddAssociatedProductSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //a vendor should have access only to his products if (_workContext.CurrentVendor != null) { searchModel.SearchVendorId = _workContext.CurrentVendor.Id; } //get products var products = _productService.SearchProducts(showHidden: true, categoryIds: new List <int> { searchModel.SearchCategoryId }, storeId: searchModel.SearchStoreId, vendorId: searchModel.SearchVendorId, productType: searchModel.SearchProductTypeId > 0 ? (ProductType?)searchModel.SearchProductTypeId : null, keywords: searchModel.SearchProductName, pageIndex: searchModel.Page - 1, pageSize: searchModel.PageSize); //prepare grid model var model = new AddAssociatedProductListModel { Data = products.Select(product => { //fill in model values from the entity var productModel = product.ToModel <ProductModel>(); //fill in additional values (not existing in the entity) var parentGroupedProduct = _productService.GetProductById(product.ParentGroupedProductId); if (parentGroupedProduct == null) { return(productModel); } productModel.AssociatedToProductId = product.ParentGroupedProductId; productModel.AssociatedToProductName = parentGroupedProduct.Name; return(productModel); }), Total = products.TotalCount }; return(model); }
/// <summary> /// Prepare associated product search model to add to the product /// </summary> /// <param name="searchModel">Associated product search model to add to the product</param> /// <returns>Associated product search model to add to the product</returns> public virtual AddAssociatedProductSearchModel PrepareAddAssociatedProductSearchModel(AddAssociatedProductSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } searchModel.IsLoggedInAsVendor = _workContext.CurrentVendor != null; //prepare available categories _baseAdminModelFactory.PrepareCategories(searchModel.AvailableCategories); //prepare available stores _baseAdminModelFactory.PrepareStores(searchModel.AvailableStores); //prepare available vendors _baseAdminModelFactory.PrepareVendors(searchModel.AvailableVendors); //prepare available product types _baseAdminModelFactory.PrepareProductTypes(searchModel.AvailableProductTypes); //prepare page parameters searchModel.SetPopupGridPageSize(); return(searchModel); }