public CategoriModel PrepareCategoryModel(CategoriModel model, List <Category> categorys)
        {
            if (categorys == null)
            {
                throw new ArgumentNullException(nameof(categorys));
            }

            model.SubCategories = categorys.Select(x => new CategoriModel.SubCategoryModel
            {
                Name              = x.Name,
                Id                = x.Id,
                SeName            = _urlRecordService.GetSeName(x),
                Description       = x.Description,
                VideoGalleryModel = _videoFactory.PrepareVideoGalleryModel(x.VideoGalleryId),
                GalleryModel      = _galleryFactory.PrePareGalleryModel(x.PhotoGalleryId),
                SliderModel       = _sliderFactory.PrePareSliderModel(x.SliderId)
            }).ToList();
            var categoryIds = new List <int>();

            foreach (var category in categorys)
            {
                categoryIds.Add(category.Id);
                if (_catalogSettings.ShowProductsFromSubcategories)
                {
                    //include subcategories
                    categoryIds.AddRange(_categoryService.GetChildCategoryIds(category.Id, _storeContext.CurrentStore.Id));
                }

                var newses = _newsService.GetAllNews(categoryId: category.Id, showHidden: true, approved: true);

                foreach (var newsItem in newses)
                {
                    model.NewsModels.Add(_newsModelFactory.PrepareNewsItemModel(new NewsItemModel(), newsItem, false));
                }
                var newsBig = newses.Where(x => x.BigNews);
                foreach (var newsItem in newsBig)
                {
                    model.LargeNewsModels.Add(_newsModelFactory.PrepareNewsItemModel(new NewsItemModel(), newsItem, false));
                }
            }

            return(model);
        }
        public CategoriModel PrepareCategoryModel(CategoriModel model, Category category)
        {
            if (category == null)
            {
                throw new ArgumentNullException(nameof(category));
            }

            model.Id                   = category.Id;
            model.Name                 = category.Name;
            model.Description          = category.Description;
            model.MetaKeywords         = category.MetaKeywords;
            model.MetaDescription      = category.MetaDescription;
            model.MetaTitle            = category.MetaTitle;
            model.SeName               = _urlRecordService.GetSeName(category);
            model.VideoId              = category.VideoGalleryId;
            model.SliderId             = category.SliderId;
            model.PhotoId              = category.PhotoGalleryId;
            model.BannerLitlePictureId = category.BannerLitlePictureId;
            model.BannerPictureId      = category.BannerPictureId;

            //subcategories
            model.SubCategories = _categoryService.GetAllCategoriesByParentCategoryId(category.Id)
                                  .Select(x =>
            {
                var subCatModel = new CategoriModel.SubCategoryModel
                {
                    Id          = x.Id,
                    Name        = x.Name,
                    SeName      = _urlRecordService.GetSeName(x),
                    Description = x.Description
                };
                return(subCatModel);
            }).ToList();
            var categoryIds = new List <int>();

            categoryIds.Add(category.Id);
            if (_catalogSettings.ShowProductsFromSubcategories)
            {
                //include subcategories
                categoryIds.AddRange(_categoryService.GetChildCategoryIds(category.Id, _storeContext.CurrentStore.Id));
            }

            var newses  = _newsService.GetAllNews(categoryId: category.Id, showHidden: true, approved: true);
            var newsBig = newses.Where(x => x.BigNews);

            model.LargeNewsModels   = _newsModelFactory.PrepareNewsOverviewModel(newsBig).ToList();
            model.VideoGalleryModel = _videoFactory.PrepareVideoGalleryModel(model.VideoId);
            model.GalleryModel      = _galleryFactory.PrePareGalleryModel(model.PhotoId);
            model.SliderModel       = _sliderFactory.PrePareSliderModel(model.SliderId);
            model.NewsModels        = _newsModelFactory.PrepareNewsOverviewModel(newses).ToList();
            if (category.BannerPictureId > 0)
            {
                model.BannerPictureUrl = _pictureService.GetPictureUrl(category.BannerPictureId);
            }

            if (category.BannerLitlePictureId > 0)
            {
                model.BannerLittlePicturUrl = _pictureService.GetPictureUrl(category.BannerLitlePictureId);
            }
            return(model);
        }
        /// <summary>
        /// Prepare category model
        /// </summary>
        /// <param name="category">Category</param>
        /// <param name="command">Catalog paging filtering command</param>
        /// <returns>Category model</returns>
        public virtual CategoriModel PrepareCategoryModel(Category category, CatalogPagingFilteringModel command)
        {
            if (category == null)
            {
                throw new ArgumentNullException(nameof(category));
            }

            var model = new CategoriModel
            {
                Id                   = category.Id,
                Name                 = category.Name,
                Description          = category.Description,
                MetaKeywords         = category.MetaKeywords,
                MetaDescription      = category.MetaDescription,
                MetaTitle            = category.MetaTitle,
                SeName               = _urlRecordService.GetSeName(category),
                VideoId              = category.VideoGalleryId,
                SliderId             = category.SliderId,
                PhotoId              = category.PhotoGalleryId,
                BannerLitlePictureId = category.BannerLitlePictureId,
                BannerPictureId      = category.BannerPictureId
            };

            //page size
            PreparePageSizeOptions(model.PagingFilteringContext, command, category.PageSizeOptions, category.PageSize);

            //subcategories
            model.SubCategories = _categoryService.GetAllCategoriesByParentCategoryId(category.Id)
                                  .Select(x =>
            {
                var subCatModel = new CategoriModel.SubCategoryModel
                {
                    Id          = x.Id,
                    Name        = x.Name,
                    SeName      = _urlRecordService.GetSeName(x),
                    Description = x.Description
                };
                return(subCatModel);
            }).ToList();
            var categoryIds = new List <int>();

            categoryIds.Add(category.Id);
            if (_catalogSettings.ShowProductsFromSubcategories)
            {
                //include subcategories
                categoryIds.AddRange(_categoryService.GetChildCategoryIds(category.Id, _storeContext.CurrentStore.Id));
            }

            var newses = _newsService.GetAllNews(categoryId: category.Id, showHidden: true, approved: true);

            model.LargeNewsModels = _newsModelFactory.PrepareNewsOverviewModel(newses).ToList();
            model.PagingFilteringContext.LoadPagedList(newses);
            model.VideoGalleryModel = _videoFactory.PrepareVideoGalleryModel(model.VideoId);
            model.GalleryModel      = _galleryFactory.PrePareGalleryModel(model.PhotoId);
            model.SliderModel       = _sliderFactory.PrePareSliderModel(model.SliderId);
            if (category.BannerPictureId > 0)
            {
                model.BannerPictureUrl = _pictureService.GetPictureUrl(category.BannerPictureId);
            }

            if (category.BannerLitlePictureId > 0)
            {
                model.BannerLittlePicturUrl = _pictureService.GetPictureUrl(category.BannerLitlePictureId);
            }


            return(model);
        }