using Microsoft.AspNetCore.Mvc; using PartSource.Data.Models; using PartSource.Services; using System.Collections.Generic; using System.Net; using System.Threading.Tasks; namespace PartSource.Api.Controllers { [Route("[controller]")] [ApiController] public class VehiclesController : BaseNexpartController { private readonly VehicleService _vehicleService; public VehiclesController(VehicleService vehicleService) { this._vehicleService = vehicleService; } [HttpGet] [Route("makes")] public async Task GetMakes() { IList makes = await _vehicleService.GetAllMakes(); return Ok(makes); } [HttpGet] [Route("models/makeid/{makeId}/modelyear/{year}")] public async Task GetModels(int makeId, int year) { IList models = await _vehicleService.GetModels(makeId, year); return Ok(models); } [HttpGet] [Route("basevehicle/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")] [Route("basevehicles/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")] public async Task GetBaseVehicle(int makeId, int modelId, int year) { IList baseVehicles = await _vehicleService.GetBaseVehicles(makeId, modelId, year); return Ok(baseVehicles); } [HttpGet] [Route("engines/basevehicleid/{baseVehicleId}")] [Route("engines/basevehicleid/{baseVehicleId}/submodelid/{subModelId}")] public async Task GetEngines(int baseVehicleId, int? submodelId = null) { IList engines = submodelId == null ? await _vehicleService.GetEngines(baseVehicleId) : await _vehicleService.GetEngines(baseVehicleId, (int)submodelId); return Ok(engines); } [HttpGet] [Route("trim/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")] [Route("submodels/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")] public async Task GetSubmodels(int makeId, int modelId, int year) { IList submodels = await _vehicleService.GetSubmodels(makeId, modelId, year); return Ok(submodels); } [HttpGet] [Route("/detail/basevehicleid/{baseVehicleId}/submodelid/{submodelId}/engineconfigid/{engineConfigId}")] public async Task GetVehicleDetail(int baseVehicleId, int submodelId, int engineConfigId) { VehicleData vehicle = await _vehicleService.GetVehicle(baseVehicleId, engineConfigId, submodelId); return Ok(vehicle); } [HttpGet] [Route("types")] public ActionResult GetVehicleTypes() { return new StatusCodeResult((int)HttpStatusCode.Gone); } [HttpGet] [Route("makes/vehicletypeid/{vehicleTypeId}")] public ActionResult GetMakes(int vehicleTypeId) { return new StatusCodeResult((int)HttpStatusCode.Gone); } [HttpGet] [Route("models/makeid/{makeId}/modelyear/{year}/vehicletypeid/{vehicleTypeId}")] public ActionResult GetModels(int makeId, int year, int vehicleTypeId) { return new StatusCodeResult((int)HttpStatusCode.Gone); } } }