/// <summary>
        /// Prepare paged vendor attribute value list model
        /// </summary>
        /// <param name="searchModel">Vendor attribute value search model</param>
        /// <param name="vendorAttribute">Vendor attribute</param>
        /// <returns>
        /// A task that represents the asynchronous operation
        /// The task result contains the vendor attribute value list model
        /// </returns>
        public virtual async Task <VendorAttributeValueListModel> PrepareVendorAttributeValueListModelAsync(VendorAttributeValueSearchModel searchModel,
                                                                                                            VendorAttribute vendorAttribute)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

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

            //get vendor attribute values
            var vendorAttributeValues = (await _vendorAttributeService.GetVendorAttributeValuesAsync(vendorAttribute.Id)).ToPagedList(searchModel);

            //prepare list model
            var model = new VendorAttributeValueListModel().PrepareToGrid(searchModel, vendorAttributeValues, () =>
            {
                //fill in model values from the entity
                return(vendorAttributeValues.Select(value => value.ToModel <VendorAttributeValueModel>()));
            });

            return(model);
        }
        /// <summary>
        /// Prepare paged vendor attribute value list model
        /// </summary>
        /// <param name="searchModel">Vendor attribute value search model</param>
        /// <param name="vendorAttribute">Vendor attribute</param>
        /// <returns>Vendor attribute value list model</returns>
        public virtual VendorAttributeValueListModel PrepareVendorAttributeValueListModel(VendorAttributeValueSearchModel searchModel,
                                                                                          VendorAttribute vendorAttribute)
        {
            if (searchModel == null)
            {
                throw new ArgumentNullException(nameof(searchModel));
            }

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

            //get vendor attribute values
            var vendorAttributeValues = _vendorAttributeService.GetVendorAttributeValues(vendorAttribute.Id);

            //prepare list model
            var model = new VendorAttributeValueListModel
            {
                //fill in model values from the entity
                Data  = vendorAttributeValues.PaginationByRequestModel(searchModel).Select(value => value.ToModel <VendorAttributeValueModel>()),
                Total = vendorAttributeValues.Count
            };

            return(model);
        }