Files
webdoorcreator/WebDoorCreator.API/Controllers/QueueController.cs
T
Samuele Locatelli a0f30600b4 Riorganizzaizone API
2023-04-19 14:55:46 +02:00

147 lines
4.5 KiB
C#

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
/// <summary>
/// Lunghezza coda in attesa
/// </summary>
/// <returns></returns>
[HttpGet("ActPendingLenght")]
public async Task<long> ActPendingLenght()
{
long numQueue = await QDataServ.NumRequestPending();
return numQueue;
}
/// <summary>
/// Lunghezza coda in fase di processing
/// </summary>
/// <returns></returns>
[HttpGet("ActProcessingLenght")]
public async Task<long> ActProcessingLenght()
{
long numQueue = await QDataServ.NumRequestProcessing();
return numQueue;
}
#endif
#region Public Methods
/// <summary>
/// Lunghezza coda in fase di processing
/// </summary>
/// <returns></returns>
[HttpGet("ActLenght")]
public async Task<Dictionary<string, long>> ActLenght()
{
Dictionary<string, long> answ = new Dictionary<string, long>();
var actPend = await QDataServ.NumRequestPending();
answ.Add("pending", actPend);
var actProc = await QDataServ.NumRequestProcessing();
answ.Add("processing", actProc);
return answ;
}
/// <summary>
/// Invio elenco risultati elaborazioni (modalità boolean di esecuzione corretta)
/// </summary>
/// <param name="calcResults">Risultati elaborazioni in formato CalcResultDTO</param>
/// <returns></returns>
[HttpPost("SaveProcessingResult")]
public async Task<bool> SaveProcessingResult(List<CalcResultDTO> calcResults)
{
bool answ = await QDataServ.SaveProcessingResult(calcResults);
return answ;
}
#if false
/// <summary>
/// Elenco richieste in stato pending
/// </summary>
/// <returns></returns>
[HttpGet("ShowPending")]
public async Task<Dictionary<string, string>?> ShowPending()
{
var actQueue = await QDataServ.RequestPending();
return actQueue;
}
/// <summary>
/// Elenco richeiste in stato processing
/// </summary>
/// <returns></returns>
[HttpGet("ShowProcessing")]
public async Task<Dictionary<string, string>> ShowProcessing()
{
var actQueue = await QDataServ.RequestProcessing();
return actQueue;
}
#endif
/// <summary>
/// Elenco richieste raggruppate x stato
/// </summary>
/// <returns></returns>
[HttpGet("StatusList")]
public async Task<Dictionary<string, Dictionary<string, string>>> StatusList()
{
Dictionary<string, Dictionary<string, string>> answ = new Dictionary<string, Dictionary<string, string>>();
var actPend = await QDataServ.RequestPending();
answ.Add("pending", actPend);
var actProc = await QDataServ.RequestProcessing();
answ.Add("processing", actProc);
return answ;
}
/// <summary>
/// Chiede un numero massimo di items dalla coda NB:
/// - verranno tolti dalla coda FIFO richieste
/// - verranno messi nella coda FIFO processing
/// </summary>
/// <returns></returns>
[HttpGet("TakeProcessingItems")]
public async Task<Dictionary<string, string>> 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
}
}