public ActionResult Checkout() { Usuario usuario = (Usuario)Session["Usuario"]; if (usuario == null) { return(RedirectToAction("Login", "Usuarios")); } var listaEnderecos = new EnderecoDao().ConsultarPorCliente(usuario.Id); var listaCartoes = new CartaoDao().ConsultarPorCliente(usuario.Id); List <SelectListItem> ddlEnderecos = new List <SelectListItem> { new SelectListItem { Text = "Selecione um endereço", Value = "0" } }; List <SelectListItem> ddlCartoes = new List <SelectListItem> { new SelectListItem { Text = "Selecione um cartão", Value = "0" } }; listaEnderecos.ForEach(x => ddlEnderecos.Add(new SelectListItem { Text = string.Concat(x.Descricao, " - ", x.Logradouro, ", ", x.Numero, " ", x.Complemento), Value = x.Id.ToString(), Selected = x.Entrega })); listaCartoes.ForEach(x => ddlCartoes.Add(new SelectListItem { Text = string.Concat(x.Bandeira, " - final ", x.Numero.Substring(x.Numero.Length - 4)), Value = x.Id.ToString(), Selected = x.Preferencial })); ViewBag.Enderecos = ddlEnderecos; ViewBag.Cartoes = ddlCartoes; Cliente cliente = new Cliente { Carrinho = usuario?.Carrinho ?? new Carrinho() }; Pedido pedido = new Pedido { Cliente = cliente, Bebidas = ((Usuario)Session["Usuario"])?.Carrinho?.Bebidas ?? new List <Bebida>() }; //verifica se os itens ainda existem no estoque bool BebidasOK = new EstoqueDao().VerificaItensDisponiveis(pedido.Bebidas); if (!BebidasOK) { //retorna para o carrinho informando que o estoque foi atualizado return(RedirectToAction("Index", "Carrinho", new { i = 1 })); } return(View(pedido)); }