Skip to content

Commit 4378a6f

Browse files
Paging Information is now returned by the api/jobs endpoint (#570)
1 parent be987d1 commit 4378a6f

File tree

2 files changed

+29
-19
lines changed

2 files changed

+29
-19
lines changed

EmpleoDotNet.WebApi/Controllers/JobsController.cs

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Api.Contract;
22
using EmpleoDotNet.AppServices;
3+
using EmpleoDotNet.Core.Domain;
34
using EmpleoDotNet.Core.Dto;
45
using EmpleoDotNet.WebAPI.Services;
56
using System.Collections.Generic;
@@ -20,10 +21,27 @@ public JobsController(IJobOpportunityService jobsService, IJobOpportunityToMobil
2021
}
2122

2223
[Route("api/jobs/")]
23-
public IHttpActionResult Get(int page = 1, int pageSize = 25)
24+
public IHttpActionResult Get(int page = 1, int pageSize = 2)
2425
{
25-
var jobCards = GetJobCards(page, pageSize).ToList();
26-
var response = new JobCardListResponse(jobCards);
26+
27+
var pagingParameters = new JobOpportunityPagingParameter();
28+
pagingParameters.Page = page;
29+
pagingParameters.PageSize = pageSize;
30+
31+
// We should really take advantage of the fact that we have a PagedList
32+
var opportunities = _jobsService.GetAllJobOpportunitiesPagedByFilters(pagingParameters);
33+
34+
var jobCards = GetJobCards(opportunities);
35+
36+
37+
var response = new JobCardListResponse()
38+
{
39+
Jobs = jobCards,
40+
PageSize = opportunities.PageSize,
41+
PageNumber = opportunities.PageNumber,
42+
PagesCount= opportunities.PageCount,
43+
TotalItemCount = opportunities.TotalItemCount
44+
};
2745

2846
return Json(response);
2947
}
@@ -39,16 +57,9 @@ public IHttpActionResult Detail(string id)
3957
return Json(jobDetails);
4058
}
4159

42-
private IEnumerable<JobCardDTO> GetJobCards(int page, int pageSize)
60+
private IEnumerable<JobCardDTO> GetJobCards(IEnumerable<JobOpportunity> jobOpportunities)
4361
{
44-
var pagingParameters = new JobOpportunityPagingParameter();
45-
pagingParameters.Page = page;
46-
pagingParameters.PageSize = pageSize;
47-
48-
// We should really take advantage of the fact that we have a PagedList
49-
var opportunities = _jobsService.GetAllJobOpportunitiesPagedByFilters(pagingParameters);
50-
51-
var jobCards = opportunities.Select(x => _adapter.GetJobCard(x));
62+
var jobCards = jobOpportunities.Select(x => _adapter.GetJobCard(x));
5263
return jobCards;
5364
}
5465
}

Mobile/Api.Contract/JobCardListResponse.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ namespace Api.Contract
55
{
66
public class JobCardListResponse
77
{
8-
public JobCardListResponse() { }
9-
public JobCardListResponse(List<JobCardDTO> jobs)
10-
{
11-
Jobs = jobs;
12-
}
13-
public List<JobCardDTO> Jobs;
14-
}
8+
public int PageSize { get; set; }
9+
public int PagesCount { get; set; }
10+
public int PageNumber { get; set; }
11+
public int TotalItemCount { get; set; }
12+
public IEnumerable<JobCardDTO> Jobs;
13+
}
1514
}

0 commit comments

Comments
 (0)