using Microsoft.AspNetCore.Mvc; using NLog; 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 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; } /// /// Invio elenco messaggi elaborazioni (se ho errori --> messaggi oppure libero) /// /// /// [HttpPost("PostProcessingMessage")] public async Task PostProcessingMessage(Dictionary ProcMessageList) { bool answ = false; await Task.Delay(1); return answ; } /// /// Invio elenco risultati elaborazioni (modalità boolean di esecuzione corretta) /// /// /// [HttpPost("PostProcessingResult")] public async Task PostProcessingResult(Dictionary ProcResultList) { bool answ = false; //VC19Check answ = new VC19Check() //{ // Result = "KO" //}; //var result = await _DataService.InsertCheck(DecodedData, "10.74.82.255"); //if (result) //{ // answ = new VC19Check // { // DTRecord = DateTime.Now, // CheckRecorded = true, // TimbrRecorder = true, // Result = $"OK, Check Recorded for {DecodedData.nam.fn} {DecodedData.nam.gn} {DecodedData.dob:yyyy.MM.dd}" // }; //} //else //{ } await Task.Delay(1); return answ; } /// /// Invio elenco risultati elaborazioni come elenco di SVG /// /// /// [HttpPost("PostProcessingSvg")] public async Task PostProcessingSvg(Dictionary ProcSvgList) { bool answ = false; await Task.Delay(1); return answ; } /// /// 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; } /// /// 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 } }