add pagination Queryrable - add pagination for workshop select List

This commit is contained in:
MahanCh
2025-07-22 11:07:16 +03:30
parent 767022d0b8
commit bb3a50eb18
7 changed files with 35 additions and 14 deletions

View File

@@ -0,0 +1,22 @@
using System.Collections.Generic;
using System.Linq;
namespace _0_Framework.InfraStructure;
public static class QueryableExtensions
{
public static IQueryable<T> ApplyPagination<T>(this IQueryable<T> query, int page, int pageSize)
{
if (page <= 0) page = 1;
if (pageSize <= 0) pageSize = 10;
return query.Skip((page - 1) * pageSize).Take(pageSize);
}
public static IEnumerable<T> ApplyPagination<T>(this IEnumerable<T> source, int page, int pageSize)
{
if (page <= 0) page = 1;
if (pageSize <= 0) pageSize = 10;
return source.Skip((page - 1) * pageSize).Take(pageSize);
}
}

View File

@@ -69,7 +69,7 @@ public interface IWorkshopRepository : IRepository<long, Workshop>
Task<int> GetWorkshopsForEmployeeStartWorkCount(long accountId);
Task<List<WorkshopWithLeftWorkTempEmployeesDto>> GetWorkshopsForLeftWorkTemp(long accountId);
Task<int> GetWorkshopsForLeftWorkTempCount(long accountId);
Task<List<WorkshopSelectListViewModel>> GetSelectList(string search,long id);
Task<List<WorkshopSelectListViewModel>> GetSelectList(string search, int pageIndex, int pageSize);
#endregion

View File

@@ -85,7 +85,7 @@ public interface IWorkshopApplication
Task<List<WorkshopWithLeftWorkTempEmployeesDto>> GetWorkshopsForLeftWorkTemp(long accountId);
Task<int> GetWorkshopsForLeftWorkTempCount(long accountId);
Task<List<WorkshopSelectListViewModel>> GetSelectList(string search, long id);
Task<List<WorkshopSelectListViewModel>> GetSelectList(string search, int pageIndex, int pageSize);
#endregion

View File

@@ -920,9 +920,9 @@ public class WorkshopAppliction : IWorkshopApplication
return _workshopRepository.GetWorkshopsForLeftWorkTempCount(accountId);
}
public async Task<List<WorkshopSelectListViewModel>> GetSelectList(string search, long id = 0)
public async Task<List<WorkshopSelectListViewModel>> GetSelectList(string search, int pageIndex, int pageSize)
{
return await _workshopRepository.GetSelectList(search, id);
return await _workshopRepository.GetSelectList(search, pageIndex,pageSize);
}
#endregion

View File

@@ -1155,7 +1155,7 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
}
public async Task<List<WorkshopSelectListViewModel>> GetSelectList(string search,long id)
public async Task<List<WorkshopSelectListViewModel>> GetSelectList(string search, int pageIndex, int pageSize)
{
var query = _context.Workshops.Select(x => new WorkshopSelectListViewModel()
{
@@ -1167,12 +1167,9 @@ public class WorkshopRepository : RepositoryBase<long, Company.Domain.WorkshopAg
{
query = query.Where(x => x.Name.Contains(search));
}
if (id > 0)
{
query = query.Where(x => x.Id == id);
}
return await query.Take(100).ToListAsync();
return await query.ApplyPagination(pageIndex,pageSize).ToListAsync();
}

View File

@@ -17,11 +17,13 @@ public class WorkshopController: AdminBaseController
/// لیست کارگاه برای جستجو
/// </summary>
/// <param name="search"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
[HttpGet("select_list")]
public async Task<ActionResult<List<WorkshopSelectListViewModel>>> GetSelectList(string search, long id)
public async Task<ActionResult<List<WorkshopSelectListViewModel>>> GetSelectList(string search, int pageIndex,int pageSize=20)
{
var data = await _workshopApplication.GetSelectList(search,id);
var data = await _workshopApplication.GetSelectList(search,pageIndex, pageSize);
return data;
}

View File

@@ -95,9 +95,9 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.MonthlyOverview
data = res
});
}
public async Task<IActionResult> OnGetWorkshopSelectList(string search, long id)
public async Task<IActionResult> OnGetWorkshopSelectList(string search, int pageIndex,int pageSize = 20)
{
var res = await _workshopApplication.GetSelectList(search, id);
var res = await _workshopApplication.GetSelectList(search, pageIndex, pageSize);
return new JsonResult(new
{
data = res