Code-complete v2 vehicle API

This commit is contained in:
2020-07-26 21:52:36 -04:00
parent 48dc190027
commit f2ca3419b0
28 changed files with 1292 additions and 1001 deletions

View File

@@ -1,101 +1,132 @@
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("[controller]")]
[ApiController]
public class VehiclesController : BaseNexpartController
{
private readonly VehicleService _vehicleService;
[Route("v2/[controller]")]
[ApiController]
public class VehiclesController : BaseApiController
{
private readonly VehicleService _vehicleService;
public VehiclesController(VehicleService vehicleService)
{
this._vehicleService = vehicleService;
}
public VehiclesController(VehicleService vehicleService)
{
_vehicleService = vehicleService;
}
[HttpGet]
[Route("makes")]
public async Task<ActionResult> GetMakes()
{
IList<VehicleMake> makes = await _vehicleService.GetAllMakes();
[HttpGet]
[Route("")]
public async Task<ActionResult> GetVehicles([FromQuery] Vehicle vehicleQuery)
{
IList<Vehicle> vehicles = await _vehicleService.GetVehicles(vehicleQuery);
return Ok(makes);
}
return ApiResponse(vehicles);
}
[HttpGet]
[Route("models/makeid/{makeId}/modelyear/{year}")]
public async Task<ActionResult> GetModels(int makeId, int year)
{
IList<VehicleData> models = await _vehicleService.GetModels(makeId, year);
[HttpGet]
[Route("{id}")]
public async Task<ActionResult> GetVehicleById(int id)
{
Vehicle vehicle = await _vehicleService.GetVehicleById(id);
return Ok(models);
}
return ApiResponse(vehicle);
}
[HttpGet]
[Route("basevehicle/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")]
[Route("basevehicles/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")]
public async Task<ActionResult> GetBaseVehicle(int makeId, int modelId, int year)
{
IList<BaseVehicle> baseVehicles = await _vehicleService.GetBaseVehicles(makeId, modelId, year);
[HttpGet]
[Route("makes")]
public async Task<ActionResult> GetMakes([FromQuery] VehicleMake vehicleMake)
{
IList<VehicleMake> makes = await _vehicleService.GetMakes(vehicleMake);
return Ok(baseVehicles);
}
return ApiResponse(makes);
}
[HttpGet]
[Route("engines/basevehicleid/{baseVehicleId}")]
[Route("engines/basevehicleid/{baseVehicleId}/submodelid/{subModelId}")]
public async Task<ActionResult> GetEngines(int baseVehicleId, int? submodelId = null)
{
IList<Engine> engines = submodelId == null
? await _vehicleService.GetEngines(baseVehicleId)
: await _vehicleService.GetEngines(baseVehicleId, (int)submodelId);
[HttpGet]
[Route("makes/{id}")]
public async Task<ActionResult> GetMakeById(int id)
{
VehicleMake make = await _vehicleService.GetMakeById(id);
return Ok(engines);
}
return ApiResponse(make);
}
[HttpGet]
[Route("trim/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")]
[Route("submodels/makeid/{makeId}/modelid/{modelId}/modelyear/{year}")]
public async Task<ActionResult> GetSubmodels(int makeId, int modelId, int year)
{
IList<Submodel> submodels = await _vehicleService.GetSubmodels(makeId, modelId, year);
[HttpGet]
[Route("models")]
public async Task<ActionResult> GetModels([FromQuery] VehicleModel vehicleModel)
{
IList<VehicleModel> models = await _vehicleService.GetModels(vehicleModel);
return Ok(submodels);
}
return ApiResponse(models);
}
[HttpGet]
[Route("/detail/basevehicleid/{baseVehicleId}/submodelid/{submodelId}/engineconfigid/{engineConfigId}")]
public async Task<ActionResult> GetVehicleDetail(int baseVehicleId, int submodelId, int engineConfigId)
{
VehicleData vehicle = await _vehicleService.GetVehicle(baseVehicleId, engineConfigId, submodelId);
[HttpGet]
[Route("models/{id}")]
public async Task<ActionResult> GetModelById(int id)
{
VehicleModel model = await _vehicleService.GetModelById(id);
return Ok(vehicle);
}
return ApiResponse(model);
}
[HttpGet]
[Route("types")]
public ActionResult GetVehicleTypes()
{
return new StatusCodeResult((int)HttpStatusCode.Gone);
}
[HttpGet]
[Route("basevehicles")]
public async Task<ActionResult> GetBaseVehicles([FromQuery] BaseVehicle baseVehicle)
{
IList<BaseVehicle> baseVehicles = await _vehicleService.GetBaseVehicles(baseVehicle);
[HttpGet]
[Route("makes/vehicletypeid/{vehicleTypeId}")]
public ActionResult GetMakes(int vehicleTypeId)
{
return new StatusCodeResult((int)HttpStatusCode.Gone);
}
return ApiResponse(baseVehicles);
}
[HttpGet]
[Route("models/makeid/{makeId}/modelyear/{year}/vehicletypeid/{vehicleTypeId}")]
public ActionResult GetModels(int makeId, int year, int vehicleTypeId)
{
return new StatusCodeResult((int)HttpStatusCode.Gone);
}
}
[HttpGet]
[Route("basevehicles/{id}")]
public async Task<ActionResult> GetBaseVehicleById(int id)
{
BaseVehicle baseVehicle = await _vehicleService.GetBaseVehicleById(id);
return ApiResponse(baseVehicle);
}
[HttpGet]
[Route("engines")]
public async Task<ActionResult> GetEngines([FromQuery] Engine engine)
{
IList<Engine> engines = await _vehicleService.GetEngines(engine);
return ApiResponse(engines);
}
[HttpGet]
[Route("engines/{id}")]
public async Task<ActionResult> GetEngineById(int id)
{
EngineDto engine = await _vehicleService.GetEngineById(id);
return ApiResponse(engine);
}
[HttpGet]
[Route("submodels")]
public async Task<ActionResult> GetSubmodels([FromQuery] Submodel submodelQuery)
{
IList<Submodel> submodels = await _vehicleService.GetSubmodels(submodelQuery);
return ApiResponse(submodels);
}
[HttpGet]
[Route("submodels/{id}")]
public async Task<ActionResult> GetSubmodels(int id)
{
SubmodelDto submodel = await _vehicleService.GetSubmodelById(id);
return ApiResponse(submodel);
}
}
}