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 });
}