public async Task <Result <MonitorResponse> > GetByDamAndMetricAsync(int damId, int metricId) { try { var monitors = await _MonitorRepository.GetByDamAndMetricAsync(damId, metricId); var values = monitors.Select(x => x.Value).Average(); var status = StatusEnum.Normal; var critical = GetMaxValues(metricId); if (values > critical) { status = StatusEnum.Critical; } else if (values > (critical / 2)) { status = StatusEnum.Warning; } var result = new MonitorResponse { Monitors = monitors.OrderBy(x => x.Date).ToList(), Status = status, Message = GetMessage(metricId, status) }; return(new Result <MonitorResponse>(result)); } catch (Exception ex) { return(new Result <MonitorResponse>(null, "Erro ao consultar monitor")); } }