using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data.Entity;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Web.Mvc;
using EnVisage.App_Start;
using EnVisage.Code;
using EnVisage.Code.BLL;
using EnVisage.Models;
using jQuery.DataTables.Mvc;
using EnVisage.Code.HtmlHelpers;
using Microsoft.AspNet.Identity;
namespace EnVisage.Controllers
{
[Authorize]
public class CalendarController : BaseController
{
///
/// GET: /Calendar/
///
/// Calendar view
[HttpGet]
[AreaSecurityAttribute(area = Areas.FiscalCalendar, level = AccessLevel.Read)]
public ActionResult Index()
{
try
{
if (!HtmlHelpers.CheckSecurityObjectPermission(null, Areas.FiscalCalendar, AccessLevel.Read))
return Redirect("/");
var manager = new FiscalCalendarManager(DbContext);
var model = manager.LoadFiscalCalendarSettings();
return View(model);
}
catch (BLLException blEx)
{
if (blEx.DisplayError)
SetErrorScript(message: blEx.Message);
else
{
LogException(blEx);
SetErrorScript();
}
}
catch (Exception exception)
{
LogException(exception);
SetErrorScript();
}
return View(new FiscalCalendarModel());
}
///
/// Returns JSON company list with filters and sort for jQuery DataTables
///
[HttpPost]
[AreaSecurityAttribute(area = Areas.FiscalCalendar, level = AccessLevel.Read)]
public JsonResult Index(JQueryDataTablesModel jQueryDataTablesModel)
{
int totalRecordCount;
int searchRecordCount;
var clients = GetHolidays(startIndex: jQueryDataTablesModel.iDisplayStart,
pageSize: jQueryDataTablesModel.iDisplayLength,
sortedColumns: jQueryDataTablesModel.GetSortedColumns(),
totalRecordCount: out totalRecordCount, searchRecordCount: out searchRecordCount,
searchString: jQueryDataTablesModel.sSearch);
return this.DataTablesJson(items: clients,
totalRecords: totalRecordCount,
totalDisplayRecords: searchRecordCount,
sEcho: jQueryDataTablesModel.sEcho);
// To-Do: how to output an error in the ajax datatable?
}
private IEnumerable