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 NotFound(); } // Get all Location based on Id [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 Location entity [HttpPut("Locations")] public async Task UpdateLocation(Db.Location Location) { if (Location != null) { var result = await this.LocationProvider.UpdateLocationAsync(Location); if (result.IsSuccess) { return Ok(result.ErrorMessage); } return NotFound(); } return NotFound(); } //save new location [HttpPost("Locations")] public async Task CreateLocation(Db.Location Location) { if (Location != null) { var result = await this.LocationProvider.PostLocationAsync(Location); if (result.IsSuccess) { return Ok(result.Question); } return NotFound(); } return CreatedAtRoute("DefaultApi", new { id = Location.Id }, Location); } //delete 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(); } } }