Пример #1
0
        public async Task <IActionResult> Create([Required] CreateBlockViewModel model)
        {
            _pagesContext.Blocks.Add(model);
            var dbResult = await _pagesContext.PushAsync();

            if (dbResult.IsSuccess)
            {
                return(RedirectToAction("Index"));
            }

            model.BlockCategories = _pagesContext.BlockCategories.ToList();
            return(View(model));
        }
Пример #2
0
        public async Task <IActionResult> Create(PageViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.PageTypes = _pagesContext.PageTypes.ToList();
                model.Layouts   = _pagesContext.Pages.Include(x => x.Settings).Where(x => x.IsLayout);
                return(View(model));
            }

            var match = await _pagesContext.Pages.Include(x => x.Settings)
                        .FirstOrDefaultAsync(x => x.Settings.Name.ToLower().Equals(model.Name.ToLower()));

            if (match != null)
            {
                ModelState.AddModelError(string.Empty, "The page name exists, please type another name");
                model.PageTypes = _pagesContext.PageTypes.ToList();
                model.Layouts   = _pagesContext.Pages.Include(x => x.Settings).Where(x => x.IsLayout);
                return(View(model));
            }

            if (!model.Path.StartsWith("/"))
            {
                ModelState.AddModelError(string.Empty, "Invalid format for path of page.Example: /PageName ");
                model.PageTypes = _pagesContext.PageTypes.ToList();
                model.Layouts   = _pagesContext.Pages.Include(x => x.Settings).Where(x => x.IsLayout);
                return(View(model));
            }

            var page = new Page
            {
                Created    = DateTime.Now,
                Changed    = DateTime.Now,
                PageTypeId = model.PageTypeId,
                LayoutId   = model.LayoutId,
                Path       = model.Path,
                Settings   = new PageSettings
                {
                    Name              = model.Name,
                    Description       = model.Description,
                    Title             = model.Title,
                    TitleTranslateKey = model.TitleTranslateKey
                },
                IsLayout = model.PageTypeId == PageSeeder.PageTypes[0].Id
            };

            await _pagesContext.Pages.AddAsync(page);

            var dbResult = await _pagesContext.PushAsync();

            if (dbResult.IsSuccess)
            {
                DynamicUiEvents.Pages.PageCreated(new PageCreatedEventArgs
                {
                    PageId   = page.Id,
                    PageName = page.Settings.Name
                });

                return(RedirectToAction(page.IsLayout ? "Layouts" : "Index"));
            }

            ModelState.AppendResultModelErrors(dbResult.Errors);
            model.PageTypes = _pagesContext.PageTypes.ToList();
            model.Layouts   = _pagesContext.Pages.Include(x => x.Settings).Where(x => x.IsLayout);
            return(View(model));
        }