using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using eprintServer.Services; using eprintServer.Requests.StepTemplate; using System; using System.Threading.Tasks; namespace eprintServer.Controllers; [ApiController] [Route("api/admin/[controller]")] [Authorize(Roles = "Admin")] public class StepTemplateController : ControllerBase { private readonly StepTemplateService _service; public StepTemplateController(StepTemplateService service) { _service = service; } [HttpPost] public async Task Create([FromBody] CreateStepTemplateRequest request) { try { var template = await _service.CreateTemplateAsync(request); return Ok(template); } catch (Exception ex) { return BadRequest(new { message = ex.Message }); } } [HttpPost("clone")] public async Task CloneToProduct([FromBody] CloneStepTemplateRequest request) { try { var step = await _service.CloneTemplateToProductAsync(request); return Ok(step); } catch (Exception ex) { return BadRequest(new { message = ex.Message }); } } [HttpGet("{id}")] public async Task GetById(long id) { try { var template = await _service.GetTemplateByIdAsync(id); return Ok(template); } catch (Exception ex) { return NotFound(new { message = ex.Message }); } } [HttpGet] public async Task GetAll() { var templates = await _service.GetAllTemplatesAsync(); return Ok(templates); } [HttpDelete("{id}")] public async Task Delete(long id) { var result = await _service.DeleteTemplateAsync(id); if (!result) return NotFound(new { message = "Template not found" }); return Ok(new { message = "Template deleted successfully" }); } }