/// <summary>
        /// Prepare paged specification attribute option list model
        /// </summary>
        /// <param name="searchModel">Specification attribute option search model</param>
        /// <param name="specificationAttribute">Specification attribute</param>
        /// <returns>Specification attribute option list model</returns>
        public virtual SpecificationAttributeOptionListModel PrepareSpecificationAttributeOptionListModel(
            SpecificationAttributeOptionSearchModel searchModel, SpecificationAttribute specificationAttribute)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            if (specificationAttribute == null)
            {
                throw new ArgumentNullException(nameof(specificationAttribute));
            }

            //get specification attribute options
            var options = _specificationAttributeService
                          .GetSpecificationAttributeOptionsBySpecificationAttribute(specificationAttribute.Id).ToPagedList(searchModel);

            //prepare list model
            var model = new SpecificationAttributeOptionListModel().PrepareToGrid(searchModel, options, () =>
            {
                return(options.Select(option =>
                {
                    //fill in model values from the entity
                    var optionModel = option.ToModel <SpecificationAttributeOptionModel>();

                    //in order to save performance to do not check whether a product is deleted, etc
                    optionModel.NumberOfAssociatedProducts = _specificationAttributeService
                                                             .GetProductSpecificationAttributeCount(specificationAttributeOptionId: option.Id);

                    return optionModel;
                }));
            });

            return(model);
        }
        /// <summary>
        /// Prepare paged specification attribute option list model
        /// </summary>
        /// <param name="searchModel">Specification attribute option search model</param>
        /// <param name="specificationAttribute">Specification attribute</param>
        /// <returns>Specification attribute option list model</returns>
        public virtual SpecificationAttributeOptionListModel PrepareSpecificationAttributeOptionListModel(
            SpecificationAttributeOptionSearchModel searchModel, SpecificationAttribute specificationAttribute)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            if (specificationAttribute == null)
            {
                throw new ArgumentNullException(nameof(specificationAttribute));
            }

            //get specification attribute options
            var options = _specificationAttributeService.GetSpecificationAttributeOptionsBySpecificationAttribute(specificationAttribute.Id);

            //prepare list model
            var model = new SpecificationAttributeOptionListModel
            {
                Data = options.PaginationByRequestModel(searchModel).Select(option =>
                {
                    //fill in model values from the entity
                    var optionModel = option.ToModel <SpecificationAttributeOptionModel>();


                    return(optionModel);
                }),
                Total = options.Count
            };

            return(model);
        }
Esempio n. 3
0
        public virtual IActionResult OptionList(SpecificationAttributeOptionSearchModel searchModel)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageAttributes))
            {
                return(AccessDeniedKendoGridJson());
            }

            //try to get a specification attribute with the specified id
            var specificationAttribute = _specificationAttributeService.GetSpecificationAttributeById(searchModel.SpecificationAttributeId)
                                         ?? throw new ArgumentException("No specification attribute found with the specified id");

            //prepare model
            var model = _specificationAttributeModelFactory.PrepareSpecificationAttributeOptionListModel(searchModel, specificationAttribute);

            return(Json(model));
        }
Esempio n. 4
0
        public virtual async Task <IActionResult> OptionList(SpecificationAttributeOptionSearchModel searchModel)
        {
            if (!await _permissionService.AuthorizeAsync(StandardPermissionProvider.ManageAttributes))
            {
                return(await AccessDeniedDataTablesJson());
            }

            //try to get a specification attribute with the specified id
            var specificationAttribute = await _specificationAttributeService.GetSpecificationAttributeByIdAsync(searchModel.SpecificationAttributeId)
                                         ?? throw new ArgumentException("No specification attribute found with the specified id");

            //prepare model
            var model = await _specificationAttributeModelFactory.PrepareSpecificationAttributeOptionListModelAsync(searchModel, specificationAttribute);

            return(Json(model));
        }
        /// <summary>
        /// Prepare specification attribute option search model
        /// </summary>
        /// <param name="searchModel">Specification attribute option search model</param>
        /// <param name="specificationAttribute">Specification attribute</param>
        /// <returns>Specification attribute option search model</returns>
        protected virtual SpecificationAttributeOptionSearchModel PrepareSpecificationAttributeOptionSearchModel(
            SpecificationAttributeOptionSearchModel searchModel, SpecificationAttribute specificationAttribute)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

            if (specificationAttribute == null)
            {
                throw new ArgumentNullException(nameof(specificationAttribute));
            }

            searchModel.SpecificationAttributeId = specificationAttribute.Id;

            //prepare page parameters
            searchModel.SetGridPageSize();

            return(searchModel);
        }