Пример #1
0
        public async Task <IHttpActionResult> PostAsync(string portalUri, string pageUri, [FromBody] CreatePageDto model, CancellationToken cancellationToken)
        {
            if (model == null || !ModelState.IsValid)
            {
                return(BadRequest());
            }
            var portal = await _portalManager.FindByUriAsync(portalUri, cancellationToken);

            await ApiSecurity.AuthorizeAsync(portal, AccessPermission.CanEdit, cancellationToken);

            var parentPage = default(PageItem);

            if (pageUri != null)
            {
                parentPage = await _portalManager.GetPageByUriAsync(portal, pageUri, cancellationToken);

                if (parentPage == null)
                {
                    return(BadRequest(string.Format(PortalApiResources.PageNotFound, pageUri)));
                }
            }
            var page = new PageItem
            {
                Uri          = model.Uri,
                Name         = model.Name,
                Description  = model.Description,
                HtmlContent  = model.HtmlContent,
                StyleContent = model.StyleContent
            };
            var validationResult = await _portalManager.AddPageAsync(portal, parentPage, page, cancellationToken);

            if (!validationResult.Succeeded)
            {
                return(this.ValidationContent(validationResult));
            }
            return(CreatedAtRoute("Portal.Pages.GetByUri", new RouteValueDictionary {
                ["portalUri"] = portalUri, ["pageUri"] = page.Uri
            }, ModelMapper.ToPageDto(page)));
        }