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"));
            }
        }