using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore.Metadata.Internal; using PartSource.Data.Dtos; using PartSource.Data.Models; using PartSource.Services; using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading.Tasks; namespace PartSource.Api.Controllers { [Route("v2/[controller]")] [ApiController] public class VehiclesController : BaseApiController { private readonly VehicleService _vehicleService; public VehiclesController(VehicleService vehicleService) { _vehicleService = vehicleService; } [HttpGet] [Route("")] public async Task GetVehicles([FromQuery] Vehicle vehicleQuery) { IList vehicles = await _vehicleService.GetVehicles(vehicleQuery); return ApiResponse(vehicles); } [HttpGet] [Route("{id}")] public async Task GetVehicleById(int id) { Vehicle vehicle = await _vehicleService.GetVehicleById(id); return ApiResponse(vehicle); } [HttpGet] [Route("makes")] public async Task GetMakes([FromQuery] VehicleMake vehicleMake) { IList makes = await _vehicleService.GetMakes(vehicleMake); return ApiResponse(makes); } [HttpGet] [Route("makes/{id}")] public async Task GetMakeById(int id) { VehicleMake make = await _vehicleService.GetMakeById(id); return ApiResponse(make); } [HttpGet] [Route("models")] public async Task GetModels([FromQuery] VehicleModel vehicleModel) { IList models = await _vehicleService.GetModels(vehicleModel); return ApiResponse(models); } [HttpGet] [Route("models/{id}")] public async Task GetModelById(int id) { VehicleModel model = await _vehicleService.GetModelById(id); return ApiResponse(model); } [HttpGet] [Route("basevehicles")] public async Task GetBaseVehicles([FromQuery] BaseVehicle baseVehicle) { IList baseVehicles = await _vehicleService.GetBaseVehicles(baseVehicle); return ApiResponse(baseVehicles); } [HttpGet] [Route("basevehicles/{id}")] public async Task GetBaseVehicleById(int id) { BaseVehicle baseVehicle = await _vehicleService.GetBaseVehicleById(id); return ApiResponse(baseVehicle); } [HttpGet] [Route("engines")] public async Task GetEngines([FromQuery] Engine engine) { IList engines = await _vehicleService.GetEngines(engine); return ApiResponse(engines); } [HttpGet] [Route("engines/{id}")] public async Task GetEngineById(int id) { EngineDto engine = await _vehicleService.GetEngineById(id); return ApiResponse(engine); } [HttpGet] [Route("submodels")] public async Task GetSubmodels([FromQuery] Submodel submodelQuery) { IList submodels = await _vehicleService.GetSubmodels(submodelQuery); return ApiResponse(submodels); } [HttpGet] [Route("submodels/{id}")] public async Task GetSubmodels(int id) { SubmodelDto submodel = await _vehicleService.GetSubmodelById(id); return ApiResponse(submodel); } } }