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
}
}