using Microsoft.AspNetCore.Mvc; using NLog; using WebDoorCreator.Data.DTO; using WebDoorCreator.Data.Services; namespace WebDoorCreator.API.Controllers { [Route("api/[controller]")] [ApiController] public class QueueController : ControllerBase { #region Public Constructors public QueueController(IConfiguration configuration, QueueDataService DataService) { Log.Info("Starting QueueController"); _configuration = configuration; QDataServ = DataService; Log.Info("Avviato QueueController"); } #endregion Public Constructors #region Public Methods /// /// Lunghezza coda in fase di processing /// /// [HttpGet("ActLenght")] public async Task> ActLenght() { Dictionary answ = new Dictionary(); var actPend = await QDataServ.NumRequestPending(); answ.Add("pending", actPend); var actProc = await QDataServ.NumRequestProcessing(); answ.Add("processing", actProc); return answ; } /// /// Invio elenco risultati elaborazioni (modalità boolean di esecuzione corretta) /// /// Risultati elaborazioni in formato CalcResultDTO /// [HttpPost("SaveProcResult")] public async Task SaveProcResult(List calcResults) { bool answ = await QDataServ.SaveProcessingResult(calcResults); return answ; } /// /// Elenco richieste raggruppate x stato /// /// [HttpGet("StatusList")] public async Task>> StatusList() { Dictionary> answ = new Dictionary>(); var actPend = await QDataServ.RequestPending(); answ.Add("pending", actPend); var actProc = await QDataServ.RequestProcessing(); answ.Add("processing", actProc); return answ; } /// /// Chiede un numero massimo di items dalla coda NB: /// - verranno tolti dalla coda FIFO richieste /// - verranno messi nella coda FIFO processing /// /// [HttpGet("TakeNextItems")] public async Task> TakeProcessingItems(int numItems = 10) { var actQueue = await QDataServ.TakeProcessingItems(numItems); return actQueue; } #endregion Public Methods #region Private Fields private static IConfiguration _configuration = null!; private static Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields #region Private Properties private QueueDataService QDataServ { get; set; } = null!; #endregion Private Properties } }