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