add pagination Queryrable - add pagination for workshop select List
This commit is contained in:
22
0_Framework/InfraStructure/QueryableExtensions.cs
Normal file
22
0_Framework/InfraStructure/QueryableExtensions.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user