public async Task <ActionResult> Encomendas([Bind(Include = "ID, valorCotacao, Pedidofk, Transportadorafk,")] Cotacoes cotacao)
        {
            if (ModelState.IsValid)
            {
                db.Entry(cotacao).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("EmEspera"));
            }
            return(View(cotacao));
        }
        // GET: Cotacaos/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Cotacoes cotacao = db.Cotacoes.Find(id);

            if (cotacao == null)
            {
                return(HttpNotFound());
            }
            return(View(cotacao));
        }
        // GET: Cotacaos/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Cotacoes cotacao = db.Cotacoes.Include(c => c.Pedido).Include(c => c.Transportadora).SingleOrDefault(u => u.ID == id);;

            if (cotacao == null)
            {
                return(HttpNotFound());
            }
            return(View(cotacao));
        }
        public ActionResult Encomendas()
        {
            var listaDeCotacoes = new List <Cotacoes>();
            var listaDePedidos  = db.Pedidos.Include(c => c.Transportadora)
                                  .Where(a => a.Estado == 0)
                                  .OrderByDescending(a => a.DataEntregaPretendida)
                                  .ToList();

            foreach (var item in listaDePedidos)
            {
                var modelo = new Cotacoes();
                modelo.Pedido   = item;
                modelo.Pedidofk = item.ID;
                int idTransportadora = db.Transportadora
                                       .Where(a => a.Email == User.Identity.Name)
                                       .FirstOrDefault()
                                       .ID;
                modelo.Transportadora   = db.Transportadora.Find(idTransportadora);
                modelo.Transportadorafk = db.Transportadora.Find(idTransportadora).ID;
                modelo.valorCotacao     = "0";
                modelo.Aceite           = false;
                var existe = false;
                foreach (var iten in db.Cotacoes)
                {
                    if ((iten.Pedidofk.Equals(modelo.Pedidofk)) && (iten.Transportadorafk.Equals(modelo.Transportadorafk)))
                    {
                        existe = true;
                    }
                }
                if (!existe)
                {
                    listaDeCotacoes.Add(modelo);
                }
            }

            foreach (var item in listaDeCotacoes)
            {
                db.Cotacoes.Add(item);
                db.SaveChanges();
            }

            var listaFinal = db.Pedidos.Include(c => c.Transportadora)
                             .Where(a => a.Transportadora.Email == User.Identity.Name)
                             .OrderBy(a => a.Estado)
                             .ToList();

            return(View(listaFinal));
        }
        public List <Resultado> Calcular()
        {
            var resultados = new List <Resultado>();

            foreach (var dataAtual in Datas)
            {
                if (dataAtual >= DateTime.Today)
                {
                    resultados.Add(resultados.LastOrDefault());
                }

                var cotacaoDiaria = Cotacoes.FirstOrDefault(x => x.Data == dataAtual);
                if (cotacaoDiaria == null)
                {
                    cotacaoDiaria = Cotacoes.FirstOrDefault(x => x.Data == new DateTime(2020, 03, 12));
                }
                //TODO: descomentar .LastOrDefault();
                //Linha Inicial
                if (resultados.Count == 0)
                {
                    resultados.Add(GerarPrimeiroResultado(dataAtual, _contrato, cotacaoDiaria));
                }
                //Linha Sem Movimento
                if (!_contrato.Movimentos.Any(x => x.Data == dataAtual) && !resultados.Any(x => x.Data == dataAtual))
                {
                    resultados.Add(GerarLinhaSemMovimento(dataAtual, _contrato, cotacaoDiaria, resultados.LastOrDefault()));
                }
                //Linha Com Movimento
                if (_contrato.Movimentos.Any(x => x.Data == dataAtual))
                {
                    foreach (Movimento item in _contrato.Movimentos.Where(x => x.Data == dataAtual))
                    {
                        resultados.Add(GerarLinhaComMovimento(dataAtual, _contrato, cotacaoDiaria, resultados.LastOrDefault(), item));
                    }
                }
            }
            if (_contrato.DataInicial.Year < DateTime.Today.Year)
            {
                resultados[0].Data = new DateTime(DateTime.Today.Year - 1, 12, 31);
            }
            return(resultados);
        }