using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using eprintServer.Services; using eprintServer.Requests.Step; using System; using System.Threading.Tasks; namespace eprintServer.Controllers; [ApiController] [Route("api/admin/[controller]")] [Authorize(Roles = "ADMIN,SUB_ADMIN")] public class StepController : ControllerBase { private readonly StepService _service; public StepController(StepService service) { _service = service; } [HttpPost] public async Task Create([FromBody] CreateStepRequest request) { try { var step = await _service.CreateStepAsync(request); return Ok(step); } catch (Exception ex) { return BadRequest(new { message = ex.Message }); } } // NEW: BULK CREATE STEPS [HttpPost("bulk")] public async Task CreateBulk([FromBody] CreateStepsRequest request) { try { var steps = await _service.CreateStepsAsync(request); return Ok(steps); } catch (Exception ex) { return BadRequest(new { message = ex.Message }); } } [HttpPut("{id}")] public async Task Update(long id, [FromBody] UpdateStepRequest request) { try { var step = await _service.UpdateStepAsync(id, request); return Ok(step); } catch (Exception ex) { return BadRequest(new { message = ex.Message }); } } [HttpGet("{id}")] [AllowAnonymous] public async Task GetById(long id) { try { var step = await _service.GetStepByIdAsync(id); return Ok(step); } catch (Exception ex) { return NotFound(new { message = ex.Message }); } } [HttpGet("product/{productId}")] [AllowAnonymous] public async Task GetByProduct(long productId) { var steps = await _service.GetStepsByProductIdAsync(productId); return Ok(steps); } [HttpDelete("{id}")] public async Task Delete(long id) { var result = await _service.DeleteStepAsync(id); if (!result) return NotFound(new { message = "Step not found" }); return Ok(new { message = "Step deleted successfully" }); } }