52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
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<IActionResult> GetAll()
|
|
{
|
|
var instances = await service.GetAllAsync();
|
|
return Ok(instances);
|
|
}
|
|
|
|
[HttpPost]
|
|
public async Task<IActionResult> 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<IActionResult> 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 });
|
|
}
|
|
}
|
|
}
|