public override HttpResponseMessage Query(SearchRequest request)
        {
            ItemMonitoramentoResponse response = new ItemMonitoramentoResponse();

            var expression = QueryBuilder.BuildQueryExpression <ItemMonitoramentoDTO>(request.Filter, false, null);
            var result     = this._service.Buscar(expression, request.OrderBy, request.SortDirection, request.RecordsPerPage * request.PageNumber, ((request.PageNumber - 1) * request.RecordsPerPage));

            if ((result?.Itens.Any()).GetValueOrDefault())
            {
                response = result.Itens.GroupBy(x => new { x.DataMonitoramento, x.IdPrograma }, (g, itens) => new ItemMonitoramentoResponse
                {
                    DataMonitoramento = g.DataMonitoramento.ToShortDateString(),
                    IdPrograma        = g.IdPrograma.GetValueOrDefault(),
                    Data         = _itemConverter.ToViewModel(itens).ToList(),
                    TotalRecords = result.TotalRecords,
                    TotalPages   = (result.TotalRecords > 0 && result.TotalRecords <= result.RecordsPerPage) ? 1 : (int)Math.Ceiling((double)result.TotalRecords / result.RecordsPerPage)
                }).Single();
                DateTime dataMonitoramento = Convert.ToDateTime(response.DataMonitoramento);
                var      resumo            = this._indicadoresService.Buscar(x => x.DataMonitoramento == dataMonitoramento && x.Id == response.IdPrograma).FirstOrDefault();
                response.JustificativasPendentes = resumo.JustificativasPendentes;
                response.NomePrograma            = resumo.NomePrograma;
                response.QuantidadeAlertas       = resumo.QuantidadeAlertas;
                response.QuantidadeAlertasItens  = resumo.QuantidadeAlertasItens;
                response.QuantidadeItens         = resumo.QuantidadeItens;
                response.TipoConsumoAutonomia    = resumo.TipoConsumoAutonomia;
                response.TipoConsumoSaldoZerado  = resumo.TipoConsumoSaldoZerado;
                response.Percentual = $"{((resumo.QuantidadeAlertasItens * 100) / resumo.QuantidadeItens)} %";
            }
            return(ToJson(response));
        }
Пример #2
0
        public virtual async Task <HttpResponseMessage> Get()
        {
            var result = await _service.BuscarTodosAsync();

            return(ToJson(_entityConverter.ToViewModel(result)));
        }