using DamageAssesment.Api.Locations.Interfaces; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace DamageAssesment.Api.Locations.Controllers { [Route("api")] [ApiController] public class LocationsController : ControllerBase { private ILocationsProvider LocationProvider; public LocationsController(ILocationsProvider LocationsProvider) { this.LocationProvider = LocationsProvider; } /// /// Get all locations. /// [HttpGet("Locations")] public async Task GetLocationsAsync() { var result = await LocationProvider.GetLocationsAsync(); if (result.IsSuccess) { return Ok(result.locations); } return NoContent(); } /// /// Get all locations based on locationdId. /// [HttpGet("Locations/{id}")] public async Task GetLocationByIdAsync(string id) { var result = await LocationProvider.GetLocationByIdAsync(id); if (result.IsSuccess) { return Ok(result.Location); } return NotFound(); } /// /// Update a Location. /// [HttpPut("Locations")] public async Task UpdateLocation(Models.Location Location) { if (Location != null) { var result = await this.LocationProvider.UpdateLocationAsync(Location); if (result.IsSuccess) { return Ok(result.ErrorMessage); } return NotFound(); } return NotFound(); } /// /// Save a new location. /// [HttpPost("Locations")] public async Task CreateLocation(Models.Location Location) { if (Location != null) { var result = await this.LocationProvider.PostLocationAsync(Location); if (result.IsSuccess) { return Ok(result.Question); } return BadRequest(); } return BadRequest(); } /// /// Delete an existing location. /// [HttpDelete("Locations/{id}")] public async Task DeleteLocation(string id) { var result = await this.LocationProvider.DeleteLocationAsync(id); if (result.IsSuccess) { return Ok(result.ErrorMessage); } return NotFound(); } } }