/*
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.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using System.Linq.Expressions;
using Everest.Library;
using Everest.Library.Mvc;
using Everest.Library.Extjs;
using Everest.Library.Data.Entity;
using Everest.Library.Json;
using Everest.Library.Extjs.Tree;
using Everest.Library.ExtensionMethod;
using Everest.Library.Scheduler;
using Everest.CmsServices.Services;
using Everest.CmsServices.Models;
namespace Everest.CmsServices.Controllers{
/// <summary>
///
/// </summary>
[PermissionFilter(Permission = FolderType.Schedule)]
public class ScheduleController : CmsExtController
{
IEverestCmsDataContext dataContext = EverestCmsEntities.GetDataContext();
#region IStandardActions Members
/// <summary>
/// Gets the list.
/// </summary>
/// <returns></returns>
public System.Web.Mvc.ActionResult GetList()
{
int start, limit;
EnsurePaging(out start, out limit);
string application = Request.Form["application"];
Expression<Func<Cms_Schedule, bool>> condition = s => s.aspnet_Applications.ApplicationName == application;
IQueryable<Cms_Schedule> query = dataContext.Cms_Schedule.Where(condition).OrderByDescending(p => p.ScheduleId);
query = OrderByRequest(query);
var queryResult = query.Select<Cms_Schedule, object>(s => new
{
s.ScheduleId,
s.ScheduleType,
s.ScheduleName,
s.Interval,
s.Enabled,
Application = s.aspnet_Applications.ApplicationName
});
return Json(new ExtJsonReaderObject(queryResult.Skip(start).Take(limit).ToArray(), queryResult.Count()));
}
/// <summary>
/// Gets the details.
/// </summary>
/// <returns></returns>
public System.Web.Mvc.ActionResult GetDetail()
{
int scheduleId = int.Parse(Request.Form["ScheduleId"]);
object jsonData = GetScheduleDetail(scheduleId);
return Json(new JsonResultData() { success = true, data = jsonData });
}
/// <summary>
/// Gets the schedule details.
/// </summary>
/// <param name="scheduleId">The schedule id.</param>
/// <returns></returns>
private object GetScheduleDetail(int scheduleId)
{
var query = from s in dataContext.Cms_Schedule
where s.ScheduleId == scheduleId
select s;
var data = query.First();
var parameters = (from c in dataContext.Cms_ScheduleParameter
where c.Cms_Schedule.ScheduleId == scheduleId
select new
{
c.ParameterName,
c.ParameterValue
}).ToArray();
object jsonData = new
{
FormTitle = data.ScheduleName,
data.ScheduleId,
data.ScheduleName,
data.ScheduleType,
data.Interval,
data.Enabled,
ScheduleParameter = parameters
};
return jsonData;
}
/// <summary>
/// Submits the specified add.
/// </summary>
/// <param name="add">if set to <c>true</c> [add].</param>
/// <param name="closeForm"></param>
/// <returns></returns>
public System.Web.Mvc.ActionResult Submit(bool add, bool? closeForm)
{
JsonResultData resultData = new JsonResultData();
Cms_Schedule schedule;
if (add)
{
schedule = new Cms_Schedule();
schedule.UUID = Guid.NewGuid();
string application = Request.Form["application"];
schedule.aspnet_Applications = dataContext.QueryApplication(application).First();
//(from a in dataContext.aspnet_Applications
// where a.ApplicationName == application
// select a).First();
dataContext.AddToCms_Schedule(schedule);
}
else
{
int scheduleId = int.Parse(Request.Form["oldData.ScheduleId"]);
schedule = (from s in dataContext.Cms_Schedule
where s.ScheduleId == scheduleId
select s).First();
schedule.Cms_ScheduleParameter.Load();
if (schedule.Cms_ScheduleParameter.Count > 0)
{
Cms_ScheduleParameter item = null;
do
{
item = schedule.Cms_ScheduleParameter.FirstOrDefault();
if (item != null)
{
schedule.Cms_ScheduleParameter.Remove(item);
dataContext.DeleteObject(item);
}
} while (item != null);
}
}
schedule.Interval = long.Parse(Request.Form["Interval"]);
schedule.ScheduleName = Request.Form["ScheduleName"];
schedule.ScheduleType = Request.Form["ScheduleType"];
if (StringExtensions.IsTrue(Request.Form["Enabled"]))
{
schedule.Enabled = true;
}
else
{
schedule.Enabled = false;
}
schedule.Changed = true;
Cms_ScheduleParameter[] scheduleParameter = Request.Form["ScheduleParameter"].DeserializeJSON<Cms_ScheduleParameter[]>();
foreach (var item in scheduleParameter)
{
schedule.Cms_ScheduleParameter.Add(item);
}
dataContext.SaveChanges();
if (closeForm.Value == false && resultData.success)
{
resultData.closeForm = false;
resultData.data = GetScheduleDetail(schedule.ScheduleId);
}
return Json(resultData);
}
/// <summary>
/// Deletes this instance.
/// </summary>
/// <returns></returns>
public System.Web.Mvc.ActionResult Delete(int[] scheduleId)
{
JsonResultData resultData = new JsonResultData() { success = true };
var schedules = dataContext.QuerySchedules(scheduleId).ToArray();
for (int i = 0; i < schedules.Length; i++)
{
dataContext.DeleteObject(schedules[i]);
}
dataContext.SaveChanges();
return Json(resultData);
}
#endregion
#region Combobox
public ActionResult GetJobTypes()
{
Type jobType = typeof(IJob);
var jobTypes = jobType.GetAllChildTypes();
var items = jobTypes.ToComboboxItems(m => m.GetTypeNameWithoutVersion(), m => m.GetTypeNameWithoutVersion());
return Json(new ExtJsonReaderObject(items, items.Count));
}
#endregion
}
}
|