@@ -1,4 +1,5 @@
using Microsoft.EntityFrameworkCore ;
using AutoMapper ;
using Microsoft.EntityFrameworkCore ;
using PartSource.Data ;
using PartSource.Data.Dtos ;
using PartSource.Data.Models ;
@@ -14,14 +15,16 @@ namespace PartSource.Services
{
public class VehicleService
{
private readonly IMapper _mapper ;
private readonly PartSourceContext _partSourceContext ;
public VehicleService ( PartSourceContext partSourceContext )
public VehicleService ( IMapper mapper , PartSourceContext partSourceContext )
{
_mapper = mapper ;
_partSourceContext = partSourceContext ;
}
public async Task < IList < Vehicle > > GetVehicles ( Vehicle vehicleQuery )
public async Task < IList < Vehicle > > GetVehicles ( VehicleDto vehicleQuery )
{
return await _partSourceContext . Vehicles
. ApplyQueryDto ( vehicleQuery )
@@ -34,6 +37,134 @@ namespace PartSource.Services
. FirstOrDefaultAsync ( v = > v . VehicleToEngineConfigId = = vehicleToEngineConfigId ) ;
}
public async Task < IList < MakeDto > > GetMakes ( VehicleDto vehicleQuery )
{
return await _partSourceContext . Vehicles
. ApplyQueryDto ( vehicleQuery )
. Select ( v = > new MakeDto
{
MakeId = v . MakeId ,
MakeName = v . MakeName
} )
. Distinct ( )
. OrderBy ( v = > v . MakeName )
. ToListAsync ( ) ;
}
public async Task < MakeDto > GetMakeById ( int makeId )
{
Vehicle vehicle = await _partSourceContext . Vehicles
. Where ( v = > v . MakeId = = makeId )
. FirstOrDefaultAsync ( ) ;
return _mapper . Map < MakeDto > ( vehicle ) ;
}
public async Task < IList < ModelDto > > GetModels ( VehicleDto vehicleQuery )
{
return await _partSourceContext . Vehicles
. ApplyQueryDto ( vehicleQuery )
. Select ( v = > new ModelDto
{
ModelId = v . ModelId ,
ModelName = v . ModelName ,
MakeId = v . MakeId ,
MakeName = v . MakeName
} )
. Distinct ( )
. OrderBy ( m = > m . ModelName )
. ToListAsync ( ) ;
}
public async Task < ModelDto > GetModelById ( int modelId )
{
Vehicle vehicle = await _partSourceContext . Vehicles
. Where ( m = > m . ModelId = = modelId )
. FirstOrDefaultAsync ( ) ;
return _mapper . Map < ModelDto > ( vehicle ) ;
}
public async Task < IList < BaseVehicleDto > > GetBaseVehicles ( VehicleDto vehicleQuery )
{
return await _partSourceContext . Vehicles
. ApplyQueryDto ( vehicleQuery )
. Select ( v = > new BaseVehicleDto
{
BaseVehicleId = v . BaseVehicleId ,
MakeName = v . MakeName ,
MakeId = v . MakeId ,
ModelName = v . ModelName ,
ModelId = v . ModelId ,
Year = v . Year
} )
. Distinct ( )
. ToListAsync ( ) ;
}
public async Task < BaseVehicleDto > GetBaseVehicleById ( int baseVehicleId )
{
Vehicle vehicle = await _partSourceContext . Vehicles
. Where ( b = > b . BaseVehicleId = = baseVehicleId )
. FirstOrDefaultAsync ( ) ;
return _mapper . Map < BaseVehicleDto > ( vehicle ) ;
}
public async Task < IList < EngineDto > > GetEngines ( VehicleDto vehicleQuery )
{
return await _partSourceContext . Vehicles
. ApplyQueryDto ( vehicleQuery )
. Select ( v = > new EngineDto
{
EngineConfigId = v . EngineConfigId ,
EngineDescription = v . EngineDescription ,
MakeName = v . MakeName ,
MakeId = v . MakeId
} )
. Distinct ( )
. ToListAsync ( ) ;
}
public async Task < EngineDto > GetEngineById ( int engineConfigId )
{
Vehicle vehicle = await _partSourceContext . Vehicles
. Where ( e = > e . EngineConfigId = = engineConfigId )
. FirstOrDefaultAsync ( ) ;
return _mapper . Map < EngineDto > ( vehicle ) ;
}
public async Task < IList < SubmodelDto > > GetSubmodels ( VehicleDto vehicleQuery )
{
return await _partSourceContext . Vehicles
. ApplyQueryDto ( vehicleQuery )
. GroupBy ( v = > new { v . SubmodelId , v . SubmodelName , v . MakeId , v . MakeName } )
. Select ( v = > new SubmodelDto
{
SubmodelId = v . Key . SubmodelId ,
SubmodelName = v . Key . SubmodelName ,
MakeId = v . Key . MakeId ,
MakeName = v . Key . MakeName
} )
. Distinct ( )
. ToListAsync ( ) ;
}
public async Task < SubmodelDto > GetSubmodelById ( int submodelId )
{
Vehicle vehicle = await _partSourceContext . Vehicles
. Where ( s = > s . SubmodelId = = submodelId )
. FirstOrDefaultAsync ( ) ;
return _mapper . Map < SubmodelDto > ( vehicle ) ;
}
#region Legacy API Support
[Obsolete]
public async Task < Vehicle > GetVehicle ( int baseVehicleId , int engineConfigId , int submodelId )
{
return await _partSourceContext . Vehicles . FirstOrDefaultAsync ( d = >
@@ -43,35 +174,44 @@ namespace PartSource.Services
) ;
}
public async Task < IList < VehicleMake > > GetMakes ( )
[Obsolete]
public async Task < IList < Submodel > > GetSubmodels ( int makeId , int modelId , int year )
{
return await _partSourceContext . VehicleMakes
. OrderBy ( m = > m. Name )
. ToListAsync ( ) ;
return await _partSourceContext . Submodels . Where ( s = >
s . MakeId = = makeId
& & s . ModelId = = modelId
& & s . Year = = year
)
. ToListAsync ( ) ;
}
public async Task < IList < VehicleMake > > GetMakes ( VehicleMake criteria )
[Obsolete]
public async Task < IList < Engine > > GetEngines ( int baseVehicleId )
{
return await _partSourceContext . VehicleMakes
. ApplyQueryDto ( criteria )
. OrderBy ( m = > m . Name )
. ToListAsync ( ) ;
return await _partSourceContext . Engines . Where ( e = > e . BaseVehicleId = = baseVehicleId ) . ToListAsync ( ) ;
}
public async Task < VehicleMake > GetMakeById ( int makeId )
[Obsolete]
public async Task < IList < Engine > > GetEngines ( int baseVehicleId , int submodelId )
{
return await _partSourceContext . VehicleMakes
. FirstOrDefaultAsync ( m = > m . MakeId = = makeId ) ;
return await _partSourceContext . Engines . Where ( e = >
e . BaseVehicleId = = baseVehicleId
& & e . SubmodelId = = submodelId
)
. ToListAsync ( ) ;
}
public async Task < IList < VehicleModel > > GetModels ( VehicleModel criteria )
[Obsolete]
public async Task < BaseVehicle > GetBaseVehicle ( int makeId , int modelId , int year )
{
return await _partSourceContext . VehicleModels
. ApplyQueryDto ( criteria )
. OrderBy ( m = > m. Name )
. ToListAsync ( ) ;
return await _partSourceContext . Base Vehicles . FirstOrDefaultAsync ( d = >
d . MakeId = = makeId
& & d . ModelId = = modelId
& & d . Year = = year
) ;
}
[Obsolete]
public async Task < IList < VehicleModel > > GetModels ( int makeId , int year )
{
return await _partSourceContext . VehicleModels
@@ -83,101 +223,14 @@ namespace PartSource.Services
. ToListAsync ( ) ;
}
public async Task < VehicleModel > GetModelById ( int modelId )
[Obsolete]
public async Task < IList < VehicleMake > > GetMakes ( )
{
return await _partSourceContext . VehicleModel s
. FirstOrDefaultAsync ( m = > m . ModelId = = modelId ) ;
}
public async Task < IList < BaseVehicle > > GetBaseVehicles ( BaseVehicle criteria )
{
return await _partSourceContext . BaseVehicles
. ApplyQueryDto ( criteria )
return await _partSourceContext . VehicleMake s
. OrderBy ( m = > m . Name )
. ToListAsync ( ) ;
}
public async Task < BaseVehicle > GetBaseVehicle ( int makeId , int modelId , int year )
{
return await _partSourceContext . BaseVehicles . FirstOrDefaultAsync ( d = >
d . MakeId = = makeId
& & d . ModelId = = modelId
& & d . Year = = year
) ;
}
public async Task < BaseVehicle > GetBaseVehicleById ( int baseVehicleId )
{
return await _partSourceContext . BaseVehicles
. FirstOrDefaultAsync ( b = > b . BaseVehicleId = = baseVehicleId ) ;
}
public async Task < IList < Engine > > GetEngines ( Engine criteria )
{
return await _partSourceContext . Engines
. ApplyQueryDto ( criteria )
. ToListAsync ( ) ;
}
public async Task < IList < Engine > > GetEngines ( int baseVehicleId )
{
return await _partSourceContext . Engines . Where ( e = > e . BaseVehicleId = = baseVehicleId ) . ToListAsync ( ) ;
}
public async Task < IList < Engine > > GetEngines ( int baseVehicleId , int submodelId )
{
return await _partSourceContext . Engines . Where ( e = >
e . BaseVehicleId = = baseVehicleId
& & e . SubmodelId = = submodelId
)
. ToListAsync ( ) ;
}
public async Task < EngineDto > GetEngineById ( int engineConfigId )
{
return await _partSourceContext . Engines
. Where ( e = > e . EngineConfigId = = engineConfigId )
. Select ( e = > new EngineDto
{
EngineConfigId = e . EngineConfigId ,
Description = e . Description ,
Make = e . Make ,
MakeId = e . MakeId
} )
. FirstOrDefaultAsync ( ) ;
}
public async Task < IList < Submodel > > GetSubmodels ( Submodel submodelQuery )
{
return await _partSourceContext . Submodels
. ApplyQueryDto ( submodelQuery )
. ToListAsync ( ) ;
}
public async Task < IList < Submodel > > GetSubmodels ( int makeId , int modelId , int year )
{
return await _partSourceContext . Submodels . Where ( s = >
s . MakeId = = makeId
& & s . ModelId = = modelId
& & s . Year = = year
)
. ToListAsync ( ) ;
}
public async Task < SubmodelDto > GetSubmodelById ( int submodelId )
{
return await _partSourceContext . Submodels
. Where ( s = > s . SubmodelId = = submodelId )
. Select ( s = > new SubmodelDto
{
Id = s . SubmodelId ,
Name = s . Name ,
Make = s . Make ,
MakeId = s . MakeId
} )
. FirstOrDefaultAsync ( ) ;
}
#endregion
public IList < string > GetYmmFitment ( IList < Vehicle > vehicles )
{