Ejemplo n.º 1
0
        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);
            }));
        }
Ejemplo n.º 2
0
        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)));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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();
            }));
        }