mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-05 01:22:10 +00:00
Fix pagination to use database-side Skip/Take instead of loading all rows
- Move .ToList() after .Skip().Take() in ContactController, QuotesController, SettingsController - Prevents loading entire tables into memory for paginated queries
This commit is contained in:
parent
483b765d69
commit
493cff00fb
3 changed files with 12 additions and 18 deletions
|
|
@ -131,12 +131,10 @@ namespace Api.SeaHavenIndustries.Controllers
|
||||||
Name = (n.FirstName + " " + n.LastName).Trim(),
|
Name = (n.FirstName + " " + n.LastName).Trim(),
|
||||||
email = n.Email,
|
email = n.Email,
|
||||||
phone = n.PhoneNumber
|
phone = n.PhoneNumber
|
||||||
}).OrderByDescending(d => d.Id).ToList().Skip((page - 1) * pageSize)
|
}).OrderByDescending(d => d.Id).Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize);
|
.Take(pageSize).ToList();
|
||||||
// Calculate the number of pages
|
|
||||||
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
||||||
|
|
||||||
// Create a view model containing the paged items and pagination metadata
|
|
||||||
var viewModel = new Pagination_DTO
|
var viewModel = new Pagination_DTO
|
||||||
{
|
{
|
||||||
Data = data,
|
Data = data,
|
||||||
|
|
@ -267,12 +265,10 @@ namespace Api.SeaHavenIndustries.Controllers
|
||||||
n.Id,
|
n.Id,
|
||||||
n.Name,
|
n.Name,
|
||||||
n.Title
|
n.Title
|
||||||
}).OrderByDescending(d => d.Id).ToList().Skip((page - 1) * pageSize)
|
}).OrderByDescending(d => d.Id).Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize);
|
.Take(pageSize).ToList();
|
||||||
// Calculate the number of pages
|
|
||||||
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
||||||
|
|
||||||
// Create a view model containing the paged items and pagination metadata
|
|
||||||
var viewModel = new Pagination_DTO
|
var viewModel = new Pagination_DTO
|
||||||
{
|
{
|
||||||
Data = data,
|
Data = data,
|
||||||
|
|
|
||||||
|
|
@ -174,8 +174,8 @@ namespace Api.SeaHavenIndustries.Controllers
|
||||||
s.ContactId,
|
s.ContactId,
|
||||||
s.Date,
|
s.Date,
|
||||||
lineitems = s.LineItems.Select(q => new { q.Descriptions, q.Lineitem, q.LineitemNumber}),
|
lineitems = s.LineItems.Select(q => new { q.Descriptions, q.Lineitem, q.LineitemNumber}),
|
||||||
}).OrderByDescending(d => d.Id).ToList().Skip((page - 1) * pageSize)
|
}).OrderByDescending(d => d.Id).Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize);
|
.Take(pageSize).ToList();
|
||||||
|
|
||||||
// Calculate the number of pages
|
// Calculate the number of pages
|
||||||
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
||||||
|
|
|
||||||
|
|
@ -104,13 +104,11 @@ namespace Api.SeaHavenIndustries.Controllers
|
||||||
{
|
{
|
||||||
s.Id,
|
s.Id,
|
||||||
s.Name
|
s.Name
|
||||||
}).OrderByDescending(d => d.Id).ToList().Skip((page - 1) * pageSize)
|
}).OrderByDescending(d => d.Id).Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize);
|
.Take(pageSize).ToList();
|
||||||
|
|
||||||
// Calculate the number of pages
|
|
||||||
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
||||||
|
|
||||||
// Create a view model containing the paged items and pagination metadata
|
|
||||||
var viewModel = new Pagination_DTO
|
var viewModel = new Pagination_DTO
|
||||||
{
|
{
|
||||||
Data = data,
|
Data = data,
|
||||||
|
|
@ -129,8 +127,8 @@ namespace Api.SeaHavenIndustries.Controllers
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var totalCount = _db.workOrders.Where(w=> w.istemplate == true).Count();
|
var totalCount = _db.workOrders.Where(w=> w.istemplate == true).Count();
|
||||||
var data = _db.workOrders.Where(w => w.istemplate == true).OrderByDescending(d => d.Id).ToList().Skip((page - 1) * pageSize)
|
var data = _db.workOrders.Where(w => w.istemplate == true).OrderByDescending(d => d.Id).Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize);
|
.Take(pageSize).ToList();
|
||||||
|
|
||||||
// Calculate the number of pages
|
// Calculate the number of pages
|
||||||
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
||||||
|
|
@ -159,8 +157,8 @@ namespace Api.SeaHavenIndustries.Controllers
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var totalCount = _db.Users.Count();
|
var totalCount = _db.Users.Count();
|
||||||
var allUsers = _db.Users.Where(w => (w.FirstName ?? "").ToLower().Contains((search ?? "").ToLower())).OrderByDescending(d => d.Id).ToList().Skip((page - 1) * pageSize)
|
var allUsers = _db.Users.Where(w => (w.FirstName ?? "").ToLower().Contains((search ?? "").ToLower())).OrderByDescending(d => d.Id).Skip((page - 1) * pageSize)
|
||||||
.Take(pageSize);
|
.Take(pageSize).ToList();
|
||||||
|
|
||||||
// Calculate the number of pages
|
// Calculate the number of pages
|
||||||
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue