using DamageAssesment.Api.Locations.Interfaces; using Microsoft.AspNetCore.Mvc; namespace DamageAssesment.Api.Locations.Controllers { [Route("api/[controller]")] [ApiController] public class RegionsController : ControllerBase { private readonly IRegionsProvider regionProvider; public RegionsController(IRegionsProvider regionProvider) { this.regionProvider = regionProvider; } // Get all Regions [HttpGet] public async Task GetRegionsAsync() { var result = await regionProvider.GetRegionsAsync(); if (result.IsSuccess) { return Ok(result.regions); } return NoContent(); } [HttpGet("{Id}")] public async Task GetRegionAsync(string Id) { var result = await this.regionProvider.GetRegionByIdAsync(Id); if (result.IsSuccess) { return Ok(result.Region); } return NotFound(); } [HttpPost] public async Task PostRegionAsync(Models.Region region) { var result = await this.regionProvider.PostRegionAsync(region); if (result.IsSuccess) { return Ok(result.Region); } return BadRequest(result.ErrorMessage); } [HttpPut] public async Task PutRegionAsync(Models.Region region) { var result = await this.regionProvider.PutRegionAsync(region); if (result.IsSuccess) { return Ok(result.Region); } if (result.ErrorMessage.Equals("Not Found")) return NotFound(result.ErrorMessage); return BadRequest(result.ErrorMessage); } [HttpDelete("{Id}")] public async Task DeleteRegionAsync(string Id) { var result = await this.regionProvider.DeleteRegionAsync(Id); if (result.IsSuccess) { return Ok(result.Region); } return NotFound(); } } }