public List <RecuperarGraficoDTO> RecuperarGrafico(RecuperarGraficoCargaDTO dto)
        {
            var tipoImportacao = _db.Importacao.FirstOrDefault(x => x.Id == dto.CodigoImportacao).TipoImportacao;

            if (tipoImportacao == 0)
            {
                var retorno = _db.ImportacaoColunas.Where(x => x.CodigoImportacao == dto.CodigoImportacao && x.NomeColuna == dto.NomeColuna).Select(p => new
                {
                    p.DataLeitura,
                    p.ValorLeitura,
                    p.CodigoImportacao
                }).OrderBy(p => p.DataLeitura).ToList();

                var listRecuperarGraficoDTO = new List <RecuperarGraficoDTO>();

                foreach (var item in retorno)
                {
                    var recuperarGraficoDTO = new RecuperarGraficoDTO()
                    {
                        DataLeitura      = item.DataLeitura.ToString("dd/MM/yyyy HH:mm:ss"),
                        ValorLeitura     = item.ValorLeitura,
                        CodigoImportacao = item.CodigoImportacao,
                        TipoImportacao   = tipoImportacao,
                        Sequencial       = 0
                    };

                    listRecuperarGraficoDTO.Add(recuperarGraficoDTO);
                }

                return(listRecuperarGraficoDTO);
            }
            else
            {
                var retorno = _db.ImportacaoColunas.Where(x => x.CodigoImportacao == dto.CodigoImportacao && x.NomeColuna == dto.NomeColuna).Select(p => new
                {
                    p.DataLeitura,
                    p.ValorLeitura,
                    p.CodigoImportacao,
                    p.Sequencial
                }).OrderBy(p => p.Sequencial).ToList();

                var listRecuperarGraficoDTO = new List <RecuperarGraficoDTO>();

                foreach (var item in retorno)
                {
                    var recuperarGraficoDTO = new RecuperarGraficoDTO()
                    {
                        DataLeitura      = item.DataLeitura.ToString("dd/MM/yyyy HH:mm:ss"),
                        ValorLeitura     = item.ValorLeitura,
                        CodigoImportacao = item.CodigoImportacao,
                        Sequencial       = item.Sequencial,
                        TipoImportacao   = tipoImportacao
                    };

                    listRecuperarGraficoDTO.Add(recuperarGraficoDTO);
                }

                return(listRecuperarGraficoDTO);
            }
        }
        public List <RecuperarGraficoDTO> RecuperarGraficoComparacao(RecuperarGraficoCargaComparacaoDTO dto)
        {
            int tipo = 0;

            var tipoImportacaoPadrao = _db.Importacao.FirstOrDefault(x => x.Id == dto.CodigoImportacaoPrincipal).TipoImportacao;

            foreach (var item in dto.CodigoImportacao)
            {
                tipo = _db.Importacao.FirstOrDefault(x => x.Id == item).TipoImportacao;

                if (tipoImportacaoPadrao != tipo)
                {
                    throw new Exception("Somente é possível comparar importações do mesmo tipo!");
                }
            }

            if (tipoImportacaoPadrao == 1)
            {
                var qtde = dto.CodigoImportacao.Count();

                if (qtde != 1)
                {
                    throw new Exception("Para comparar por Pontos sequenciais, é permitido selecionar apenas 2 importações");
                }
            }

            if (tipoImportacaoPadrao == 0)
            {
                var retorno = _db.ImportacaoColunas.Where(x => x.CodigoImportacao == dto.CodigoImportacaoPrincipal && x.NomeColuna == dto.NomeColuna).Select(p => new
                {
                    p.DataLeitura,
                    p.ValorLeitura,
                    p.CodigoImportacao,
                    p.Sequencial
                }).OrderBy(p => p.DataLeitura).ToList();

                var listRecuperarGraficoDTO = new List <RecuperarGraficoDTO>();

                foreach (var item in retorno)
                {
                    var recuperarGraficoDTO = new RecuperarGraficoDTO()
                    {
                        DataLeitura      = item.DataLeitura.ToString("dd/MM/yyyy HH:mm:ss"),
                        ValorLeitura     = item.ValorLeitura,
                        CodigoImportacao = item.CodigoImportacao,
                        Sequencial       = item.Sequencial,
                        TipoImportacao   = tipoImportacaoPadrao
                    };

                    listRecuperarGraficoDTO.Add(recuperarGraficoDTO);
                }

                foreach (var item in dto.CodigoImportacao)
                {
                    var retornoComp = _db.ImportacaoColunas.Where(x => x.CodigoImportacao == item && x.NomeColuna == dto.NomeColuna).Select(p => new
                    {
                        p.DataLeitura,
                        p.ValorLeitura,
                        p.CodigoImportacao,
                        p.Sequencial
                    }).OrderBy(p => p.DataLeitura).ToList();

                    foreach (var itemRet in retornoComp)
                    {
                        var recuperarGraficoCompDTO = new RecuperarGraficoDTO()
                        {
                            DataLeitura      = itemRet.DataLeitura.ToString("dd/MM/yyyy HH:mm:ss"),
                            ValorLeitura     = itemRet.ValorLeitura,
                            CodigoImportacao = itemRet.CodigoImportacao,
                            Sequencial       = itemRet.Sequencial,
                            TipoImportacao   = tipoImportacaoPadrao
                        };

                        listRecuperarGraficoDTO.Add(recuperarGraficoCompDTO);
                    }
                }

                return(listRecuperarGraficoDTO.OrderBy(x => x.DataLeitura).ToList());
            }
            else
            {
                var retorno = _db.ImportacaoColunas.Where(x => x.CodigoImportacao == dto.CodigoImportacaoPrincipal && x.NomeColuna == dto.NomeColuna).Select(p => new
                {
                    p.DataLeitura,
                    p.ValorLeitura,
                    p.CodigoImportacao,
                    p.Sequencial
                }).OrderBy(p => p.Sequencial).ToList();

                var listRecuperarGraficoDTO = new List <RecuperarGraficoDTO>();

                foreach (var item in retorno)
                {
                    var recuperarGraficoDTO = new RecuperarGraficoDTO()
                    {
                        DataLeitura                = item.DataLeitura.ToString("dd/MM/yyyy HH:mm:ss"),
                        ValorLeitura               = item.ValorLeitura,
                        CodigoImportacao           = item.CodigoImportacao,
                        Sequencial                 = item.Sequencial,
                        TipoImportacao             = tipoImportacaoPadrao,
                        CodigoImportacaoPrincipal  = dto.CodigoImportacaoPrincipal,
                        CodigoImportacaoSecundaria = dto.CodigoImportacao[0]
                    };

                    listRecuperarGraficoDTO.Add(recuperarGraficoDTO);
                }

                foreach (var item in dto.CodigoImportacao)
                {
                    var retornoComp = _db.ImportacaoColunas.Where(x => x.CodigoImportacao == item && x.NomeColuna == dto.NomeColuna).Select(p => new
                    {
                        p.DataLeitura,
                        p.ValorLeitura,
                        p.CodigoImportacao,
                        p.Sequencial
                    }).OrderBy(p => p.Sequencial).ToList();

                    foreach (var itemRet in retornoComp)
                    {
                        var recuperarGraficoCompDTO = new RecuperarGraficoDTO()
                        {
                            DataLeitura                = itemRet.DataLeitura.ToString("dd/MM/yyyy HH:mm:ss"),
                            ValorLeitura               = itemRet.ValorLeitura,
                            CodigoImportacao           = itemRet.CodigoImportacao,
                            Sequencial                 = itemRet.Sequencial,
                            TipoImportacao             = tipoImportacaoPadrao,
                            CodigoImportacaoPrincipal  = dto.CodigoImportacaoPrincipal,
                            CodigoImportacaoSecundaria = dto.CodigoImportacao[0]
                        };

                        listRecuperarGraficoDTO.Add(recuperarGraficoCompDTO);
                    }
                }

                return(listRecuperarGraficoDTO.OrderBy(x => x.Sequencial).ToList());
            }
        }