Files
lux/EgwCoreLib.Lux.Data/Services/General/ICalcRuidService.cs
T
2026-03-25 08:24:25 +01:00

101 lines
4.0 KiB
C#

namespace EgwCoreLib.Lux.Data.Services.General
{
/// <summary>
/// Interfaccia servizio indice richieste
/// </summary>
public interface ICalcRuidService
{
#region Public Methods
/// <summary>
/// Metodo Creazione nuova richiesta
/// </summary>
/// <param name="envir">Environment calcolo</param>
/// <param name="tipo">Tipologia richiesta</param>
/// <param name="uid">UID di riferimento</param>
/// <returns>restituisce il valore del RUID (ID univoco richiesta)</returns>
Task<string> AddRequestAsync(string envir, string tipo, string uid);
/// <summary>
/// Effettua pulizia delle statistiche collezionate una volta migrate sul DB
/// </summary>
/// <param name="keysToDelete">Lista delle chiavi da eliminare da Redis</param>
/// <returns></returns>
Task CleanupStatsAsync(List<RedisValue> keysToDelete);
/// <summary>
/// Metodo di Aggiornamento richiesta esistente
/// </summary>
/// <param name="ruid">RUID richiesta</param>
/// <returns>HashKey della richiesta</returns>
Task<string> CompleteRequestAsync(string ruid);
/// <summary>
/// Espostazione statistiche da REDIS al DB
/// </summary>
/// <param name="clearRedisAfterExport">Se true, cancella le statistiche da Redis dopo l'esportazione</param>
/// <returns>True se esportazione completata con successo</returns>
Task ExportStatsToDbAsync(bool clearRedisAfterExport = false);
/// <summary>
/// Metodo Recupero combinazioni envir/tipo
/// </summary>
/// <returns>Elenco di combinazioni envir|tipo</returns>
Task<IEnumerable<(string env, string tipo)>> GetCombinationsAsync();
/// <summary>
/// Gestione statistiche (da rivedere)
/// </summary>
/// <returns>Elenco di statistiche detail da Redis</returns>
Task<List<StatsDetailModel>> GetOldStatsFromRedisAsync();
/// <summary>
/// Metodo Recupero richieste per UID
/// </summary>
/// <param name="uid">UID di riferimento</param>
/// <returns>Elenco di RUID associati all'UID</returns>
Task<IEnumerable<string>> GetRequestsByUidAsync(string uid);
/// <summary>
/// Metodo Statistiche aggregate
/// </summary>
/// <returns>Dati statistici in tempo reale</returns>
Task<StatsRealtimeDto> GetStatsAsync();
/// <summary>
/// Restituisce le statistiche per range date
/// </summary>
/// <param name="from">DataOra inizio</param>
/// <param name="to">DataOra fine</param>
/// <returns>Range di statistiche</returns>
Task<StatsRangeDto> GetStatsRangeAsync(DateTime from, DateTime to);
/// <summary>
/// Restituisce le statistiche RealTime da REDIS
/// </summary>
/// <param name="reqGroup">Raggruppamento orario richiesto (giornaliero/orario)</param>
/// <param name="reqTag">Tipologia dati richiesti (environment/mode)</param>
/// <param name="dtFrom">DataOra inizio recupero</param>
///
/// <returns>Elenco di dati statistici in tempo reale</returns>
Task<List<RealtimeProcDto>> RealTimeDataStats(RuidGroupMode reqGroup, RuidTagMode reqTag, DateTime dtFrom);
/// <summary>
/// Restituisce elenco statistiche aggregate disponibili dal DB
/// </summary>
/// <param name="from">Data inizio</param>
/// <param name="to">Data fine</param>
///
/// <returns>Elenco di statistiche aggregate dal DB</returns>
Task<List<StatsAggregatedModel>> StatsAggrListAsync(DateTime from, DateTime to);
/// <summary>
/// Restituisce il periodo valido x dati aggregati
/// </summary>
///
/// <returns>Periodo valido per dati aggregati</returns>
Task<EgwCoreLib.Utils.DtUtils.Periodo> StatsAggrRangeAsync();
#endregion Public Methods
}
}