using EgwCoreLib.Utils; using MP.Core.DTO; using MP.Data.DbModels.Utils; using MP.Data.DTO; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace MP.Data.Services.Utils { public interface IStatsDetailService { #region Public Methods /// /// Recupera le statistiche di dettaglio per un periodo specificato, con filtri opzionali su ambiente e tipo. /// Utilizza la cache automaticamente. /// /// Data inizio periodo /// Data fine periodo /// Filtro opzionale per destinazione (default: vuoto = tutti) /// Filtro opzionale per tipo (default: vuoto = tutti) Task> GetFiltAsync(DateTime dtStart, DateTime dtEnd, string sDest = "", string sType = ""); /// /// Restituisce un Pareto degli eventi (in forma originale) più frequenti dato periodo ed eventuale filtro Destinazione/Tipo /// /// Data inizio periodo /// Data fine periodo /// /// Filtro opzionale per destinazione (default: vuoto = tutti) /// Filtro opzionale per tipo (default: vuoto = tutti) /// Task> GetParetoAsync(DateTime dtStart, DateTime dtEnd, int maxRec, string sDest = "", string sType = ""); /// /// Restituisce un dizionario di elaborazioni di tipo Pareto /// Ogni elaborazione contiene Dictionary in forma pareto per una data statistica /// /// //Task>> GetParetoStatsDayAsync(); Task> GetParetoStatsDayAsync(); /// /// Recupera il range di periodi valido per le chiamate di dettaglio. /// Utilizza la cache automaticamente. /// /// Ambiente filtrato /// Tipo filtrato Task GetRangeAsync(string sEnvir, string sType); /// /// Helper conversione dati dettaglio in statistiche da inviare a ChartJS /// /// /// metrica conteggio/avgDuration /// List GetTimeSeriesData(List rawData, bool showCount); /// /// Forza il reset della cache REDIS x i dati /// /// Task ResetCache(); /// /// Inserisce o aggiorna in batch le statistiche di dettaglio nel database. /// Opzionalmente elimina i record precedenti nel periodo specificato. /// /// Elenco dei record da inserire/aggiornare /// Se true elimina preventivamente i record nel periodo richiesto Task UpsertManyAsync(List listRecords, bool removeOld); #endregion Public Methods } }