Files
mapo-core/MP.Data/Services/Utils/IStatsAggrService.cs
T

61 lines
2.5 KiB
C#

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 IStatsAggrService
{
#region Public Methods
/// <summary>
/// Recupera l'elenco delle statistiche aggregate per un periodo specificato.
/// Utilizza la cache automaticamente.
/// </summary>
/// <param name="dtStart">Data inizio periodo</param>
/// <param name="dtEnd">Data fine periodo</param>
Task<List<StatsAggregatedModel>> GetFiltAsync(DateTime dtStart, DateTime dtEnd);
/// <summary>
/// Restituisce un dizionario di elaborazioni di tipo Pareto su orizzonte settimanale
/// Ogni elaborazione contiene Dictionary in forma pareto per una data statistica
/// </summary>
/// <returns></returns>
Task<Dictionary<string, List<StatDataDTO>>> GetParetoStatsWeekAsync();
/// <summary>
/// Restituisce un dizionario di elaborazioni di tipo Pareto su orizzonte giornaliero
/// Ogni elaborazione contiene Dictionary in forma pareto per una data statistica
/// </summary>
/// <returns></returns>
Task<Dictionary<string, List<StatDataDTO>>> GetParetoStatsDayAsync(int numDay);
/// <summary>
/// Recupera il range di periodi valido per le chiamate aggregate.
/// Utilizza la cache automaticamente.
/// </summary>
Task<DtUtils.Periodo> GetRangeAsync();
/// <summary>
/// Inserisce o aggiorna in batch le statistiche aggregate nel database.
/// Opzionalmente elimina i record precedenti nel periodo specificato.
/// </summary>
/// <param name="listRecords">Elenco dei record da inserire/aggiornare</param>
/// <param name="removeOld">Se true elimina preventivamente i record nel periodo richiesto</param>
Task<int> UpsertManyAsync(List<StatsAggregatedModel> listRecords, bool removeOld);
/// <summary>
/// Helper conversione dati aggregati in statistiche da inviare a ChartJS
/// </summary>
/// <param name="rawData"></param>
/// <param name="groupMach">raggruppamento per macchina/server</param>
/// <param name="getCount">metrica conteggio/avgDuration</param>
/// <returns></returns>
List<ChartSeriesDto> GetTimeSeriesData(List<StatsAggregatedModel> rawData, bool groupMach, bool getCount);
#endregion Public Methods
}
}