I would like to list a Restaurant, where items from this same restaurant have been stored inside the cart. Being that, when saving the product of the cart, it pulls with him the ID of the restaurant. Here is my controller that I did, but it did not work:
public ActionResult SelectRestaurante(int? id)
{
Carrinho carrinho = new Carrinho();
carrinho.produtos = db.Produtos.Find(id);
var restaurantes = db.Restaurantes.Include(r => r.Cozinha).Where(x => x.RestauranteID == carrinho.produtos.RestauranteID);
return View(restaurantes.ToList());
}
Classes:
public class Carrinho
{
[Key]
public int CarrinhoID { get; set; }
// FKs;
[Required(ErrorMessage = "Cliente")]
[DisplayName("Cliente ID")]
public int ClienteID { get; set; }
public virtual Cliente cliente { get; set; }
[Required(ErrorMessage = "Produto")]
[DisplayName("ProdutoID")]
public int ProdutoID { get; set; }
public virtual Produto produtos { get; set; }
}
public class Produto
{
[Key]
public int ProdutoID { get; set; }
[Required(ErrorMessage = "Preencha o nome do produto")]
[DisplayName("Produto")]
[StringLength(20, MinimumLength = 5, ErrorMessage = "O nome do produto deve ter entre 5 a 20 caracteres")]
public string Nome { get; set; }
[Required(ErrorMessage = "Preencha a descrição do produto")]
[DisplayName("Descrição")]
[StringLength(50, MinimumLength = 5, ErrorMessage = "O nome do produto deve ter entre 5 a 50 caracteres")]
public string Descricao { get; set; }
[DisplayName("Foto")]
public string Foto { get; set; }
[Required(ErrorMessage = "Preencha o valor do produto")]
[DisplayName("Valor R$")]
public decimal Valor { get; set; }
//relacionamentos
public int RestauranteID { get; set; }
public virtual Restaurante Restaurante { get; set; }
public virtual ICollection<Carrinho> Carrinhos { get; set; }
}
public abstract class Restaurante
{
[Key]
public int RestauranteID { get; set; }
[Required(ErrorMessage = "Preencha o nome do Restaurante")]
[DisplayName("Restaurante")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "O nome do restaurante deve ter entre 5 e 50 caracteres.")]
public string Nome { get; set; }
[Required(ErrorMessage = "Preencha o tipo de cozinha")]
[DisplayName("Cozinha")]
public int CozinhaID { get; set; }
public virtual Cozinha Cozinha { get; set; }
[Required(ErrorMessage = "Preencha o telefone")]
[DisplayName("Telefone")]
[StringLength(12, MinimumLength = 10, ErrorMessage = "O número de telefone deve haver 12 caracteres.")]
public string Telefone { get; set; }
[Required(ErrorMessage = "Preencha o CNPJ")]
[DisplayName("Cnpj")]
[StringLength(18, MinimumLength = 18, ErrorMessage = "O CNPJ deve haver no máximo, 18 caracteres.")]
public string Cnpj { get; set; }
[Required(ErrorMessage = "Preencha o CEP")]
[DisplayName("CEP")]
[StringLength(9, MinimumLength = 8, ErrorMessage = "O CEP deve haver no máximo 9 caracteres.")]
public string Cep { get; set; }
[Required(ErrorMessage = "Preencha a Cidade")]
[DisplayName("Cidade")]
[StringLength(50, MinimumLength = 5, ErrorMessage = "A cidade deve ter entre 5 e 50 caracteres.")]
public string Cidade { get; set; }
[Required(ErrorMessage = "Preencha o Estado")]
[DisplayName("Estado")]
[StringLength(2, MinimumLength = 2, ErrorMessage = "A sigla do estado deve haver 2 caracteres.")]
public string Estado { get; set; }
[Required(ErrorMessage = "Preencha o Bairro")]
[DisplayName("Bairro")]
[StringLength(50, MinimumLength = 5, ErrorMessage = "O bairro deve ter entre 5 e 50 caracteres.")]
public string Bairro { get; set; }
[Required(ErrorMessage = "Preencha a Rua")]
[DisplayName("Rua")]
[StringLength(50, MinimumLength = 5, ErrorMessage = "A rua deve ter entre 5 e 50 caracteres.")]
public string Rua { get; set; }
[Required(ErrorMessage = "Preencha a número do estabelecimento")]
[DisplayName("Número")]
public int NumRua { get; set; }
[Required(ErrorMessage = "Preencha o nome do responsável pelo estabelecimento")]
[DisplayName("Nome")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "O nome do responsável deve ter entre 5 e 50 caracteres.")]
public string NomeResp { get; set; }
[Required(ErrorMessage = "Preencha o sobrenome do responsável pelo estabelecimento")]
[DisplayName("Sobrenome")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "O sobrenome do responsável deve ter entre 5 e 50 caracteres.")]
public string SobrenomeResp { get; set; }
[Required(ErrorMessage = "Preencha o Email")]
[DisplayName("Email")]
[DataType(DataType.EmailAddress)]
[EmailAddress(ErrorMessage = "E-mail inválido")]
[StringLength(255, MinimumLength = 3, ErrorMessage = "O email deve ter entre 3 e 255 caracteres.")]
public string Email { get; set; }
[Required(ErrorMessage = "Preencha o Celular")]
[DisplayName("Telefone")]
[StringLength(15, MinimumLength = 10, ErrorMessage = "O número de celular deve haver entre 10 e 15 caracteres.")]
public string Celular { get; set; }
[Required(ErrorMessage = "Preencha a senha")]
[DisplayName("Senha")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "A senha deve ter entre 3 e 50 caracteres.")]
[DataType(DataType.Password)]
public string Senha { get; set; }
[Required(ErrorMessage = "Preencha a senha")]
[DataType(DataType.Password)]
[DisplayName("Confirmar Senha")]
[Compare("Senha", ErrorMessage = "A senha e a confirmação de senha estão diferentes!")]
public string ConfirmarSenha { get; set; }
[DisplayName("Foto")]
public string Foto { get; set; }
public virtual ICollection<Produto> Produtos { get; set; }
}