using DbFirst.Application.Catalogs; using Microsoft.AspNetCore.Mvc; namespace DbFirst.API.Controllers; [ApiController] [Route("api/[controller]")] public class CatalogsController : ControllerBase { private readonly ICatalogService _service; public CatalogsController(ICatalogService service) { _service = service; } [HttpGet] public async Task>> GetAll(CancellationToken cancellationToken) { var result = await _service.GetAllAsync(cancellationToken); return Ok(result); } [HttpGet("{id:int}")] public async Task> GetById(int id, CancellationToken cancellationToken) { var result = await _service.GetByIdAsync(id, cancellationToken); if (result == null) { return NotFound(); } return Ok(result); } [HttpPost] public async Task> Create(CatalogDto dto, CancellationToken cancellationToken) { var created = await _service.CreateAsync(dto, cancellationToken); return CreatedAtAction(nameof(GetById), new { id = created.Guid }, created); } [HttpPut("{id:int}")] public async Task Update(int id, CatalogDto dto, CancellationToken cancellationToken) { var updated = await _service.UpdateAsync(id, dto, cancellationToken); if (!updated) { return NotFound(); } return NoContent(); } [HttpPut("sp")] public async Task> UpdateWithStoredProcedure(CatalogDto dto, CancellationToken cancellationToken) { var updated = await _service.UpdateWithStoredProcedureAsync(dto, cancellationToken); if (updated == null) { return BadRequest(); } return Ok(updated); } [HttpDelete("{id:int}")] public async Task Delete(int id, CancellationToken cancellationToken) { var deleted = await _service.DeleteAsync(id, cancellationToken); if (!deleted) { return NotFound(); } return NoContent(); } [HttpDelete("sp/{id:int}")] public async Task DeleteWithStoredProcedure(int id, CancellationToken cancellationToken) { var deleted = await _service.DeleteWithStoredProcedureAsync(id, cancellationToken); if (!deleted) { return NotFound(); } return NoContent(); } }