public List <RelatorioVeiculo> GerarRelatorio(int mes, int ano)
        {
            try
            {
                using (veiculosapiContext contexto = new veiculosapiContext())
                {
                    DateTime inicioRelatorio           = new DateTime(ano - 1, mes, 01);
                    DateTime fimRelatorio              = new DateTime(ano, mes, 01);
                    List <RelatorioVeiculo> relatorios = new List <RelatorioVeiculo>();

                    var veiculos = (from v in contexto.Set <Veiculo>()
                                    join a in contexto.Set <Abastecimento>().Where(p => p.Data >= inicioRelatorio && p.Data <= fimRelatorio)
                                    on v.Id equals a.VeiculoId
                                    select new { v }).Distinct().ToList();


                    foreach (var v in veiculos)
                    {
                        RelatorioVeiculo relatorio = new RelatorioVeiculo();
                        relatorio.VeiculoId = v.v.Id;

                        Dictionary <string, string> valores     = new Dictionary <string, string>();
                        Dictionary <string, string> litros      = new Dictionary <string, string>();
                        Dictionary <string, string> quilometros = new Dictionary <string, string>();

                        List <Abastecimento> abastecimentos = contexto.Abastecimento.Where(a => a.VeiculoId == relatorio.VeiculoId && a.Data >= inicioRelatorio && a.Data <= fimRelatorio).ToList();

                        for (int i = 1; i <= 12; i++)
                        {
                            string key = new DateTime(1900, i, 1).ToString("MMMM", new CultureInfo("pt-BR"));

                            int km = abastecimentos.Where(t => t.Data.Month == i).Sum(x => x.Km);
                            quilometros.Add(key, km.ToString());

                            double litro = abastecimentos.Where(t => t.Data.Month == i).Sum(x => x.Litro);
                            litros.Add(key, litro.ToString());

                            decimal valor = abastecimentos.Where(t => t.Data.Month == i).Sum(x => x.Valor);
                            valores.Add(key, valor.ToString());
                        }

                        relatorio.MediaKm            = (abastecimentos.Where(p => p.Data >= inicioRelatorio && p.Data <= fimRelatorio).Sum(x => x.Km) / abastecimentos.Where(p => p.Data >= inicioRelatorio && p.Data <= fimRelatorio).Sum(x => x.Litro));
                        relatorio.QuilometrosRodados = quilometros;
                        relatorio.LitrosAbastecidos  = litros;
                        relatorio.ValorPago          = valores;
                        relatorio.Veiculo            = v.v;

                        relatorios.Add(relatorio);
                    }


                    return(relatorios);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public RelatorioVeiculo GerarRelatorio(int veiculo, int mes, int ano)
        {
            try
            {
                using (veiculosapiContext contexto = new veiculosapiContext())
                {
                    DateTime inicioRelatorio = new DateTime(ano - 1, mes, 01);
                    DateTime fimRelatorio    = new DateTime(ano, mes, 01);


                    RelatorioVeiculo relatorio = new RelatorioVeiculo();
                    relatorio.VeiculoId = veiculo;

                    Dictionary <string, string> valores     = new Dictionary <string, string>();
                    Dictionary <string, string> litros      = new Dictionary <string, string>();
                    Dictionary <string, string> quilometros = new Dictionary <string, string>();

                    List <Abastecimento> abastecimentos = contexto.Abastecimento.Where(a => a.VeiculoId == relatorio.VeiculoId && a.Data >= inicioRelatorio && a.Data <= fimRelatorio).ToList();

                    for (int i = 1; i <= 12; i++)
                    {
                        string key = new DateTime(1900, i, 1).ToString("MMMM", new CultureInfo("pt-BR"));

                        int km = abastecimentos.Where(t => t.Data.Month == i).Sum(x => x.Km);
                        quilometros.Add(key, km.ToString());

                        double litro = abastecimentos.Where(t => t.Data.Month == i).Sum(x => x.Litro);
                        litros.Add(key, litro.ToString());

                        decimal valor = abastecimentos.Where(t => t.Data.Month == i).Sum(x => x.Valor);
                        valores.Add(key, valor.ToString());
                    }

                    relatorio.MediaKm            = (abastecimentos.Where(p => p.Data >= inicioRelatorio && p.Data <= fimRelatorio).Sum(x => x.Km) / abastecimentos.Where(p => p.Data >= inicioRelatorio && p.Data <= fimRelatorio).Sum(x => x.Litro));
                    relatorio.QuilometrosRodados = quilometros;
                    relatorio.LitrosAbastecidos  = litros;
                    relatorio.ValorPago          = valores;
                    relatorio.Veiculo            = contexto.Veiculo.Where(a => a.Id == relatorio.VeiculoId).FirstOrDefault();;


                    return(relatorio);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }