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 IStatsCodeService
{
#region Public Methods
///
/// Recupera l'elenco delle statistiche StatusCode per un periodo specificato.
/// Utilizza la cache automaticamente.
///
/// Data inizio periodo
/// Data fine periodo
Task> GetFiltAsync(DateTime dtStart, DateTime dtEnd);
///
/// Restituisce un dizionario di elaborazioni di tipo Pareto su orizzonte giornaliero
/// Ogni elaborazione contiene Dictionary in forma pareto per una data statistica
///
///
Task>> GetParetoStatsDayAsync(int numDay);
///
/// Restituisce un dizionario di elaborazioni di tipo Pareto su orizzonte settimanale
/// Ogni elaborazione contiene Dictionary in forma pareto per una data statistica
///
///
Task>> GetParetoStatsWeekAsync();
///
/// Recupera il range di periodi valido per le chiamate StatusCode.
/// Utilizza la cache automaticamente.
///
Task GetRangeAsync();
///
/// Helper conversione dati aggregati in statistiche da inviare a ChartJS
///
///
///
List GetTimeSeriesData(List rawData);
///
/// Inserisce o aggiorna in batch le statistiche StatusCode 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
}
}