Example #1
0
        public async Task <IActionResult> Produce(CreateLayoutRequest request)
        {
            var validatorActionResult = await _validationArrangement.Validate(request);

            var actionResult = await _operationArrangement.Process(request, validatorActionResult);

            return(actionResult);
        }
        public async Task <IActionResult> Create([FromQuery] CreateLayoutFromQuery query,
                                                 [FromBody] CreateLayoutFromBody body)
        {
            var request = new CreateLayoutRequest(query, body);

            var result = await _apiResult.Produce(request);

            return(result);
        }
        /// <summary>
        /// Creates the layout.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// Created layout entity
        /// </returns>
        public Layout CreateLayout(CreateLayoutRequest request)
        {
            ValidateRequest(request);

            try
            {
                UnitOfWork.BeginTransaction();

                var layout = new Layout
                {
                    LayoutPath = request.LayoutPath,
                    Name       = request.Name,
                    PreviewUrl = request.PreviewUrl
                };

                // reference or create new regions by identifiers
                if (request.Regions != null)
                {
                    layout.LayoutRegions = new List <LayoutRegion>();
                    foreach (var regionIdentifier in request.Regions)
                    {
                        if (string.IsNullOrWhiteSpace(regionIdentifier))
                        {
                            continue;
                        }

                        var region = LoadOrCreateRegion(regionIdentifier);

                        var layoutRegion = new LayoutRegion
                        {
                            Layout = layout,
                            Region = region
                        };
                        layout.LayoutRegions.Add(layoutRegion);
                    }
                }

                Repository.Save(layout);
                UnitOfWork.Commit();

                return(layout);
            }
            catch (Exception inner)
            {
                var message = string.Format("Failed to create layout. Path: {0}, Name: {1}, Url: {2}", request.LayoutPath, request.Name, request.PreviewUrl);
                Logger.Error(message, inner);
                throw new CmsApiException(message, inner);
            }
        }
        private static Layout AddLayout(PagesApiContext pagesApi)
        {
            var layouts = pagesApi.GetLayouts(new GetLayoutsRequest(l => l.LayoutPath == Template.LayoutPath));

            if (layouts.Items.Count > 0)
            {
                return(layouts.Items[0]);
            }

            var request = new CreateLayoutRequest()
            {
                Name       = Template.Name,
                LayoutPath = Template.LayoutPath,
                Regions    = new[] { Template.Regions.Main, Template.Regions.Header, Template.Regions.Footer }
            };

            return(pagesApi.CreateLayout(request));
        }
        public async Task<IActionResult> Process(CreateLayoutRequest request, IValidatorActionResult validatorActionResult)
        {
            IActionResult actionResult;

            if (validatorActionResult.Result == null)
            {
                var call = _cqsMapper.Map(request);

                var result = await _mediator.Send(call);

                actionResult = result.IsFailure ? _apiResponse.Fail(result)
                                                : _apiResponse.Created(string.Format("/api/layouts/{0}", ((Result<Guid>)result).Value), result.Version.ToString());
            }
            else
            {
                actionResult = validatorActionResult.Result;
            }

            return actionResult;
        }
Example #6
0
        public CreateLayoutCommand Map(CreateLayoutRequest request)
        {
            var result = new CreateLayoutCommand(request.BodyName, request.BodyDescription, request.BodyImage);

            return(result);
        }