@@ -33,7 +33,7 @@ public MechanicAcceptancesController(IMechanicAcceptanceDataStore mechanicAccept
33
33
public async Task < IActionResult > Index ( int ? pageNumber , string ? searchString , DateTime ? date )
34
34
{
35
35
36
- var response = await _mechanicAcceptanceDataStore . GetMechanicAcceptancesAsync ( pageNumber , searchString , date , 1 ) ;
36
+ var response = await _mechanicAcceptanceDataStore . GetMechanicAcceptancesAsync ( pageNumber , searchString , date , null , 1 ) ;
37
37
38
38
ViewBag . PageSize = response . PageSize ;
39
39
ViewBag . PageCount = response . TotalPages ;
@@ -71,68 +71,84 @@ public async Task<IActionResult> Index(int? pageNumber, string? searchString, Da
71
71
72
72
public async Task < IActionResult > PersonalIndex ( string ? searchString , int ? pageNumber )
73
73
{
74
+ var response = await _mechanicAcceptanceDataStore . GetMechanicAcceptancesAsync ( pageNumber , searchString , null , null , 6 ) ;
74
75
75
- var response = await _mechanicAcceptanceDataStore . GetMechanicAcceptancesAsync ( pageNumber , searchString , null , 6 ) ;
76
+ ViewBag . PageSize = response . PageSize ;
77
+ ViewBag . PageCount = response . TotalPages ;
78
+ ViewBag . TotalCount = response . TotalCount ;
79
+ ViewBag . CurrentPage = response . PageNumber ;
80
+ ViewBag . HasPreviousPage = response . HasPreviousPage ;
81
+ ViewBag . HasNextPage = response . HasNextPage ;
76
82
77
83
return View ( response . Data ) ;
78
84
}
79
- public async Task < IActionResult > Create ( int ? driverId , int ? carId )
85
+ public async Task < IActionResult > Create ( int ? driverId , int ? carId , string carName )
80
86
{
81
87
var mechanics = await GETMechanics ( ) ;
82
88
var drivers = await GETDrivers ( ) ;
83
89
var cars = await GETCars ( ) ;
84
90
85
- var operatorReviews = await _operatorReviewDataStore . GetOperatorReviews ( null , null , null , 1 ) ;
86
- 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 ) ;
87
93
88
94
var accountIdStr = TempData [ "AccountId" ] as string ;
89
95
TempData . Keep ( "AccountId" ) ;
90
96
97
+ var driverCarMapping = drivers . ToDictionary ( d => int . Parse ( d . Value ) , d => cars . FirstOrDefault ( c => c . Value == d . Value ) ? . Value ) ;
98
+
91
99
if ( int . TryParse ( accountIdStr , out int accountId ) )
92
100
{
93
101
var mechanicResponse = await _mechanicDataStore . GetMechanics ( accountId ) ;
94
102
var mechanic = mechanicResponse . Data . FirstOrDefault ( ) ;
95
-
96
103
if ( mechanic != null )
97
104
{
98
105
var healthyDrivers = operatorReviews . Data
99
- . Where ( dr => dr . IsGiven . HasValue && dr . IsGiven . Value && dr . Date . HasValue && dr . Date . Value . Date == DateTime . Today )
100
106
. Select ( dr => dr . DriverId )
101
107
. ToList ( ) ;
102
108
103
109
var acceptedDrivers = mechanicAcceptances . Data
104
- . Where ( ma => ma . Date . HasValue && ma . Date . Value . Date == DateTime . Today )
105
110
. Select ( ma => ma . DriverId )
106
111
. ToList ( ) ;
107
112
108
113
var filteredDrivers = drivers
109
114
. Where ( d => healthyDrivers . Contains ( int . Parse ( d . Value ) ) && ! acceptedDrivers . Contains ( int . Parse ( d . Value ) ) )
110
115
. ToList ( ) ;
111
116
112
- if ( driverId == null && filteredDrivers . Any ( ) )
117
+ if ( driverId . HasValue && ! carId . HasValue )
113
118
{
114
- driverId = int . Parse ( filteredDrivers . First ( ) . Value ) ;
119
+ driverCarMapping . TryGetValue ( driverId . Value , out var associatedCarId ) ;
120
+ if ( int . TryParse ( associatedCarId , out int parsedCarId ) )
121
+ {
122
+ if ( parsedCarId != 1 )
123
+ {
124
+ carId = parsedCarId - 1 ;
125
+ }
126
+ else
127
+ {
128
+
129
+ carId = parsedCarId ;
130
+ }
131
+ }
115
132
}
116
133
117
- filteredDrivers = filteredDrivers . Where ( d => d . Value != driverId . ToString ( ) ) . ToList ( ) ;
134
+ ViewBag . Mechanics = new SelectList ( mechanics , "Value" , "Text" ) ;
135
+ ViewBag . Drivers = new SelectList ( filteredDrivers , "Value" , "Text" , driverId ) ;
118
136
119
- if ( carId == null && cars . Any ( ) )
137
+ if ( string . IsNullOrEmpty ( carName ) )
120
138
{
121
- carId = int . Parse ( cars . First ( ) . Value ) ;
139
+ ViewBag . Cars = new SelectList ( cars , "Value" , "Text" , carId ) ;
140
+ ViewBag . SelectedCar = cars . FirstOrDefault ( c => c . Value == carId . ToString ( ) ) ? . Text ;
141
+ }
142
+ else
143
+ {
144
+ ViewBag . Cars = carName ;
145
+ ViewBag . SelectedCarId = carId ;
122
146
}
123
147
124
- ViewBag . Mechanics = new SelectList ( mechanics , "Value" , "Text" ) ;
125
- ViewBag . Drivers = new SelectList ( filteredDrivers , "Value" , "Text" , driverId ) ;
126
- ViewBag . Cars = new SelectList ( cars , "Value" , "Text" , carId ) ;
127
-
128
- var selectedDriverName = drivers . FirstOrDefault ( d => d . Value == driverId . ToString ( ) ) ? . Text ;
148
+ var selectedDriverName = filteredDrivers . FirstOrDefault ( d => d . Value == driverId . ToString ( ) ) ? . Text ;
129
149
ViewBag . SelectedDriverName = selectedDriverName ?? string . Empty ;
130
150
ViewBag . SelectedDriverId = driverId ;
131
151
132
- var selectedCar = cars . FirstOrDefault ( c => c . Value == carId . ToString ( ) ) ? . Text ;
133
- ViewBag . SelectedCar = selectedCar ?? string . Empty ;
134
- ViewBag . SelectedCarId = carId ;
135
-
136
152
var model = new MechanicAcceptanceForCreateDto
137
153
{
138
154
DriverId = driverId ?? 0 ,
@@ -147,8 +163,6 @@ public async Task<IActionResult> Create(int? driverId, int? carId)
147
163
return NotFound ( "Mechanic not found for the specified account." ) ;
148
164
}
149
165
150
-
151
-
152
166
[ HttpPost ]
153
167
[ ValidateAntiForgeryToken ]
154
168
public async Task < IActionResult > Create ( [ Bind ( "IsAccepted,Comments,MechanicId,Distance,CarId,DriverId" ) ] MechanicAcceptanceForCreateDto mechanicAcceptanceForCreateDto )
@@ -161,30 +175,26 @@ public async Task<IActionResult> Create([Bind("IsAccepted,Comments,MechanicId,Di
161
175
}
162
176
163
177
mechanicAcceptanceForCreateDto . Date = DateTime . Now ;
164
-
165
178
await _mechanicAcceptanceDataStore . CreateMechanicAcceptanceAsync ( mechanicAcceptanceForCreateDto ) ;
166
179
return RedirectToAction ( nameof ( PersonalIndex ) ) ;
167
180
}
168
181
169
182
var mechanics = await GETMechanics ( ) ;
170
183
var drivers = await GETDrivers ( ) ;
171
184
var cars = await GETCars ( ) ;
172
-
173
185
ViewBag . Mechanics = new SelectList ( mechanics , "Value" , "Text" ) ;
174
186
ViewBag . Drivers = new SelectList ( drivers , "Value" , "Text" , mechanicAcceptanceForCreateDto . DriverId ) ;
175
187
ViewBag . Cars = new SelectList ( cars , "Value" , "Text" , mechanicAcceptanceForCreateDto . CarId ) ;
176
188
177
189
var selectedDriverName = drivers . FirstOrDefault ( d => d . Value == mechanicAcceptanceForCreateDto . DriverId . ToString ( ) ) ? . Text ;
178
190
ViewBag . SelectedDriverName = selectedDriverName ?? string . Empty ;
179
191
ViewBag . SelectedDriverId = mechanicAcceptanceForCreateDto . DriverId ;
180
-
181
- var selectedCar = cars . FirstOrDefault ( c => c . Value == mechanicAcceptanceForCreateDto . CarId . ToString ( ) ) ? . Text ;
182
- ViewBag . SelectedCar = selectedCar ?? string . Empty ;
183
- ViewBag . SelectedCarId = mechanicAcceptanceForCreateDto . CarId ;
192
+ ViewBag . SelectedCar = cars . FirstOrDefault ( c => c . Value == mechanicAcceptanceForCreateDto . CarId . ToString ( ) ) ? . Text ;
184
193
185
194
return View ( mechanicAcceptanceForCreateDto ) ;
186
195
}
187
196
197
+
188
198
[ HttpPost ]
189
199
[ ValidateAntiForgeryToken ]
190
200
public async Task < IActionResult > Edit ( int id , MechanicAcceptanceForUpdateDto mechanicAcceptance )
@@ -284,8 +294,8 @@ private async Task<List<SelectListItem>> GETDrivers()
284
294
285
295
public async Task < IActionResult > GetCarByDriverId ( int driverId )
286
296
{
287
- var operatorReviews = await _operatorReviewDataStore . GetOperatorReviews ( null , null , null , null ) ;
288
- 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 ) ;
289
299
290
300
if ( operatorr != null )
291
301
{
0 commit comments