Skip to content

Commit 7a2a2fd

Browse files
Migrated Controllers
1 parent affde59 commit 7a2a2fd

File tree

2 files changed

+146
-0
lines changed

2 files changed

+146
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Diagnostics;
4+
using System.Linq;
5+
using System.Threading.Tasks;
6+
using Microsoft.AspNetCore.Mvc;
7+
using Microsoft.Extensions.Logging;
8+
using jQueryDatatableServerSideNetCore.Models;
9+
10+
namespace jQueryDatatableServerSideNetCore.Controllers
11+
{
12+
public class HomeController : Controller
13+
{
14+
private readonly ILogger<HomeController> _logger;
15+
16+
public HomeController(ILogger<HomeController> logger)
17+
{
18+
_logger = logger;
19+
}
20+
21+
public IActionResult Index()
22+
{
23+
return View();
24+
}
25+
26+
public IActionResult Privacy()
27+
{
28+
return View();
29+
}
30+
31+
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
32+
public IActionResult Error()
33+
{
34+
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
35+
}
36+
}
37+
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
using jQueryDatatableServerSideNetCore.Data;
2+
using jQueryDatatableServerSideNetCore.Models.AuxiliaryModels;
3+
using Microsoft.AspNetCore.Mvc;
4+
using System;
5+
using System.Linq;
6+
using System.Threading.Tasks;
7+
using jQueryDatatableServerSideNetCore.Extensions;
8+
using jQueryDatatableServerSideNetCore.Models.DatabaseModels;
9+
using Microsoft.EntityFrameworkCore;
10+
using RandomGen;
11+
12+
namespace jQueryDatatableServerSideNetCore.Controllers
13+
{
14+
public class TestRegistersController : Controller
15+
{
16+
private readonly ApplicationDbContext _context;
17+
18+
public TestRegistersController(ApplicationDbContext context)
19+
{
20+
_context = context;
21+
}
22+
23+
// GET: TestRegisters
24+
public async Task<IActionResult> Index()
25+
{
26+
await SeedData();
27+
28+
return View();
29+
}
30+
31+
[HttpPost]
32+
public async Task<IActionResult> LoadTable([FromBody]DtParameters dtParameters)
33+
{
34+
var searchBy = dtParameters.Search?.Value;
35+
36+
var orderCriteria = string.Empty;
37+
var orderAscendingDirection = true;
38+
39+
if (dtParameters.Order != null)
40+
{
41+
// in this example we just default sort on the 1st column
42+
orderCriteria = dtParameters.Columns[dtParameters.Order[0].Column].Data;
43+
orderAscendingDirection = dtParameters.Order[0].Dir.ToString().ToLower() == "asc";
44+
}
45+
else
46+
{
47+
// if we have an empty search then just order the results by Id ascending
48+
orderCriteria = "Id";
49+
orderAscendingDirection = true;
50+
}
51+
52+
var result = await _context.TestRegisters.ToListAsync();
53+
54+
if (!string.IsNullOrEmpty(searchBy))
55+
{
56+
result = result.Where(r => r.Name != null && r.Name.ToUpper().Contains(searchBy.ToUpper()) ||
57+
r.FirstSurname != null && r.FirstSurname.ToUpper().Contains(searchBy.ToUpper()) ||
58+
r.SecondSurname != null && r.SecondSurname.ToUpper().Contains(searchBy.ToUpper()) ||
59+
r.Street != null && r.Street.ToUpper().Contains(searchBy.ToUpper()) ||
60+
r.Phone != null && r.Phone.ToUpper().Contains(searchBy.ToUpper()) ||
61+
r.ZipCode != null && r.ZipCode.ToUpper().Contains(searchBy.ToUpper()) ||
62+
r.Country != null && r.Country.ToUpper().Contains(searchBy.ToUpper()) ||
63+
r.Notes != null && r.Notes.ToUpper().Contains(searchBy.ToUpper()))
64+
.ToList();
65+
}
66+
67+
result = orderAscendingDirection ? result.AsQueryable().OrderByDynamic(orderCriteria, DtOrderDir.Asc).ToList() : result.AsQueryable().OrderByDynamic(orderCriteria, DtOrderDir.Desc).ToList();
68+
69+
// now just get the count of items (without the skip and take) - eg how many could be returned with filtering
70+
var filteredResultsCount = result.Count();
71+
var totalResultsCount = await _context.TestRegisters.CountAsync();
72+
73+
return Json(new
74+
{
75+
draw = dtParameters.Draw,
76+
recordsTotal = totalResultsCount,
77+
recordsFiltered = filteredResultsCount,
78+
data = result
79+
.Skip(dtParameters.Start)
80+
.Take(dtParameters.Length)
81+
.ToList()
82+
});
83+
}
84+
85+
public async Task SeedData()
86+
{
87+
if (!_context.TestRegisters.Any())
88+
{
89+
for (var i = 0; i < 1000; i++)
90+
{
91+
await _context.TestRegisters.AddAsync(new TestRegister
92+
{
93+
Name = i % 2 == 0 ? Gen.Random.Names.Male()() : Gen.Random.Names.Female()(),
94+
FirstSurname = Gen.Random.Names.Surname()(),
95+
SecondSurname = Gen.Random.Names.Surname()(),
96+
Street = Gen.Random.Names.Full()(),
97+
Phone = Gen.Random.PhoneNumbers.WithRandomFormat()(),
98+
ZipCode = Gen.Random.Numbers.Integers(10000, 99999)().ToString(),
99+
Country = Gen.Random.Countries()(),
100+
Notes = Gen.Random.Text.Short()(),
101+
CreationDate = Gen.Random.Time.Dates(DateTime.Now.AddYears(-100), DateTime.Now)()
102+
});
103+
}
104+
105+
await _context.SaveChangesAsync();
106+
}
107+
}
108+
}
109+
}

0 commit comments

Comments
 (0)