using Contracts; using Microsoft.AspNetCore.Mvc; using Services; using Services.Abstractions; namespace Web.Controllers { [ApiController] [Route("api/cities")] public class CityController : ControllerBase { private readonly ICityService _cityService; public CityController(ICityService cityService) { _cityService = cityService; } [HttpGet] public async Task GetAllAsync() { var cities = await _cityService.GetAllAsync(); return Ok(cities); } [HttpGet("{id:guid}")] public async Task GetByIdAsync(Guid id) { var city = await _cityService.GetByIdAsync(id); if (city == null) { return NotFound("Город не найден."); } return Ok(city); } [HttpPost] public async Task CreateAsync([FromBody] CityDtoForCreate cityDto) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var newCity = await _cityService.CreateAsync(cityDto); return Ok(newCity); } [HttpPut("{id:guid}")] public async Task UpdateAsync(Guid id, [FromBody] CityDtoForUpdate cityDto) { if (!ModelState.IsValid) { return BadRequest(ModelState); } try { await _cityService.UpdateAsync(id, cityDto); } catch (KeyNotFoundException) { return NotFound("Город не найден."); } return NoContent(); } [HttpDelete("{id:guid}")] public async Task DeleteAsync(Guid id) { try { await _cityService.DeleteAsync(id); } catch (KeyNotFoundException) { return NotFound("Город не найден."); } return NoContent(); } } }