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)); }
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)); }