Skip to content

Commit 13e6065

Browse files
authored
Merge pull request #45 from DiyorMarket/roma
update car and oilmark
2 parents 5018ac7 + ee0b302 commit 13e6065

File tree

10 files changed

+2246
-965
lines changed

10 files changed

+2246
-965
lines changed

CheckDrive.Api/CheckDrive.Api/Controllers/OilMarksController.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public async Task<ActionResult<List<OilMarkDto>>> GetAsync([FromQuery] OilMarkQu
1717
return Ok(oilMarks);
1818
}
1919

20-
[HttpGet("{id:int}", Name = "GetOilMarkById")]
21-
public async Task<ActionResult<OilMarkDto>> GetByIdAsync(int id)
20+
[HttpGet("{id:int}", Name = "GetOilMarkByIdAsync")]
21+
public async Task<ActionResult<OilMarkDto>> GetOilMarkByIdAsync(int id)
2222
{
2323
var oilMark = await oilMarkService.GetByIdAsync(id);
2424

@@ -30,7 +30,7 @@ public async Task<ActionResult<OilMarkDto>> CreateAsync(CreateOilMarkDto oilMark
3030
{
3131
var createdOilMark = await oilMarkService.CreateAsync(oilMark);
3232

33-
return CreatedAtAction("GetOilMarkById", oilMark, new { id = createdOilMark.Id });
33+
return CreatedAtAction(nameof(GetOilMarkByIdAsync), new { id = createdOilMark.Id }, createdOilMark);
3434
}
3535

3636
[HttpPut("{id:int}")]

CheckDrive.Api/CheckDrive.Application/DTOs/Car/CarDto.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using CheckDrive.Domain.Enums;
2-
using System;
32

43
namespace CheckDrive.Application.DTOs.Car;
54

65
public record CarDto(
76
int Id,
87
int OilMarkId,
8+
string OilMarkName,
99
string Model,
1010
string Number,
1111
int ManufacturedYear,

CheckDrive.Api/CheckDrive.Application/DTOs/Car/CreateCarDto.cs

-4
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,8 @@ public record CreateCarDto(
88
string Number,
99
int ManufacturedYear,
1010
decimal Mileage,
11-
decimal CurrentMonthMileage,
12-
decimal CurrentYearMileage,
1311
decimal MonthlyDistanceLimit,
1412
decimal YearlyDistanceLimit,
15-
decimal CurrentMonthFuelConsumption,
16-
decimal CurrentYearFuelConsumption,
1713
decimal MonthlyFuelConsumptionLimit,
1814
decimal YearlyFuelConsumptionLimit,
1915
decimal AverageFuelConsumption,

CheckDrive.Api/CheckDrive.Application/Mappings/CarMappings.cs

+13-12
Original file line numberDiff line numberDiff line change
@@ -11,38 +11,39 @@ public CarMappings()
1111
CreateMap<Car, CarDto>()
1212
.ForCtorParam(nameof(CarDto.Id), cfg => cfg.MapFrom(c => c.Id))
1313
.ForCtorParam(nameof(CarDto.OilMarkId), cfg => cfg.MapFrom(c => c.OilMarkId))
14+
.ForCtorParam(nameof(CarDto.OilMarkName), cfg => cfg.MapFrom(c => c.OilMark!.Name))
1415
.ForCtorParam(nameof(CarDto.Model), cfg => cfg.MapFrom(c => c.Model))
1516
.ForCtorParam(nameof(CarDto.Number), cfg => cfg.MapFrom(c => c.Number))
1617
.ForCtorParam(nameof(CarDto.ManufacturedYear), cfg => cfg.MapFrom(c => c.ManufacturedYear))
1718
.ForCtorParam(nameof(CarDto.Mileage), cfg => cfg.MapFrom(c => c.Mileage))
18-
.ForCtorParam(nameof(CarDto.CurrentMonthFuelConsumption), cfg => cfg.MapFrom(c => c.UsageSummary.CurrentMonthFuelConsumption))
19-
.ForCtorParam(nameof(CarDto.CurrentYearFuelConsumption), cfg => cfg.MapFrom(c => c.UsageSummary.CurrentYearFuelConsumption))
19+
.ForCtorParam(nameof(CarDto.CurrentMonthFuelConsumption), cfg => cfg.MapFrom(c => c.UsageSummary != null ? c.UsageSummary.CurrentMonthFuelConsumption : default))
20+
.ForCtorParam(nameof(CarDto.CurrentYearFuelConsumption), cfg => cfg.MapFrom(c => c.UsageSummary != null ? c.UsageSummary.CurrentYearFuelConsumption : default))
2021
.ForCtorParam(nameof(CarDto.MonthlyFuelConsumptionLimit), cfg => cfg.MapFrom(c => c.Limits.MonthlyFuelConsumptionLimit))
2122
.ForCtorParam(nameof(CarDto.YearlyFuelConsumptionLimit), cfg => cfg.MapFrom(c => c.Limits.YearlyFuelConsumptionLimit))
22-
.ForCtorParam(nameof(CarDto.CurrentMonthMileage), cfg => cfg.MapFrom(c => c.UsageSummary.CurrentMonthDistance))
23-
.ForCtorParam(nameof(CarDto.CurrentYearMileage), cfg => cfg.MapFrom(c => c.UsageSummary.CurrentYearDistance))
23+
.ForCtorParam(nameof(CarDto.CurrentMonthMileage), cfg => cfg.MapFrom(c => c.UsageSummary != null ? c.UsageSummary.CurrentMonthDistance : default))
24+
.ForCtorParam(nameof(CarDto.CurrentYearMileage), cfg => cfg.MapFrom(c => c.UsageSummary != null ? c.UsageSummary.CurrentYearDistance : default))
2425
.ForCtorParam(nameof(CarDto.MonthlyDistanceLimit), cfg => cfg.MapFrom(c => c.Limits.MonthlyDistanceLimit))
2526
.ForCtorParam(nameof(CarDto.YearlyDistanceLimit), cfg => cfg.MapFrom(c => c.Limits.YearlyDistanceLimit));
2627

2728
CreateMap<CreateCarDto, Car>()
2829
.ForPath(dest => dest.OilMarkId, opt => opt.MapFrom(src => src.OilMarkId))
29-
.ForPath(dest => dest.UsageSummary.CurrentMonthDistance, opt => opt.MapFrom(src => src.CurrentYearMileage))
30-
.ForPath(dest => dest.UsageSummary.CurrentYearDistance, opt => opt.MapFrom(src => src.CurrentYearMileage))
3130
.ForPath(dest => dest.Limits.MonthlyDistanceLimit, opt => opt.MapFrom(src => src.MonthlyDistanceLimit))
3231
.ForPath(dest => dest.Limits.YearlyDistanceLimit, opt => opt.MapFrom(src => src.YearlyDistanceLimit))
33-
.ForPath(dest => dest.UsageSummary.CurrentMonthFuelConsumption, opt => opt.MapFrom(src => src.CurrentMonthFuelConsumption))
34-
.ForPath(dest => dest.UsageSummary.CurrentYearFuelConsumption, opt => opt.MapFrom(src => src.CurrentYearFuelConsumption))
3532
.ForPath(dest => dest.Limits.MonthlyFuelConsumptionLimit, opt => opt.MapFrom(src => src.MonthlyFuelConsumptionLimit))
3633
.ForPath(dest => dest.Limits.YearlyFuelConsumptionLimit, opt => opt.MapFrom(src => src.YearlyFuelConsumptionLimit));
3734

3835
CreateMap<UpdateCarDto, Car>()
3936
.ForPath(dest => dest.OilMarkId, opt => opt.MapFrom(src => src.OilMarkId))
40-
.ForPath(dest => dest.UsageSummary.CurrentMonthDistance, opt => opt.MapFrom(src => src.CurrentYearMileage))
41-
.ForPath(dest => dest.UsageSummary.CurrentYearDistance, opt => opt.MapFrom(src => src.CurrentYearMileage))
37+
.ForPath(dest => dest.UsageSummary, opt => opt.MapFrom(src =>
38+
new CarUsageSummary
39+
{
40+
CurrentMonthDistance = src.CurrentMonthMileage,
41+
CurrentYearDistance = src.CurrentYearMileage,
42+
CurrentMonthFuelConsumption = src.CurrentMonthFuelConsumption,
43+
CurrentYearFuelConsumption = src.CurrentYearFuelConsumption
44+
}))
4245
.ForPath(dest => dest.Limits.MonthlyDistanceLimit, opt => opt.MapFrom(src => src.MonthlyDistanceLimit))
4346
.ForPath(dest => dest.Limits.YearlyDistanceLimit, opt => opt.MapFrom(src => src.YearlyDistanceLimit))
44-
.ForPath(dest => dest.UsageSummary.CurrentMonthFuelConsumption, opt => opt.MapFrom(src => src.CurrentMonthFuelConsumption))
45-
.ForPath(dest => dest.UsageSummary.CurrentYearFuelConsumption, opt => opt.MapFrom(src => src.CurrentYearFuelConsumption))
4647
.ForPath(dest => dest.Limits.MonthlyFuelConsumptionLimit, opt => opt.MapFrom(src => src.MonthlyFuelConsumptionLimit))
4748
.ForPath(dest => dest.Limits.YearlyFuelConsumptionLimit, opt => opt.MapFrom(src => src.YearlyFuelConsumptionLimit));
4849
}

CheckDrive.Api/CheckDrive.Application/Services/CarService.cs

+5-2
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public async Task<List<CarDto>> GetAllAsync(CarQueryParameters queryParameters)
2929
ArgumentNullException.ThrowIfNull(queryParameters);
3030

3131
var query = context.Cars
32+
.Include(c => c.OilMark)
3233
.AsNoTracking()
3334
.AsQueryable();
3435

@@ -52,7 +53,9 @@ public async Task<List<CarDto>> GetAllAsync(CarQueryParameters queryParameters)
5253

5354
public async Task<CarDto> GetByIdAsync(int id)
5455
{
55-
var car = await context.Cars.FirstOrDefaultAsync(x => x.Id == id);
56+
var car = await context.Cars
57+
.Include(c => c.OilMark)
58+
.FirstOrDefaultAsync(x => x.Id == id);
5659

5760
if (car is null)
5861
{
@@ -187,4 +190,4 @@ private static bool IsCarExceededYearlyLimit(Car car)
187190

188191
return false;
189192
}
190-
}
193+
}

CheckDrive.Api/CheckDrive.Application/Validators/Car/CreateCarValidator.cs

+1-18
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,6 @@ public CreateCarValidator()
2424
.GreaterThanOrEqualTo(0)
2525
.WithMessage(x => $"Invalid mileage valule {x.Mileage}.");
2626

27-
RuleFor(x => x.CurrentMonthMileage)
28-
.GreaterThanOrEqualTo(0)
29-
.WithMessage(x => $"Invalid current month mileage: {x.CurrentMonthMileage}.");
30-
31-
RuleFor(x => x.CurrentYearMileage)
32-
.GreaterThanOrEqualTo(0)
33-
.WithMessage(x => $"Invalid current year mileage: {x.CurrentYearMileage}.");
34-
3527
RuleFor(x => x.MonthlyDistanceLimit)
3628
.GreaterThan(0)
3729
.WithMessage(x => $"Invalid monthly distance limit: {x.MonthlyDistanceLimit}.");
@@ -40,14 +32,6 @@ public CreateCarValidator()
4032
.GreaterThan(0)
4133
.WithMessage(x => $"Invalid yearly distance limit: {x.YearlyDistanceLimit}.");
4234

43-
RuleFor(x => x.CurrentMonthFuelConsumption)
44-
.GreaterThanOrEqualTo(0)
45-
.WithMessage(x => $"Invalid current month fuel consumption: {x.CurrentMonthFuelConsumption}.");
46-
47-
RuleFor(x => x.CurrentYearMileage)
48-
.GreaterThanOrEqualTo(0)
49-
.WithMessage(x => $"Invalid current year fuel consumption: {x.CurrentYearFuelConsumption}.");
50-
5135
RuleFor(x => x.MonthlyFuelConsumptionLimit)
5236
.GreaterThanOrEqualTo(0)
5337
.WithMessage(x => $"Invalid monthly fuel consumption limit: {x.MonthlyFuelConsumptionLimit}.");
@@ -67,6 +51,5 @@ public CreateCarValidator()
6751
RuleFor(x => x.RemainingFuel)
6852
.GreaterThanOrEqualTo(0)
6953
.WithMessage(x => $"Invalid remaining fuel value: {x.RemainingFuel}.");
70-
7154
}
72-
}
55+
}

CheckDrive.Api/CheckDrive.Domain/Entities/Car.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class Car : EntityBase
1515
public CarStatus Status { get; set; }
1616

1717
public required CarLimits Limits { get; set; }
18-
public required CarUsageSummary UsageSummary { get; set; }
18+
public CarUsageSummary? UsageSummary { get; set; }
1919

2020
public int? OilMarkId { get; set; }
2121
public virtual OilMark? OilMark { get; set; }
@@ -25,6 +25,7 @@ public class Car : EntityBase
2525

2626
public Car()
2727
{
28-
Handovers = [];
28+
Handovers = new HashSet<MechanicHandover>();
29+
AssignedDrivers = new HashSet<Driver>();
2930
}
30-
}
31+
}

0 commit comments

Comments
 (0)