using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Azaion.Missions.DTOs; using Azaion.Missions.Services; namespace Azaion.Missions.Controllers; [ApiController] [Route("vehicles")] [Authorize(Policy = "FL")] public class VehiclesController(VehicleService vehicleService) : ControllerBase { [HttpPost] public async Task Create([FromBody] CreateVehicleRequest request) { var vehicle = await vehicleService.CreateVehicle(request); return Created($"/vehicles/{vehicle.Id}", vehicle); } [HttpPut("{id:guid}")] public async Task Update(Guid id, [FromBody] UpdateVehicleRequest request) { var vehicle = await vehicleService.UpdateVehicle(id, request); return Ok(vehicle); } [HttpDelete("{id:guid}")] public async Task Delete(Guid id) { await vehicleService.DeleteVehicle(id); return NoContent(); } [HttpGet] public async Task GetAll([FromQuery] GetVehiclesQuery query) { var vehicles = await vehicleService.GetVehicles(query); return Ok(vehicles); } [HttpGet("{id:guid}")] public async Task Get(Guid id) { var vehicle = await vehicleService.GetVehicle(id); return Ok(vehicle); } [HttpPatch("{id:guid}/default")] public async Task SetDefault(Guid id, [FromBody] SetDefaultRequest request) { await vehicleService.SetDefault(id, request); return NoContent(); } }