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 #if false /// /// Lunghezza coda in attesa /// /// [HttpGet("ActPendingLenght")] public async Task ActPendingLenght() { long numQueue = await QDataServ.NumRequestPending(); return numQueue; } /// /// Lunghezza coda in fase di processing /// /// [HttpGet("ActProcessingLenght")] public async Task ActProcessingLenght() { long numQueue = await QDataServ.NumRequestProcessing(); return numQueue; } #endif #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("SaveProcessingResult")] public async Task SaveProcessingResult(List calcResults) { bool answ = await QDataServ.SaveProcessingResult(calcResults); return answ; } #if false /// /// Elenco richieste in stato pending /// /// [HttpGet("ShowPending")] public async Task?> ShowPending() { var actQueue = await QDataServ.RequestPending(); return actQueue; } /// /// Elenco richeiste in stato processing /// /// [HttpGet("ShowProcessing")] public async Task> ShowProcessing() { var actQueue = await QDataServ.RequestProcessing(); return actQueue; } #endif /// /// 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("TakeProcessingItems")] public async Task> TakeProcessingItems(int numItems) { 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 } }