Пример #1
0
        public AiBookModelView PrepareBookNodeModel(AiBookModelView bookModelModel, int?filterByBookId)
        {
            var model = new AiBookModel();

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

            Action <AiBookModelLocalizedModel, int> localizedModelConfiguration = null;

            //prepare nested search models
            //Prepare Categories
            _baseAdminModelFactory.PrepareCategories(bookModelModel.AvailableCategories,
                                                     defaultItemText: _localizationService.GetResource("Admin.Catalog.Categories.Fields.Parent.None"));
            if (bookModelModel.BookDirId > 0)
            {
                var bookdir = _bookdirService.GetBookDirById(bookModelModel.BookDirId);
                if (bookdir != null)
                {
                    bookModelModel.BookId = bookdir.BookID;
                }
                bookModelModel.AvailableBookDirs = SelectListHelper.GetBookDirList(_bookdirService, _workContext.CurrentCustomer, _cacheManager);
            }


            if (bookModelModel.BookId > 0)
            {
                var result = _productService.GetProductById(bookModelModel.BookId);
                if (result != null)
                {
                    if (result.ProductCategories != null)
                    {
                        bookModelModel.CateId = result.ProductCategories.FirstOrDefault().CategoryId;
                    }
                    bookModelModel.BookId         = result.Id;
                    bookModelModel.AvailableBooks = SelectListHelper.GetBookList(_productService, new List <int> {
                        bookModelModel.CateId
                    }, _workContext.CurrentCustomer, _cacheManager);
                }
            }


            localizedModelConfiguration = (locale, languageId) =>
            {
                locale.Name        = _localizationService.GetLocalized(model, entity => entity.Name, languageId, false, false);
                locale.Desc        = _localizationService.GetLocalized(model, entity => entity.Desc, languageId, false, false);
                locale.WebModelUrl = _localizationService.GetLocalized(model, entity => entity.WebModelUrl, languageId, false, false);
                locale.WebGltfUrl  = _localizationService.GetLocalized(model, entity => entity.WebGltfUrl, languageId, false, false);
                locale.WebBinUrl   = _localizationService.GetLocalized(model, entity => entity.WebBinUrl, languageId, false, false);
                locale.AbUrl       = _localizationService.GetLocalized(model, entity => entity.AbUrl, languageId, false, false);
                locale.ImgUrl      = _localizationService.GetLocalized(model, entity => entity.ImgUrl, languageId, false, false);
                locale.StrJson     = _localizationService.GetLocalized(model, entity => entity.StrJson, languageId, false, false);
                //locale.SeName = _urlRecordService.GetSeName(category, languageId, false, false);
            };


            bookModelModel.Locales = _localizedModelFactory.PrepareLocalizedModels(localizedModelConfiguration);
            return(bookModelModel);
        }
Пример #2
0
        public IActionResult Create(AiBookModelView model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageCategories))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                var category = model.ToEntity <AiBookModel>();
                category.CreatedOnUtc = DateTime.UtcNow;
                category.UpdatedOnUtc = DateTime.UtcNow;
                //if (string.IsNullOrEmpty(category.PriceRanges))
                //{
                //    category.PriceRanges = "0";
                //}


                //search engine name
                //  model.SeName = _urlRecordService.ValidateSeName(category, model.SeName, category.Name, true);
                // _urlRecordService.SaveSlug(category, model.SeName, 0);

                //locales
                // UpdateLocales(category, model);

                //discounts
                //    var allDiscounts = _discountService.GetAllDiscounts(DiscountType.AssignedToCategories, showHidden: true);
                //            foreach (var discount in allDiscounts)
                //            {
                //                if (model.SelectedDiscountIds != null && model.SelectedDiscountIds.Contains(discount.Id))
                //                    //category.AppliedDiscounts.Add(discount);
                //                    category.DiscountCategoryMappings.Add(new DiscountCategoryMapping { Discount = discount
                //});
                //            }

                // _bookDirService.InsertBookDir(category);
                _bookNodeService.InsertAiBookModel(category);
                // _categoryService.UpdateCategory(category);

                //update picture seo file name
                //  UpdatePictureSeoNames(category);

                //ACL (customer roles)
                // SaveCategoryAcl(category, model);

                //stores
                // SaveStoreMappings(category, model);

//activity log
                _customerActivityService.InsertActivity("AddNewBookNode",
                                                        string.Format(_localizationService.GetResource("ActivityLog.AddNewBookNode"), category.Name), category);

                SuccessNotification(_localizationService.GetResource("Admin.AiBookDir.BookNode.AddNewBookNode"));

                if (!continueEditing)
                {
                    return(RedirectToAction("Index"));
                }

                return(RedirectToAction("Edit", new { id = category.Id }));
            }

            //prepare model
            model = _bookNodeFactory.PrepareBookNodeModel(new AiBookModelView(), 0);


            //if we got this far, something failed, redisplay form
            return(View(model));
        }