using System.Collections.Generic; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using LCU.Api.Internal.Dispatcher.Extensions; using LCU.Api.Internal.Dispatcher.Services.QueueServices; namespace LCU.Api.Internal.Dispatcher.Controllers; [Route("api/[controller]")] [ApiController] public class QueueCompletionController : ControllerBase { private readonly IQueueCompletionService _queueCompletionService; public QueueCompletionController(IQueueCompletionService completionService) { _queueCompletionService = completionService; } [HttpPost] [ProducesResponseType(202)] [ProducesResponseType(typeof(List), 400)] [ProducesResponseType(500)] public async Task Post([FromBody] DispatcherReturnResponse request) { try { if (!ModelState.IsValid) { return BadRequest(ModelState.GetErrorMessages()); } await _queueCompletionService.QueueCompletion(request); return Accepted(); } catch (ServiceException) { return StatusCode(StatusCodes.Status500InternalServerError); } catch (Exception exception) { Log.Error(exception, "Unexpected Exception"); return StatusCode(StatusCodes.Status500InternalServerError); } } }