public ActionResult adicionarfilme(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } //o parametro passado vem do link. /filmes/adicionarfilme/1 Filme filme = db.Filmes.Find(id); if (filme == null) { return(HttpNotFound()); } //verificação se ja existe a relação entre user e filme foreach (var item in db.UserFilmes) { if (item.FilmeID.Equals(filme.FilmeID) && item.UserId.Equals(User.Identity.GetUserId())) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } } //adicionar o filme ao utilizador logged in //db.Users.Find(User.Identity.GetUserId()).Filmes.Add(filme); UserFilmes newmovie = new UserFilmes(); newmovie.Filme = filme; newmovie.User = db.Users.Find(User.Identity.GetUserId()); db.UserFilmes.Add(newmovie); db.SaveChanges(); return(RedirectToAction("Index")); }
// o ? no parametro diz que pode ser null. neste caso tiramos porque nao pode ser public ActionResult removerfilme(int id) { //o parametro passado vem do link. /filmes/...lme/1 Filme filme = db.Filmes.Find(id); if (filme == null) { return(HttpNotFound()); } //verificação se ja existe a relação entre user e filme //neste caso ja podemos usar a verificação para garantir que tiramos o certo // nota: fazer return dentro do metodo senao partimos o foreach ao mudarmos a database :p UserFilmes removeme = null; foreach (var item in db.UserFilmes) { if (item.FilmeID.Equals(filme.FilmeID) && item.UserId.Equals(User.Identity.GetUserId())) { //db.Users.Find(User.Identity.GetUserId()).Filmes.Remove(filme); removeme = item; } } if (removeme != null) { db.UserFilmes.Remove(removeme); db.SaveChanges(); } return(RedirectToAction("Index")); }