diff --git a/MP.MONO.Data/Controllers/MpDbController.cs b/MP.MONO.Data/Controllers/MpDbController.cs index 1127139..8a49015 100644 --- a/MP.MONO.Data/Controllers/MpDbController.cs +++ b/MP.MONO.Data/Controllers/MpDbController.cs @@ -261,32 +261,34 @@ namespace MP.MONO.Data.Controllers /// /// Recupero lista sommatoria durata eventi allarme per analisi, ordinati in logica di pareto (Max-min) /// - /// Id Macchina + /// Id Macchina /// inizio analisi (evento deve iniziare/finire entro periodo) /// fine analisi (evento deve iniziare/finire entro periodo) /// durata minima evento per venire considerato, -1 = tutti /// durata massima evento per venire considerato, -1 = tutti /// - public List AlarmRecGetParetoDur(int MachineId, DateTime dtFrom, DateTime dtTo, int minDur = -1, int maxDur = -1) + public List AlarmRecGetParetoDur(int machineId, DateTime dtFrom, DateTime dtTo, int minDur = -1, int maxDur = -1) { List dbResult = new List(); using (MapoMonoContext localDbCtx = new MapoMonoContext()) { try { - //dbResult = localDbCtx - // .DbSetAlarmRec - // .Where(x => x.MachineId == MachineId) - // .Include(m => m.MachineNav) - // .Include(m => m.AlarmListNav) - // .OrderByDescending(x => x.DtStart) - // .Skip(skipRec) - // .Take(numRec) - // .ToList(); + dbResult = localDbCtx + .DbSetAlarmRec + .Where(x => x.MachineId == machineId + && (x.DtStart >= dtFrom && x.DtStart <= dtTo) + && (x.Duration >= minDur || minDur < 0) + && (x.Duration <= maxDur || maxDur < 0)) + .GroupBy(g => g.AlarmId) + .Select(g => new AlarmDurationDTO() { MachineId = machineId, AlarmId = g.Key, Duration = g.Sum(x => x.Duration) }) + .Include(m => m.MachineNav) + .Include(m => m.AlarmListNav) + .ToList(); } catch (Exception exc) { - Log.Error($"Eccezione durante AlarmRecGetParetoFreq{Environment.NewLine}{exc}"); + Log.Error($"Eccezione durante AlarmRecGetParetoDur{Environment.NewLine}{exc}"); } } return dbResult;