/// <summary> /// Prepare paged specification attribute group list model /// </summary> /// <param name="searchModel">Specification attribute group search model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the specification attribute group list model /// </returns> public virtual async Task <SpecificationAttributeGroupListModel> PrepareSpecificationAttributeGroupListModelAsync(SpecificationAttributeGroupSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //get specification attribute groups var specificationAttributeGroups = await _specificationAttributeService .GetSpecificationAttributeGroupsAsync(searchModel.Page - 1, searchModel.PageSize); if (searchModel.Page == 1) { //dislpay default group with non-grouped specification attributes on first page specificationAttributeGroups.Insert(0, new SpecificationAttributeGroup { Name = await _localizationService.GetResourceAsync("Admin.Catalog.Attributes.SpecificationAttributes.SpecificationAttributeGroup.DefaultGroupName") }); } //prepare list model var model = new SpecificationAttributeGroupListModel().PrepareToGrid(searchModel, specificationAttributeGroups, () => { //fill in model values from the entity return(specificationAttributeGroups.Select(attribute => attribute.ToModel <SpecificationAttributeGroupModel>())); }); return(model); }