Skip to content

Commit e9d91af

Browse files
authored
Merge pull request #103 from DiyorMarket/Fix-pagination-in-all-pages
Fix pagination in all pages
2 parents b71d71c + 0d09757 commit e9d91af

15 files changed

+77
-81
lines changed

CheckDrive.Web/CheckDrive.Web/Controllers/DoctorReviewsController.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public DoctorReviewsController(IDoctorReviewDataStore doctorReviewDataStore, IDo
2525

2626
public async Task<IActionResult> Index(int? pageNumber, string? searchString, DateTime? date)
2727
{
28-
var response = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, date, 1);
28+
var response = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, date, null, 1);
2929

3030
ViewBag.PageSize = response.PageSize;
3131
ViewBag.PageCount = response.TotalPages;
@@ -51,7 +51,7 @@ public async Task<IActionResult> Index(int? pageNumber, string? searchString, Da
5151

5252
public async Task<IActionResult> PersonalIndex(int? pageNumber, string? searchString)
5353
{
54-
var reviewsResponse = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, null, 3);
54+
var reviewsResponse = await _doctorReviewDataStore.GetDoctorReviewsAsync(pageNumber, searchString, null, null, 3);
5555

5656
ViewBag.PageSize = reviewsResponse.PageSize;
5757
ViewBag.PageCount = reviewsResponse.TotalPages;
@@ -208,7 +208,7 @@ private async Task<bool> DoctorReviewExists(int id)
208208

209209
private async Task<List<SelectListItem>> GetDriversNotUsedToday()
210210
{
211-
var doctorReviews = await _doctorReviewDataStore.GetDoctorReviewsAsync(null, null, null, 1);
211+
var doctorReviews = await _doctorReviewDataStore.GetDoctorReviewsAsync(null, null, null, null, 1);
212212
var today = DateTime.Today;
213213
var usedDriverIds = doctorReviews.Data
214214
.Where(dr => dr.Date.Date == today)

CheckDrive.Web/CheckDrive.Web/Controllers/MechanicAcceptancesController.cs

+6-9
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public MechanicAcceptancesController(IMechanicAcceptanceDataStore mechanicAccept
3333
public async Task<IActionResult> Index(int? pageNumber, string? searchString, DateTime? date)
3434
{
3535

36-
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, date, 1);
36+
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, date, null, 1);
3737

3838
ViewBag.PageSize = response.PageSize;
3939
ViewBag.PageCount = response.TotalPages;
@@ -71,7 +71,7 @@ public async Task<IActionResult> Index(int? pageNumber, string? searchString, Da
7171

7272
public async Task<IActionResult> PersonalIndex(string? searchString, int? pageNumber)
7373
{
74-
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, null, 6);
74+
var response = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(pageNumber, searchString, null, null, 6);
7575

7676
ViewBag.PageSize = response.PageSize;
7777
ViewBag.PageCount = response.TotalPages;
@@ -88,13 +88,12 @@ public async Task<IActionResult> Create(int? driverId, int? carId, string carNam
8888
var drivers = await GETDrivers();
8989
var cars = await GETCars();
9090

91-
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null, null,null, 1);
92-
var mechanicAcceptances = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync();
91+
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null, null, DateTime.Today, true, 1);
92+
var mechanicAcceptances = await _mechanicAcceptanceDataStore.GetMechanicAcceptancesAsync(null, null, DateTime.Today, true, 1);
9393

9494
var accountIdStr = TempData["AccountId"] as string;
9595
TempData.Keep("AccountId");
9696

97-
// Creating a mapping from drivers to cars
9897
var driverCarMapping = drivers.ToDictionary(d => int.Parse(d.Value), d => cars.FirstOrDefault(c => c.Value == d.Value)?.Value);
9998

10099
if (int.TryParse(accountIdStr, out int accountId))
@@ -104,12 +103,10 @@ public async Task<IActionResult> Create(int? driverId, int? carId, string carNam
104103
if (mechanic != null)
105104
{
106105
var healthyDrivers = operatorReviews.Data
107-
.Where(dr => dr.IsGiven.HasValue && dr.IsGiven.Value && dr.Date.HasValue && dr.Date.Value.Date == DateTime.Today)
108106
.Select(dr => dr.DriverId)
109107
.ToList();
110108

111109
var acceptedDrivers = mechanicAcceptances.Data
112-
.Where(ma => ma.Date.HasValue && ma.Date.Value.Date == DateTime.Today)
113110
.Select(ma => ma.DriverId)
114111
.ToList();
115112

@@ -297,8 +294,8 @@ private async Task<List<SelectListItem>> GETDrivers()
297294

298295
public async Task<IActionResult> GetCarByDriverId(int driverId)
299296
{
300-
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null,null, null, null);
301-
var operatorr = operatorReviews.Data.FirstOrDefault(m => m.DriverId == driverId && m.Date.Value.Date == DateTime.Today);
297+
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(null,null, DateTime.Today, true, 1);
298+
var operatorr = operatorReviews.Data.FirstOrDefault(m => m.DriverId == driverId);
302299

303300
if (operatorr != null)
304301
{

CheckDrive.Web/CheckDrive.Web/Controllers/MechanicHandoversController.cs

+4-24
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public MechanicHandoversController(IMechanicHandoverDataStore mechanicHandoverDa
2929

3030
public async Task<IActionResult> Index(int? pageNumber, string? searchString, DateTime? date)
3131
{
32-
var response = await _mechanicHandoverDataStore.GetMechanicHandoversAsync(pageNumber, searchString, date, 1);
32+
var response = await _mechanicHandoverDataStore.GetMechanicHandoversAsync(pageNumber, searchString, date, null, 1);
3333

3434
ViewBag.PageSize = response.PageSize;
3535
ViewBag.PageCount = response.TotalPages;
@@ -66,7 +66,7 @@ public async Task<IActionResult> Index(int? pageNumber, string? searchString, Da
6666

6767
public async Task<IActionResult> PersonalIndex(string? searchString, int? pageNumber)
6868
{
69-
var response = await _mechanicHandoverDataStore.GetMechanicHandoversAsync(pageNumber, searchString, null, 6);
69+
var response = await _mechanicHandoverDataStore.GetMechanicHandoversAsync(pageNumber, searchString, null, null, 6);
7070

7171
ViewBag.PageSize = response.PageSize;
7272
ViewBag.PageCount = response.TotalPages;
@@ -80,12 +80,11 @@ public async Task<IActionResult> PersonalIndex(string? searchString, int? pageNu
8080

8181
public async Task<IActionResult> Create(int? driverId)
8282
{
83-
var mechanics = await GETMechanics();
8483
var drivers = await GETDrivers();
8584
var cars = await GETCars();
8685

87-
var doctorReviews = await _doctorReviewDataStore.GetDoctorReviewsAsync(null, null, null, 1);
88-
var mechanicHandovers = await _mechanicHandoverDataStore.GetMechanicHandoversAsync();
86+
var doctorReviews = await _doctorReviewDataStore.GetDoctorReviewsAsync(null, null, DateTime.Today, true, 1);
87+
var mechanicHandovers = await _mechanicHandoverDataStore.GetMechanicHandoversAsync(null, null, DateTime.Today, true, 1);
8988

9089
var accountIdStr = TempData["AccountId"] as string;
9190
TempData.Keep("AccountId");
@@ -97,12 +96,10 @@ public async Task<IActionResult> Create(int? driverId)
9796
if (mechanic != null)
9897
{
9998
var healthyDrivers = doctorReviews.Data
100-
.Where(dr => dr.IsHealthy.HasValue && dr.IsHealthy.Value && dr.Date.Date == DateTime.Today)
10199
.Select(dr => dr.DriverId)
102100
.ToList();
103101

104102
var handedDrivers = mechanicHandovers.Data
105-
.Where(ma => ma.Date.Date == DateTime.Today)
106103
.Select(ma => ma.DriverId)
107104
.ToList();
108105

@@ -111,15 +108,12 @@ public async Task<IActionResult> Create(int? driverId)
111108
.ToList();
112109

113110
var usedCarIds = mechanicHandovers.Data
114-
.Where(mh => mh.Date.Date == DateTime.Today && mh.IsHanded == true)
115111
.Select(mh => mh.CarId)
116112
.ToList();
117113

118114
var filteredCars = cars
119115
.Where(c => !usedCarIds.Contains(int.Parse(c.Value)))
120116
.ToList();
121-
122-
ViewBag.Mechanics = new SelectList(mechanics, "Value", "Text");
123117
ViewBag.Drivers = new SelectList(filteredDrivers, "Value", "Text", driverId);
124118
ViewBag.Cars = new SelectList(filteredCars, "Value", "Text");
125119

@@ -150,10 +144,8 @@ public async Task<IActionResult> Create([Bind("IsHanded,Comments,MechanicId,Dist
150144
return RedirectToAction(nameof(PersonalIndex));
151145
}
152146

153-
var mechanics = await GETMechanics();
154147
var drivers = await GETDrivers();
155148
var cars = await GETCars();
156-
ViewBag.Mechanics = new SelectList(mechanics, "Value", "Text");
157149
ViewBag.Drivers = new SelectList(drivers, "Value", "Text", mechanicHandoverForCreateDto.DriverId);
158150
ViewBag.Cars = new SelectList(cars, "Value", "Text");
159151

@@ -226,18 +218,6 @@ private async Task<bool> MechanicHandoverExists(int id)
226218
return mechanicAcceptance != null;
227219
}
228220

229-
private async Task<List<SelectListItem>> GETMechanics()
230-
{
231-
var mechanicResponse = await _mechanicDataStore.GetMechanicsAsync();
232-
var mechanics = mechanicResponse.Data
233-
.Select(d => new SelectListItem
234-
{
235-
Value = d.Id.ToString(),
236-
Text = $"{d.FirstName} {d.LastName}"
237-
})
238-
.ToList();
239-
return mechanics;
240-
}
241221
private async Task<List<SelectListItem>> GETCars()
242222
{
243223
var carResponse = await _carDataStore.GetCarsAsync(null, null);

CheckDrive.Web/CheckDrive.Web/Controllers/OperatorReviewsController.cs

+7-21
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using CheckDrive.Web.Stores.Operators;
1111
using Microsoft.AspNetCore.Mvc;
1212
using Microsoft.AspNetCore.Mvc.Rendering;
13+
using Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
1314

1415
namespace CheckDrive.Web.Controllers
1516
{
@@ -29,7 +30,7 @@ public class OperatorReviewsController(
2930
public async Task<IActionResult> Index(int? pageNumber, string? searchString, DateTime? date)
3031
{
3132

32-
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(pageNumber, searchString, date, 1);
33+
var operatorReviews = await _operatorReviewDataStore.GetOperatorReviews(pageNumber, searchString, date, null, 1);
3334

3435
ViewBag.PageSize = operatorReviews.PageSize;
3536
ViewBag.PageCount = operatorReviews.TotalPages;
@@ -63,7 +64,7 @@ public async Task<IActionResult> Index(int? pageNumber, string? searchString, Da
6364

6465
public async Task<IActionResult> PersonalIndex(int? pageNumber, string? searchString)
6566
{
66-
var reviewsResponse = await _operatorReviewDataStore.GetOperatorReviews(pageNumber, searchString, null, 4);
67+
var reviewsResponse = await _operatorReviewDataStore.GetOperatorReviews(pageNumber, searchString, null, null, 4);
6768

6869
ViewBag.PageSize = reviewsResponse.PageSize;
6970
ViewBag.PageCount = reviewsResponse.TotalPages;
@@ -104,17 +105,15 @@ public async Task<IActionResult> Create(int? driverId, string? driverName, int?
104105
new SelectListItem { Value = operatorr.Id.ToString(), Text = $"{operatorr.FirstName} {operatorr.LastName}" }
105106
};
106107

107-
var response = await _operatorReviewDataStore.GetOperatorReviews(null, null, null, 1);
108+
var response = await _operatorReviewDataStore.GetOperatorReviews(null, null, DateTime.Today, true, 1);
108109
var oilMarks = GetOilMarks();
109-
var mechanicHandovers = await _mechanicHandover.GetMechanicHandoversAsync();
110+
var mechanicHandovers = await _mechanicHandover.GetMechanicHandoversAsync(null, null, DateTime.Today, null, 1);
110111

111112
var healthyDrivers = mechanicHandovers.Data
112-
.Where(dr => dr.IsHanded == true && dr.Date.Date == DateTime.Today)
113113
.Select(dr => dr.DriverId)
114114
.ToList();
115115

116116
var givedDrivers = response.Data
117-
.Where(ma => ma.Date.HasValue && ma.Date.Value.Date == DateTime.Today)
118117
.Select(ma => ma.DriverId)
119118
.ToList();
120119

@@ -171,8 +170,8 @@ public async Task<IActionResult> Create(int? driverId, string? driverName, int?
171170

172171
public async Task<IActionResult> GetCarByDriverId(int driverId)
173172
{
174-
var mechanicHandovers = await _mechanicHandover.GetMechanicHandoversAsync();
175-
var handover = mechanicHandovers.Data.FirstOrDefault(m => m.DriverId == driverId && m.Date.Date == DateTime.Today);
173+
var mechanicHandovers = await _mechanicHandover.GetMechanicHandoversAsync(null, null, DateTime.Today, true, 1);
174+
var handover = mechanicHandovers.Data.FirstOrDefault(m => m.DriverId == driverId);
176175

177176
if (handover != null)
178177
{
@@ -303,19 +302,6 @@ private async Task<List<SelectListItem>> GETDrivers()
303302
return drivers;
304303
}
305304

306-
private async Task<List<SelectListItem>> GETOperators()
307-
{
308-
var operatorResponse = await _operatorDataStore.GetOperators();
309-
var operators = operatorResponse.Data
310-
.Select(d => new SelectListItem
311-
{
312-
Value = d.Id.ToString(),
313-
Text = $"{d.FirstName} {d.LastName}"
314-
})
315-
.ToList();
316-
return operators;
317-
}
318-
319305
private async Task<List<SelectListItem>> GETCars()
320306
{
321307
var carResponse = await _carDataStore.GetCarsAsync(null, null);

CheckDrive.Web/CheckDrive.Web/Controllers/RolesController.cs

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
using CheckDrive.ApiContracts.Role;
2-
using CheckDrive.DTOs.Role;
3-
using CheckDrive.Web.Models;
4-
using CheckDrive.Web.Stores.Roles;
1+
using CheckDrive.Web.Stores.Roles;
52
using Microsoft.AspNetCore.Mvc;
63

74
namespace CheckDrive.Web.Controllers

CheckDrive.Web/CheckDrive.Web/Stores/DoctorReviews/DoctorReviewDataStore.cs

+7-9
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,24 @@ public class DoctorReviewDataStore(ApiClient api) : IDoctorReviewDataStore
1111
{
1212
private readonly ApiClient _api = api;
1313

14-
public async Task<GetDoctorReviewResponse> GetDoctorReviewsAsync(int? pageNumber, string? searchString, DateTime? date, int? roleId)
14+
public async Task<GetDoctorReviewResponse> GetDoctorReviewsAsync(int? pageNumber, string? searchString, DateTime? date, bool? isHealthy, int? roleId)
1515
{
1616
StringBuilder query = new("");
1717

18+
if(isHealthy is not null)
19+
query.Append($"isHealthy={isHealthy}&");
20+
1821
if (roleId != 0)
19-
{
2022
query.Append($"roleId={roleId}&");
21-
}
23+
2224
if (date is not null)
23-
{
2425
query.Append($"date={date.Value.ToString("MM/dd/yyyy")}&");
25-
}
26+
2627
if (!string.IsNullOrWhiteSpace(searchString))
27-
{
2828
query.Append($"searchString={searchString}&");
29-
}
29+
3030
if (pageNumber != null)
31-
{
3231
query.Append($"pageNumber={pageNumber}");
33-
}
3432

3533
var response = await _api.GetAsync("doctors/reviews?OrderBy=datedesc&" + query.ToString());
3634

CheckDrive.Web/CheckDrive.Web/Stores/DoctorReviews/IDoctorReviewDataStore.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace CheckDrive.Web.Stores.DoctorReviews
55
{
66
public interface IDoctorReviewDataStore
77
{
8-
Task<GetDoctorReviewResponse> GetDoctorReviewsAsync(int? pageNumber, string? searchString, DateTime? date, int? roleId);
8+
Task<GetDoctorReviewResponse> GetDoctorReviewsAsync(int? pageNumber, string? searchString, DateTime? date, bool? isHealthy, int? roleId);
99
Task<IEnumerable<DoctorReviewDto>>? GetTodayReviewsAsync();
1010
Task<DoctorReviewDto> GetDoctorReviewAsync(int id);
1111
Task<DoctorReviewDto> CreateDoctorReviewAsync(DoctorReviewForCreateDto review);

CheckDrive.Web/CheckDrive.Web/Stores/MechanicAcceptances/IMechanicAcceptanceDataStore.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace CheckDrive.Web.Stores.MechanicAcceptances
55
{
66
public interface IMechanicAcceptanceDataStore
77
{
8-
Task<GetMechanicAcceptanceResponse> GetMechanicAcceptancesAsync(int? pageNumber, string? searchString, DateTime? date, int? roleId);
8+
Task<GetMechanicAcceptanceResponse> GetMechanicAcceptancesAsync(int? pageNumber, string? searchString, DateTime? date, bool? isAccepted, int? roleId);
99
Task<GetMechanicAcceptanceResponse> GetMechanicAcceptancesAsync();
1010
Task<MechanicAcceptanceDto> GetMechanicAcceptanceAsync(int id);
1111
Task<MechanicAcceptanceDto> CreateMechanicAcceptanceAsync(MechanicAcceptanceForCreateDto acceptanceForCreateDto);

CheckDrive.Web/CheckDrive.Web/Stores/MechanicAcceptances/MechanicAcceptanceDataStore.cs

+4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ public async Task<GetMechanicAcceptanceResponse> GetMechanicAcceptancesAsync(
1919
int? pageNumber,
2020
string? searchString,
2121
DateTime? date,
22+
bool? isAccepted,
2223
int? roleId)
2324
{
2425
StringBuilder query = new StringBuilder();
2526

27+
if (isAccepted is not null)
28+
query.Append($"isHealthy={isAccepted}&");
29+
2630
if (roleId != 0)
2731
query.Append($"roleId={roleId}&");
2832

CheckDrive.Web/CheckDrive.Web/Stores/MechanicHandovers/IMechanicHandoverDataStore.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace CheckDrive.Web.Stores.MechanicHandovers
55
{
66
public interface IMechanicHandoverDataStore
77
{
8-
Task<GetMechanicHandoverResponse> GetMechanicHandoversAsync(int? pageNumber, string? searchString, DateTime? date, int? roleId);
8+
Task<GetMechanicHandoverResponse> GetMechanicHandoversAsync(int? pageNumber, string? searchString, DateTime? date, bool? isHanded, int? roleId);
99
Task<GetMechanicHandoverResponse> GetMechanicHandoversAsync();
1010
Task<MechanicHandoverDto> GetMechanicHandoverAsync(int id);
1111
Task<MechanicHandoverDto> CreateMechanicHandoverAsync(MechanicHandoverForCreateDto mechanicHandoverForCreateDto);

CheckDrive.Web/CheckDrive.Web/Stores/MechanicHandovers/MechanicHandoverDataStore.cs

+4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@ public async Task<GetMechanicHandoverResponse> GetMechanicHandoversAsync(
1919
int? pageNumber,
2020
string? searchString,
2121
DateTime? date,
22+
bool? isHanded,
2223
int? roleId)
2324
{
2425
StringBuilder query = new("");
2526

27+
if (isHanded is not null)
28+
query.Append($"isHealthy={isHanded}&");
29+
2630
if (roleId != 0)
2731
query.Append($"roleId={roleId}&");
2832

CheckDrive.Web/CheckDrive.Web/Stores/OperatorReviews/IOperatorReviewDataStore.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace CheckDrive.Web.Stores.OperatorReviews
66
{
77
public interface IOperatorReviewDataStore
88
{
9-
Task<GetOperatorReviewResponse> GetOperatorReviews(int? pageNumber, string? searchString, DateTime? date, int? roleId);
9+
Task<GetOperatorReviewResponse> GetOperatorReviews(int? pageNumber, string? searchString, DateTime? date, bool? isGiven, int? roleId);
1010
Task<OperatorReviewDto> GetOperatorReview(int id);
1111
Task<OperatorReviewDto> CreateOperatorReview(OperatorReviewForCreateDto review);
1212
Task<OperatorReview> UpdateOperatorReview(int id, OperatorReview operatorReview);

CheckDrive.Web/CheckDrive.Web/Stores/OperatorReviews/OperatorReviewDataStore.cs

+4
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,14 @@ public async Task<GetOperatorReviewResponse> GetOperatorReviews(
1515
int? pageNumber,
1616
string? searchString,
1717
DateTime? date,
18+
bool? isGiven,
1819
int? roleId)
1920
{
2021
StringBuilder query = new("");
2122

23+
if (isGiven is not null)
24+
query.Append($"isGiven={isGiven}&");
25+
2226
if (roleId != 0)
2327
query.Append($"roleId={roleId}&");
2428

CheckDrive.Web/CheckDrive.Web/Views/MechanicAcceptances/Create.cshtml

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
<a asp-action="PersonalIndex" class="btn btn-outline-info">
6565
<i class="fa-solid fa-arrow-left-long"></i> Orqaga
6666
</a>
67-
<button class="btn btn-outline-success" type="submit">
67+
<button class="btn btn-success" type="submit">
6868
<i class="fa fa-plus"></i> Yaratish
6969
</button>
7070
</div>

0 commit comments

Comments
 (0)