using Microsoft.AspNetCore.Mvc; using Campaign_Tracker.Server.Models; using Campaign_Tracker.Server.Services; namespace Campaign_Tracker.Server.Controllers; [ApiController] [Route(api/[controller])] public class MunicipalityAddressesController : ControllerBase { private readonly IMunicipalityAddressService _addressService; public MunicipalityAddressesController(IMunicipalityAddressService addressService) { _addressService = addressService; } [HttpGet({municipalityId})] public async Task>> GetAddresses(int municipalityId) { var addresses = await _addressService.GetAddressesAsync(municipalityId); return Ok(addresses); } [HttpGet({id})] public async Task> GetAddress(int id) { var address = await _addressService.GetAddressAsync(id); if (address == null) return NotFound(); return Ok(address); } [HttpPost] public async Task> CreateAddress(MunicipalityAddress address) { var createdAddress = await _addressService.CreateAddressAsync(address); return CreatedAtAction(nameof(GetAddress), new { id = createdAddress.Id }, createdAddress); } [HttpPut({id})] public async Task UpdateAddress(int id, MunicipalityAddress address) { if (id != address.Id) return BadRequest(); var updatedAddress = await _addressService.UpdateAddressAsync(id, address); if (updatedAddress == null) return NotFound(); return Ok(updatedAddress); } [HttpDelete({id})] public async Task DeleteAddress(int id) { var result = await _addressService.DeleteAddressAsync(id); if (!result) return NotFound(); return NoContent(); } }