using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using SlpModularCms.Modules.Master.Models; using SlpModularCms.Modules.Master.Services; namespace SlpModularCms.Modules.Master.Controllers; [ApiController] [Route("CmsInstances")] [Authorize(Policy = "OwnerOnly")] public class CmsInstanceController(ICmsInstanceService service) : ControllerBase { [HttpGet] public async Task GetAll() { var instances = await service.GetAllAsync(); return Ok(instances); } [HttpPost] public async Task Add([FromBody] CreateCmsInstanceRequest request) { try { var dto = await service.AddAsync(request); return CreatedAtAction(nameof(GetAll), null, dto); } catch (ArgumentException ex) { return BadRequest(new { error = ex.Message }); } } [HttpPut("{id:guid}/status")] public async Task UpdateStatus(Guid id, [FromBody] UpdateStatusRequest request) { try { var result = await service.UpdateStatusAsync(id, request); return Ok(result); } catch (KeyNotFoundException ex) { return NotFound(new { error = ex.Message }); } catch (ArgumentException ex) { return BadRequest(new { error = ex.Message }); } } }