/*
Kooboo is a content management system based on ASP.NET MVC framework. Copyright 2009 Yardi Technology Limited.
This program is free software: you can redistribute it and/or modify it under the terms of the
GNU General Public License version 3 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.kooboo.com/gpl3/.
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using Everest.Library;
using Everest.Library.Mvc;
using Everest.Library.Extjs;
using Everest.Library.Data.Rule;
using Everest.Library.Data.Entity;
using Everest.Library.Json;
using Everest.Library.ExtensionMethod;
using Everest.Library.Versioning;
using Everest.CmsServices.Services;
using Everest.CmsServices.Models;
using Everest.CmsServices.Providers;
namespace Everest.CmsServices.Controllers{
[System.Web.Mvc.ValidateInput(false)]
public class SchemaFunctionController : CmsExtController
{
IEverestCmsDataContext dataContext = EverestCmsEntities.GetDataContext();
#region Functions
/// <summary>
/// Gets the functions.
/// </summary>
/// <param name="schemaId">The schema id.</param>
/// <returns></returns>
public ActionResult GetFunctions(Guid schemaUUID)
{
var queryable = dataContext.QuerySchemaFunctions(schemaUUID);
var items = queryable.Select(sf => new
{
sf.FunctionId,
sf.Name,
sf.FormType
}).ToArray();
var jsonData = items.Select(f => new
{
f.FunctionId,
f.Name,
FormType = Resources.ResourceManager.GetString(string.Format("FunctionType_{0}", ((FunctionType)f.FormType).ToString()))
});
var listData = new ExtJsonReaderObject(jsonData, queryable.Count());
return Json(listData);
}
/// <summary>
/// Submits the function.
/// </summary>
/// <returns></returns>
public ActionResult SubmitFunction([Bind()]Cms_SchemaFunction function, [Bind(Prefix = "oldData")] Cms_SchemaFunction oldFunction, Guid schemaUUID, bool add, bool closeForm)
{
JsonResultData resultData = new JsonResultData();
try
{
if (add)
{
function.Cms_Schema = dataContext.QuerySchema(schemaUUID).First();
dataContext.AddToCms_SchemaFunction(function);
}
else
{
var dbFunction = dataContext.QuerySchemaFunction(oldFunction.FunctionId).First();
dbFunction.Name = function.Name;
dbFunction.Script = function.Script;
dbFunction.FormType = function.FormType;
function = dbFunction;
}
dataContext.SaveChanges();
}
catch (RuleViolationException ruleException)
{
ruleException.Issues.UpdateResultDataWithViolations(resultData);
Everest.Library.HealthMonitor.HealthMonitoringLogging.LogError(ruleException);
}
if (closeForm == false && resultData.success)
{
resultData.closeForm = false;
resultData.data = GetJsonDetail(function.FunctionId);
}
return Json(resultData);
}
/// <summary>
/// Gets the detail.
/// </summary>
/// <param name="functionId">The function id.</param>
/// <returns></returns>
public ActionResult GetDetail(int functionId)
{
JsonResultData resultData = new JsonResultData();
resultData.data = GetJsonDetail(functionId);
return Json(resultData);
}
private object GetJsonDetail(int functionId)
{
var jsonData = dataContext.QuerySchemaFunction(functionId)
.Select(sf => new
{
sf.FunctionId,
sf.Name,
sf.Script,
sf.FormType
}).First();
return jsonData;
}
/// <summary>
/// Deletes the specified function id.
/// </summary>
/// <param name="functionId">The function id.</param>
/// <returns></returns>
public ActionResult Delete(int functionId)
{
var data = dataContext.QuerySchemaFunction(functionId).First();
dataContext.DeleteObject(data);
dataContext.SaveChanges();
return Json(new JsonResultData() { success = true });
}
#endregion
#region Combobox
public ActionResult GetFunctionTypes()
{
var enumValues = EnumHelper.GetItems(typeof(FunctionType));
var items = enumValues.ToComboboxItems(s => Resources.ResourceManager.GetString(string.Format("FunctionType_{0}", s.Name))
, s => s.Value.ToString(), false);
return Json(new ExtJsonReaderObject(items, items.Count));
}
#endregion
}
}
|