@@ -82,23 +82,25 @@ public async Task<IActionResult> PersonalIndex(string? searchString, int? pageNu
82
82
83
83
return View ( response . Data ) ;
84
84
}
85
- public async Task < IActionResult > Create ( int ? driverId , int ? carId )
85
+ public async Task < IActionResult > Create ( int ? driverId , int ? carId , string carName )
86
86
{
87
87
var mechanics = await GETMechanics ( ) ;
88
88
var drivers = await GETDrivers ( ) ;
89
89
var cars = await GETCars ( ) ;
90
90
91
- var operatorReviews = await _operatorReviewDataStore . GetOperatorReviews ( null , null , null , 1 ) ;
91
+ var operatorReviews = await _operatorReviewDataStore . GetOperatorReviews ( null , null , null , 1 ) ;
92
92
var mechanicAcceptances = await _mechanicAcceptanceDataStore . GetMechanicAcceptancesAsync ( ) ;
93
93
94
94
var accountIdStr = TempData [ "AccountId" ] as string ;
95
95
TempData . Keep ( "AccountId" ) ;
96
96
97
+ // Creating a mapping from drivers to cars
98
+ var driverCarMapping = drivers . ToDictionary ( d => int . Parse ( d . Value ) , d => cars . FirstOrDefault ( c => c . Value == d . Value ) ? . Value ) ;
99
+
97
100
if ( int . TryParse ( accountIdStr , out int accountId ) )
98
101
{
99
102
var mechanicResponse = await _mechanicDataStore . GetMechanics ( accountId ) ;
100
103
var mechanic = mechanicResponse . Data . FirstOrDefault ( ) ;
101
-
102
104
if ( mechanic != null )
103
105
{
104
106
var healthyDrivers = operatorReviews . Data
@@ -115,26 +117,40 @@ public async Task<IActionResult> Create(int? driverId, int? carId)
115
117
. Where ( d => healthyDrivers . Contains ( int . Parse ( d . Value ) ) && ! acceptedDrivers . Contains ( int . Parse ( d . Value ) ) )
116
118
. ToList ( ) ;
117
119
118
- if ( driverId == null && filteredDrivers . Any ( ) )
120
+ if ( driverId . HasValue && ! carId . HasValue )
119
121
{
120
- driverId = int . Parse ( filteredDrivers . First ( ) . Value ) ;
122
+ driverCarMapping . TryGetValue ( driverId . Value , out var associatedCarId ) ;
123
+ if ( int . TryParse ( associatedCarId , out int parsedCarId ) )
124
+ {
125
+ if ( parsedCarId != 1 )
126
+ {
127
+ carId = parsedCarId - 1 ;
128
+ }
129
+ else
130
+ {
131
+
132
+ carId = parsedCarId ;
133
+ }
134
+ }
121
135
}
122
136
123
- filteredDrivers = filteredDrivers . Where ( d => d . Value != driverId . ToString ( ) ) . ToList ( ) ;
137
+ ViewBag . Mechanics = new SelectList ( mechanics , "Value" , "Text" ) ;
138
+ ViewBag . Drivers = new SelectList ( filteredDrivers , "Value" , "Text" , driverId ) ;
124
139
125
- if ( carId == null && cars . Any ( ) )
140
+ if ( string . IsNullOrEmpty ( carName ) )
126
141
{
127
- carId = int . Parse ( cars . First ( ) . Value ) ;
142
+ ViewBag . Cars = new SelectList ( cars , "Value" , "Text" , carId ) ;
143
+ ViewBag . SelectedCar = cars . FirstOrDefault ( c => c . Value == carId . ToString ( ) ) ? . Text ;
144
+ }
145
+ else
146
+ {
147
+ ViewBag . Cars = carName ;
148
+ ViewBag . SelectedCarId = carId ;
128
149
}
129
150
130
- ViewBag . Mechanics = new SelectList ( mechanics , "Value" , "Text" ) ;
131
- ViewBag . Drivers = new SelectList ( filteredDrivers , "Value" , "Text" , driverId ) ;
132
- ViewBag . Cars = new SelectList ( cars , "Value" , "Text" , carId ) ;
133
-
134
- ViewBag . DriverId = driverId ;
135
- ViewBag . CarId = carId ;
136
- ViewBag . SelectedDriverName = drivers . FirstOrDefault ( d => d . Value == driverId . ToString ( ) ) ? . Text ?? string . Empty ;
137
- ViewBag . SelectedCar = cars . FirstOrDefault ( c => c . Value == carId . ToString ( ) ) ? . Text ?? string . Empty ;
151
+ var selectedDriverName = filteredDrivers . FirstOrDefault ( d => d . Value == driverId . ToString ( ) ) ? . Text ;
152
+ ViewBag . SelectedDriverName = selectedDriverName ?? string . Empty ;
153
+ ViewBag . SelectedDriverId = driverId ;
138
154
139
155
var model = new MechanicAcceptanceForCreateDto
140
156
{
@@ -162,26 +178,21 @@ public async Task<IActionResult> Create([Bind("IsAccepted,Comments,MechanicId,Di
162
178
}
163
179
164
180
mechanicAcceptanceForCreateDto . Date = DateTime . Now ;
165
-
166
181
await _mechanicAcceptanceDataStore . CreateMechanicAcceptanceAsync ( mechanicAcceptanceForCreateDto ) ;
167
182
return RedirectToAction ( nameof ( PersonalIndex ) ) ;
168
183
}
169
184
170
185
var mechanics = await GETMechanics ( ) ;
171
186
var drivers = await GETDrivers ( ) ;
172
187
var cars = await GETCars ( ) ;
173
-
174
188
ViewBag . Mechanics = new SelectList ( mechanics , "Value" , "Text" ) ;
175
189
ViewBag . Drivers = new SelectList ( drivers , "Value" , "Text" , mechanicAcceptanceForCreateDto . DriverId ) ;
176
190
ViewBag . Cars = new SelectList ( cars , "Value" , "Text" , mechanicAcceptanceForCreateDto . CarId ) ;
177
191
178
192
var selectedDriverName = drivers . FirstOrDefault ( d => d . Value == mechanicAcceptanceForCreateDto . DriverId . ToString ( ) ) ? . Text ;
179
193
ViewBag . SelectedDriverName = selectedDriverName ?? string . Empty ;
180
194
ViewBag . SelectedDriverId = mechanicAcceptanceForCreateDto . DriverId ;
181
-
182
- var selectedCar = cars . FirstOrDefault ( c => c . Value == mechanicAcceptanceForCreateDto . CarId . ToString ( ) ) ? . Text ;
183
- ViewBag . SelectedCar = selectedCar ?? string . Empty ;
184
- ViewBag . SelectedCarId = mechanicAcceptanceForCreateDto . CarId ;
195
+ ViewBag . SelectedCar = cars . FirstOrDefault ( c => c . Value == mechanicAcceptanceForCreateDto . CarId . ToString ( ) ) ? . Text ;
185
196
186
197
return View ( mechanicAcceptanceForCreateDto ) ;
187
198
}
0 commit comments