Canvas.Controllers.ApiController.AddControl C# (CSharp) Method

AddControl() private method

private AddControl ( string areaAlias, string controlType, int pageId ) : System.Web.Mvc.JsonResult
areaAlias string
controlType string
pageId int
return System.Web.Mvc.JsonResult
        public JsonResult AddControl(string areaAlias, string controlType, int pageId)
        {

            var controlId = Guid.NewGuid();

            string columns = "6:medium:;6:medium:";

            var model = Repository.GetObjectById(pageId);

            if (model != null && !string.IsNullOrEmpty(controlType) && !string.IsNullOrEmpty(areaAlias))
            {

                // Find Area In Grid/Section or Root

                foreach (var area in model.Areas)
                {
                    FindArea(area, areaAlias);
                }

                if (AreaResult != null)
                {

                    var control = new CanvasControl
                    {
                        ControlID = controlId,
                        Type = controlType
                    };

                    // If control is grid then create area inside it

                    if (controlType == "Grid")
                    {
                        control.Columns = columns;

                        int p = 0;
                        foreach (var column in columns.Split(';').Where(x => !string.IsNullOrEmpty(x)))
                        {

                            string col = column.Split(':')[0];

                            var area = new CanvasArea {Alias = "grid-" + col + "-" + controlId.ToString() + "-" + p};


                            control.Areas.Add(area);

                            p++;

                        }

                    }

                    // If control is section then create area inside it

                    if (controlType == "Section")
                    {
                        var area = new CanvasArea {Alias = "section-" + controlId.ToString()};

                        control.Areas.Add(area);
                    }

                    AreaResult.Controls.Add(control);

                }

                // Convert model back to json for saving

                Repository.SaveJson(model, pageId);

            }
            else
            {

                // If no area is found, create it

                var m = new CanvasModel();

                var area = new CanvasArea {Alias = areaAlias};

                var control = new CanvasControl
                {
                    ControlID = controlId,
                    Type = controlType
                };

                area.Controls.Add(control);

                m.Areas.Add(area);

                Repository.SaveJson(m, pageId);

            }

            return Json(new { success = true, controlType = controlType, controlId = controlId.ToString(), pageId = pageId });

        }