public Task <Response <Guid> > UpdateAsync(EditCustomPageRequest request) { return(TryExecuteAsync <Guid>(async() => { var page = await _customPageRepository.GetAsync(request.Id); if (null == page) { throw new InvalidOperationException($"CustomPageEntity with Id '{request.Id}' not found."); } page.Title = request.Title.Trim(); page.Slug = request.Slug.ToLower().Trim(); page.MetaDescription = request.MetaDescription; page.HtmlContent = request.HtmlContent; page.CssContent = request.CssContent; page.HideSidebar = request.HideSidebar; page.UpdatedOnUtc = DateTime.UtcNow; page.IsPublished = request.IsPublished; await _customPageRepository.UpdateAsync(page); await _moongladeAudit.AddAuditEntry(EventType.Content, AuditEventId.PageUpdated, $"Page '{request.Id}' updated."); return new SuccessResponse <Guid>(page.Id); })); }
public async Task <IActionResult> CreateOrEdit(CustomPageEditViewModel model, [FromServices] IMemoryCache cache) { try { if (ModelState.IsValid) { if (InvalidPageRouteNames.Contains(model.Slug.ToLower())) { ModelState.AddModelError(nameof(model.Slug), "Reserved Slug."); return(View("CreateOrEdit", model)); } var req = new EditCustomPageRequest(model.Id) { HtmlContent = model.RawHtmlContent, CssContent = model.CssContent, HideSidebar = model.HideSidebar, Slug = model.Slug, MetaDescription = model.MetaDescription, Title = model.Title, IsPublished = model.IsPublished }; var response = model.Id == Guid.Empty ? await _customPageService.CreateAsync(req) : await _customPageService.UpdateAsync(req); if (response.IsSuccess) { Logger.LogInformation($"User '{User.Identity.Name}' updated custom page id '{response.Item}'"); var cacheKey = $"page-{req.Slug.ToLower()}"; cache.Remove(cacheKey); return(Json(new { PageId = response.Item })); } Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new FailedResponse(response.Message))); } Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(new FailedResponse("Invalid ModelState"))); } catch (Exception e) { Logger.LogError(e, "Error Create or Edit CustomPage."); Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new FailedResponse(e.Message))); } }
public async Task <IActionResult> Edit(CustomPageEditViewModel model, [FromServices] IMemoryCache cache) { try { if (ModelState.IsValid) { if (InvalidPageRouteNames.Contains(model.RouteName.ToLower())) { ModelState.AddModelError(nameof(model.RouteName), "Reserved Route Name."); return(View("CreateOrEdit", model)); } var req = new EditCustomPageRequest(model.Id) { HtmlContent = model.RawHtmlContent, CssContent = model.CssContent, HideSidebar = model.HideSidebar, RouteName = model.RouteName, Title = model.Title }; var response = await _customPageService.EditPageAsync(req); if (response.IsSuccess) { var cacheKey = $"page-{req.RouteName.ToLower()}"; cache.Remove(cacheKey); return(RedirectToAction("Manage")); } ModelState.AddModelError(string.Empty, response.Message); return(View("CreateOrEdit", model)); } return(View("CreateOrEdit", model)); } catch (Exception e) { Logger.LogError(e, "Error Editing CustomPage."); ModelState.AddModelError(string.Empty, e.Message); return(View("CreateOrEdit", model)); } }
public Task <Response> EditPageAsync(EditCustomPageRequest request) { return(TryExecuteAsync(async() => { var page = await _customPageRepository.GetAsync(request.Id); if (null == page) { throw new InvalidOperationException($"CustomPageEntity with Id '{request.Id}' is not found."); } page.Title = request.Title.Trim(); page.RouteName = request.RouteName.ToLower().Trim(); page.HtmlContent = _htmlCodec.HtmlEncode(request.HtmlContent); page.CssContent = request.CssContent; page.HideSidebar = request.HideSidebar; page.UpdatedOnUtc = DateTime.UtcNow; await _customPageRepository.UpdateAsync(page); return new SuccessResponse(); })); }