/
WebController.cs
104 lines (97 loc) · 4.13 KB
/
WebController.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
namespace TsSoft.WebSamples.Controllers
{
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web.Mvc;
using TsSoft.Web.Mvc.DataTablesNet;
using TsSoft.WebSamples.Models.DataTables;
public class WebController : Controller
{
private static readonly IEnumerable<CultureInfo> cultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
public ActionResult Index()
{
return View();
}
public JsonResult GetData([ModelBinder(typeof(DataTableCultureModelBuilder))]DataTableCultureSettings request)
{
var culturesData = cultures.Select(x => new CultureData
{
Name = x.Name,
DisplayName = x.DisplayName,
EnglishName = x.EnglishName,
NativeName = x.NativeName,
Neutrality = x.IsNeutralCulture ? CultureNeutrality.Neutral : CultureNeutrality.NotNeutral,
WritingDirection = x.TextInfo.IsRightToLeft ? CultureWritingDirection.RightToLeft : CultureWritingDirection.LeftToRight,
});
IEnumerable<CultureData> culturesSortable = null;
foreach (var column in request.SortColumns)
{
switch (column.Name)
{
case "Name":
if (column.Order == SortOrder.Ascending)
{
culturesSortable = culturesData.OrderBy(x => x.Name);
}
else
{
culturesSortable = culturesData.OrderByDescending(x => x.Name);
}
break;
case "DisplayName":
if (column.Order == SortOrder.Ascending)
{
culturesSortable = culturesData.OrderBy(x => x.DisplayName);
}
else
{
culturesSortable = culturesData.OrderByDescending(x => x.DisplayName);
}
break;
case "EnglishName":
if (column.Order == SortOrder.Ascending)
{
culturesSortable = culturesData.OrderBy(x => x.EnglishName);
}
else
{
culturesSortable = culturesData.OrderByDescending(x => x.EnglishName);
}
break;
case "NativeName":
if (column.Order == SortOrder.Ascending)
{
culturesSortable = culturesData.OrderBy(x => x.NativeName);
}
else
{
culturesSortable = culturesData.OrderByDescending(x => x.NativeName);
}
break;
default:
culturesSortable = culturesData.OrderBy(x => x.Name);
break;
}
}
IEnumerable<CultureData> responseData = culturesSortable;
if (request.Criteria.WritingDirection != CultureWritingDirection.All)
{
responseData = responseData.Where(x => x.WritingDirection == request.Criteria.WritingDirection);
}
if (request.Criteria.Neutrality != CultureNeutrality.All)
{
responseData = responseData.Where(x => x.Neutrality == request.Criteria.Neutrality);
}
var response = new CultureResponse
{
aaData = responseData.Skip(request.Skip).Take(request.Take).ToList(),
iTotalDisplayRecords = responseData.Count(),
iTotalRecords = culturesData.Count(),
sEcho = request.RequestId
};
return Json(response, JsonRequestBehavior.AllowGet);
}
}
}