Files
lux/Lux.API/Controllers/ProdController.cs
T
2025-11-14 16:58:44 +01:00

87 lines
2.9 KiB
C#

using EgwCoreLib.Lux.Core.RestPayload;
using EgwCoreLib.Lux.Data;
using EgwCoreLib.Lux.Data.DbModel.Config;
using EgwCoreLib.Lux.Data.Services;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using NLog;
using System.Diagnostics;
namespace Lux.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProdController : ControllerBase
{
#region Public Constructors
public ProdController(IConfiguration config, IRedisService redisService, ImageCacheService imgServ)
{
_config = config;
_redisService = redisService;
chPub = _config.GetValue<string>("ServerConf:ChannelPub") ?? "";
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Chiamata GET: test status alive
/// GET: api/Prod/alive
/// </summary>
/// <param name="id">id oggetto</param>
/// <returns></returns>
[HttpGet("alive")]
public async Task<IActionResult> Alive()
{
Stopwatch sw = new Stopwatch();
sw.Start();
await Task.Delay(1);
sw.Stop();
Log.Info($"Alive | {sw.Elapsed.TotalMilliseconds:N3} ms");
return Ok("OK");
}
/// <summary>
/// Chiamata GET:
/// - elenco delle richieste di stima da eseguire
/// - vengono registrate come "passate" al calcolo alla data-ora della richiesta
/// GET: api/Prod/estimation
/// </summary>
/// <returns></returns>
[HttpGet("estimation")]
public async Task<ActionResult<List<EstimReqPayloadDTO>>> EstimationRequestQueue()
{
Stopwatch sw = new Stopwatch();
sw.Start();
var listReq = new List<EstimReqPayloadDTO>();
// vado a recuperare da REDIS elenco degli ordini NON ancora associati ad 1/+ prod
// opzione 1: restituisco TUTTI ordini NON ancora eseguiti
// opzione 2: restituisco dall'inizio solo max(n) non ancora eseguiti? (es primi 5 ordini)
// genero elenco degli ordini e per ogni ordine aggiungo il Dict<ItemTag, OrderRowUid>
await Task.Delay(100);
// opzione 1: per tutti gli ordini ritornato registro data-ora invio e tolgo dalla coda...
// opzione 2: aspetto conferma dal sistema che li ha presi in carico e registro data-ora...
sw.Stop();
Log.Info($"EstimationRequestQueue | {sw.Elapsed.TotalMilliseconds:N3} ms");
return Ok(listReq);
}
#endregion Public Methods
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
private readonly IRedisService _redisService;
private readonly string chPub = "";
private IConfiguration _config;
#endregion Private Fields
}
}