Skip to content

Commit 931e60e

Browse files
authored
Merge pull request #251 from DiyorMarket/roma
employee and car pages updated
2 parents 9efbc72 + 6bd7e32 commit 931e60e

33 files changed

+619
-845
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,32 @@
1-
using CheckDrive.ApiContracts;
2-
using CheckDrive.ApiContracts.Car;
1+
using CheckDrive.Web.Mappings;
2+
using CheckDrive.Web.Requests.Cars;
33
using CheckDrive.Web.Stores.Cars;
4+
using CheckDrive.Web.Stores.OilMarks;
45
using Microsoft.AspNetCore.Mvc;
6+
using Microsoft.AspNetCore.Mvc.Rendering;
57

68
namespace CheckDrive.Web.Controllers;
79

8-
public class CarsController : Controller
10+
public class CarsController(ICarStore carStore, IOilMarkStore oilMarkStore) : Controller
911
{
10-
private readonly ICarDataStore _carDataStore;
11-
12-
public CarsController(ICarDataStore carDataStore)
12+
public async Task<IActionResult> Index()
1313
{
14-
_carDataStore = carDataStore;
15-
}
16-
17-
public async Task<IActionResult> Index(string? searchString, int? pageNumber)
18-
{
19-
var cars = await _carDataStore.GetCarsAsync(searchString, pageNumber);
20-
21-
ViewBag.SearchString = searchString;
14+
var cars = await carStore.GetAsync();
2215

23-
ViewBag.PageSize = cars.PageSize;
24-
ViewBag.PageCount = cars.TotalPages;
25-
ViewBag.TotalCount = cars.TotalCount;
26-
ViewBag.CurrentPage = cars.PageNumber;
27-
ViewBag.HasPreviousPage = cars.HasPreviousPage;
28-
ViewBag.HasNextPage = cars.HasNextPage;
29-
30-
var _cars = cars.Data.Select(c => new
31-
{
32-
c.Id,
33-
c.Model,
34-
c.Number,
35-
c.Mileage,
36-
c.Color,
37-
c.RemainingFuel,
38-
c.MeduimFuelConsumption,
39-
c.FuelTankCapacity,
40-
c.ManufacturedYear,
41-
Status = ((CarStatusDto)c.CarStatus) switch
42-
{
43-
CarStatusDto.Free => "Bo'sh",
44-
CarStatusDto.Busy => "Band",
45-
CarStatusDto.Limited => "Limit tugagan",
46-
_ => "No`malum holat"
47-
}
48-
}).ToList();
49-
50-
ViewBag.Cars = _cars;
51-
return View();
52-
}
53-
54-
public async Task<IActionResult> CarHistoryIndex(string? searchString, int? pageNumber, int? year, int? month)
55-
{
56-
var cars = await _carDataStore.GetCarsHistoryAsync(searchString, pageNumber, year, month);
57-
58-
ViewBag.SearchString = searchString;
59-
ViewBag.Cars = cars.Data;
60-
61-
ViewBag.PageSize = cars.PageSize;
62-
ViewBag.PageCount = cars.TotalPages;
63-
ViewBag.TotalCount = cars.TotalCount;
64-
ViewBag.CurrentPage = cars.PageNumber;
65-
ViewBag.HasPreviousPage = cars.HasPreviousPage;
66-
ViewBag.HasNextPage = cars.HasNextPage;
16+
ViewBag.Cars = cars;
6717
return View();
6818
}
6919

7020
public async Task<IActionResult> Details(int id)
7121
{
72-
var car = await _carDataStore.GetCarAsync(id);
73-
if (car == null)
74-
{
75-
return NotFound();
76-
}
22+
var car = await carStore.GetByIdAsync(id);
23+
7724
return View(car);
7825
}
7926

8027
public async Task<IActionResult> DetailsForMechanicAcceptance(int id)
8128
{
82-
var car = await _carDataStore.GetCarAsync(id);
29+
var car = await carStore.GetByIdAsync(id);
8330
if (car == null)
8431
{
8532
return NotFound();
@@ -89,56 +36,63 @@ public async Task<IActionResult> DetailsForMechanicAcceptance(int id)
8936

9037
public async Task<IActionResult> DetailsForMechanicHandover(int id)
9138
{
92-
var car = await _carDataStore.GetCarAsync(id);
39+
var car = await carStore.GetByIdAsync(id);
9340
if (car == null)
9441
{
9542
return NotFound();
9643
}
9744
return PartialView("_CarDetailsForMechanicHandover", car);
9845
}
9946

100-
public IActionResult Create()
47+
public async Task<IActionResult> Create()
10148
{
49+
var oilMarks = await GetOilMarkAsync();
50+
ViewBag.OilMarks = oilMarks;
51+
10252
return View();
10353
}
10454

10555
[HttpPost]
10656
[ValidateAntiForgeryToken]
107-
public async Task<IActionResult> Create([Bind("Model,Color,Number,RemainingFuel,Mileage, MeduimFuelConsumption,FuelTankCapacity,ManufacturedYear, OneYearMediumDistance")] CarForCreateDto car)
57+
public async Task<IActionResult> Create([FromForm] CreateCarRequest request)
10858
{
10959
if (ModelState.IsValid)
11060
{
111-
var newCar = await _carDataStore.CreateCarAsync(car);
61+
var newCar = await carStore.CreateAsync(request);
11262
return RedirectToAction(nameof(Index));
11363
}
114-
return View(car);
64+
return BadRequest(ModelState);
11565
}
11666

11767
public async Task<IActionResult> Edit(int id)
11868
{
119-
var car = await _carDataStore.GetCarAsync(id);
120-
if (car == null)
121-
{
122-
return NotFound();
123-
}
124-
return View(car);
69+
var car = await carStore.GetByIdAsync(id);
70+
var oilMarks = await GetOilMarkAsync();
71+
72+
ViewBag.OilMarks = oilMarks;
73+
var carRequest = car.ToUpdateViewModel();
74+
75+
return View(carRequest);
12576
}
12677

12778
[HttpPost]
12879
[ValidateAntiForgeryToken]
129-
public async Task<IActionResult> Edit(int id, [Bind("Id,Model,Color,Number,RemainingFuel,Mileage, MeduimFuelConsumption,FuelTankCapacity,ManufacturedYear, OneYearMediumDistance")] CarForUpdateDto car)
80+
public async Task<IActionResult> Edit([FromForm] UpdateCarRequest request)
13081
{
131-
if (ModelState.IsValid)
82+
try
13283
{
133-
var newCar = await _carDataStore.UpdateCarAsync(id, car);
84+
await carStore.UpdateAsync(request);
13485
return RedirectToAction(nameof(Index));
13586
}
136-
return View(car);
87+
catch(Exception ex)
88+
{
89+
return BadRequest();
90+
}
13791
}
13892

13993
public async Task<IActionResult> Delete(int id)
14094
{
141-
var car = await _carDataStore.GetCarAsync(id);
95+
var car = await carStore.GetByIdAsync(id);
14296
if (car == null)
14397
{
14498
return NotFound();
@@ -150,7 +104,20 @@ public async Task<IActionResult> Delete(int id)
150104
[ValidateAntiForgeryToken]
151105
public async Task<IActionResult> DeleteConfirmed(int id)
152106
{
153-
await _carDataStore.DeleteCarAsync(id);
107+
await carStore.DeleteAsync(id);
154108
return RedirectToAction(nameof(Index));
155109
}
156-
}
110+
111+
private async Task<List<SelectListItem>> GetOilMarkAsync()
112+
{
113+
var oilMarks = await oilMarkStore.GetAsync();
114+
115+
return oilMarks
116+
.Select(e => new SelectListItem()
117+
{
118+
Value = e.Id.ToString(),
119+
Text = e.Name.ToString()
120+
})
121+
.ToList();
122+
}
123+
}

CheckDrive.Web/CheckDrive.Web/Controllers/EmployeesController.cs

+11-21
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,19 @@
1010

1111
namespace CheckDrive.Web.Controllers;
1212

13-
public class EmployeesController : Controller
13+
public class EmployeesController(IEmployeeStore employeeStore, ICarStore carStore) : Controller
1414
{
15-
private readonly IEmployeeStore _employeeStore;
16-
private readonly ICarDataStore _carStore;
17-
18-
public EmployeesController(IEmployeeStore employeeStore, ICarDataStore carStore)
19-
{
20-
_employeeStore = employeeStore ?? throw new ArgumentNullException(nameof(employeeStore));
21-
_carStore = carStore ?? throw new ArgumentNullException(nameof(carStore));
22-
}
23-
2415
public async Task<ActionResult> Index()
2516
{
26-
var employees = await _employeeStore.GetAsync();
17+
var employees = await employeeStore.GetAsync();
2718
ViewBag.Positions = GetPositions();
2819

2920
return View(employees);
3021
}
3122

3223
public async Task<ActionResult> Details(int id)
3324
{
34-
var employee = await _employeeStore.GetByIdAsync(id);
25+
var employee = await employeeStore.GetByIdAsync(id);
3526

3627
return View(employee);
3728
}
@@ -50,9 +41,9 @@ public async Task<ActionResult> Create(CreateEmployeeRequest request)
5041
{
5142
try
5243
{
53-
var createdEmployee = await _employeeStore.CreateAsync(request);
54-
55-
return RedirectToAction(nameof(Details), new { id = createdEmployee.Id });
44+
var createdEmployee = await employeeStore.CreateAsync(request);
45+
46+
return RedirectToAction(nameof(Index));
5647
}
5748
catch
5849
{
@@ -62,7 +53,7 @@ public async Task<ActionResult> Create(CreateEmployeeRequest request)
6253

6354
public async Task<ActionResult> Edit(int id)
6455
{
65-
var employee = await _employeeStore.GetByIdAsync(id);
56+
var employee = await employeeStore.GetByIdAsync(id);
6657
ViewBag.Positions = GetPositions();
6758
ViewBag.Cars = await GetCarsAsync();
6859

@@ -77,8 +68,7 @@ public async Task<ActionResult> Edit(UpdateEmployeeRequest request)
7768
{
7869
try
7970
{
80-
await _employeeStore.UpdateAsync(request);
81-
71+
await employeeStore.UpdateAsync(request);
8272
return RedirectToAction(nameof(Index));
8373
}
8474
catch
@@ -89,7 +79,7 @@ public async Task<ActionResult> Edit(UpdateEmployeeRequest request)
8979

9080
public async Task<ActionResult> Delete(int id)
9181
{
92-
var employee = await _employeeStore.GetByIdAsync(id);
82+
var employee = await employeeStore.GetByIdAsync(id);
9383

9484
return View(employee);
9585
}
@@ -100,7 +90,7 @@ public async Task<ActionResult> Delete(int id, IFormCollection _)
10090
{
10191
try
10292
{
103-
await _employeeStore.DeleteAsync(id);
93+
await employeeStore.DeleteAsync(id);
10494
return RedirectToAction(nameof(Index));
10595
}
10696
catch
@@ -127,7 +117,7 @@ private static List<SelectListItem> GetPositions()
127117

128118
private async Task<List<SelectListItem>> GetCarsAsync()
129119
{
130-
var cars = await _carStore.GetAsync();
120+
var cars = await carStore.GetAsync();
131121

132122
return cars
133123
.Select(e => new SelectListItem()

0 commit comments

Comments
 (0)