using Microsoft.AspNetCore.Mvc; using NLog; using WebDoorCreator.API.Data; 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; QDService = DataService; Log.Info("Avviato QueueController"); } #endregion Public Constructors #region Public Methods /// /// Lunghezza coda in attesa /// /// [HttpGet("ActPendingLenght")] public async Task ActPendingLenght() { long numQueue = await QDService.NumRequestPending(); return numQueue; } /// /// Lunghezza coda in fase di processing /// /// [HttpGet("ActProcessingLenght")] public async Task ActProcessingLenght() { long numQueue = await QDService.NumRequestProcessing(); return numQueue; } /// /// Elenco richieste in stato pending /// /// [HttpGet("ShowPending")] public async Task?> ShowPending() { var actQueue = await QDService.RequestPending(); return actQueue;// != null && actQueue.Count > 0 ? actQueue : null; } /// /// Elenco richeiste in stato processing /// /// [HttpGet("ShowProcessing")] public async Task> ShowProcessing() { var actQueue = await QDService.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 QDService.RequestPending(); 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 QDService { get; set; } = null!; #endregion Private Properties } }