using Microsoft.AspNetCore.Mvc; using PartSource.Data.Nexpart; using PartSource.Services; using System.Threading.Tasks; namespace PartSource.Api.Controllers { [Route("[controller]")] [ApiController] public class NexpartVehiclesController : BaseNexpartController { private readonly NexpartService _nexpartService; public NexpartVehiclesController(NexpartService nexpartService) { this._nexpartService = nexpartService; } [HttpGet] [Route("types")] public async Task GetVehicleTypes() { NexpartVehiclesController vehiclesController = this; VehicleTypesGetResponse response = await vehiclesController._nexpartService.SendRequest(new VehicleTypesGet()); return vehiclesController.NexpartResponse(response); } [HttpGet] [Route("makes")] public async Task GetMakes() { NexpartVehiclesController vehiclesController = this; MakeSearch requestContent = new MakeSearch() { VehicleTypeId = new int[] { 5, 6, 7 } }; MakeSearchResponse response = await vehiclesController._nexpartService.SendRequest(requestContent); return vehiclesController.NexpartResponse(response); } [HttpGet] [Route("makes/vehicletypeid/{vehicleTypeId}")] public async Task GetMakes(int vehicleTypeId) { NexpartVehiclesController vehiclesController = this; MakeSearch requestContent = new MakeSearch() { VehicleTypeId = new int[] { vehicleTypeId } }; MakeSearchResponse response = await vehiclesController._nexpartService.SendRequest(requestContent); return vehiclesController.NexpartResponse(response); } [HttpGet] [Route("models/makeid/{makeId}/modelyear/{year}")] public async Task GetModels(int makeId, int year) { NexpartVehiclesController vehiclesController = this; ModelSearch requestContent = new ModelSearch() { MakeId = makeId, Year = year, VehicleTypeId = new int[] { 5, 6, 7 } }; ModelSearchResponse response = await vehiclesController._nexpartService.SendRequest(requestContent); return vehiclesController.NexpartResponse(response); } [HttpGet] [Route("models/makeid/{makeId}/modelyear/{year}/vehicletypeid/{vehicleTypeId}")] public async Task GetModels(int makeId, int year, int vehicleTypeId) { NexpartVehiclesController vehiclesController = this; ModelSearch requestContent = new ModelSearch() { MakeId = makeId, Year = year, VehicleTypeId = new int[] { vehicleTypeId } }; ModelSearchResponse response = await vehiclesController._nexpartService.SendRequest(requestContent); return vehiclesController.NexpartResponse(response); } [HttpGet] [Route("basevehicle/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")] public async Task GetBaseVehicle(int makeId, int modelId, int year) { BaseVehicleDetailLookup requestContent = new BaseVehicleDetailLookup() { MakeId = makeId, ModelId = modelId, Year = year }; BaseVehicleDetailLookupResponse response = await _nexpartService.SendRequest(requestContent); return NexpartResponse(response); } [HttpGet] [Route("engines/basevehicleid/{baseVehicleId}")] [Route("engines/basevehicleid/{baseVehicleId}/submodelid/{subModelId}")] public async Task GetEngines(int baseVehicleId, int? subModelId = null) { EngineSearch requestContent = new EngineSearch() { VehicleIdentifier = new VehicleIdentifier() { BaseVehicleId = baseVehicleId }, SubModelId = subModelId }; EngineSearchResponse response = await _nexpartService.SendRequest(requestContent); return NexpartResponse(response); } [HttpGet] [Route("trim/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")] public async Task GetTrim(int makeId, int modelId, int year) { SubModelSearch requestContent = new SubModelSearch() { MakeId = makeId, ModelId = modelId, Year = year, RegionId = 2 }; SubModelSearchResponse response = await _nexpartService.SendRequest(requestContent); return NexpartResponse(response); } [HttpGet] [Route("/detail/basevehicleid/{baseVehicleId}/submodelid/{subModelId}/engineconfigid/{engineConfigId}")] public async Task GetVehicleId(int baseVehicleId, int subModelId, int engineConfigId) { VehicleIdSearch requestContent = new VehicleIdSearch { VehicleIdentifier = new VehicleIdentifier() { BaseVehicleId = baseVehicleId, EngineConfigId = engineConfigId }, Criterion = new Criterion[1]{ new Criterion { Attribute = "SUB_MODEL", Id = subModelId } }, RegionId = new RegionId { Value = 2 }, }; VehicleIdSearchResponse response = await _nexpartService.SendRequest(requestContent); return NexpartResponse(response); } } }