public ActionResult RetVoteComent(int idDisc, int idComent, string btnAction) { string option = btnAction.ToString(); var userId = User.Identity.GetUserId(); Discussoes discs = db.Discussoes.Find(idDisc); //seleciona os LIKES e DISLIKES do COMENTARIO com o id igual ao id passado por parâmetro Likes li = db.Likes.Select(x => x).Where(x => x.DiscussaoFK == idDisc).Where(x => x.ComentarioFK == idComent).Where(x => x.UtilizadorFK == userId).FirstOrDefault(); Dislikes dis = db.Dislikes.Select(x => x).Where(x => x.DiscussaoFK == idDisc).Where(x => x.ComentarioFK == idComent).Where(x => x.UtilizadorFK == userId).FirstOrDefault(); switch (option) { case "likesComent": discs.likes = discs.likes - 1; db.Likes.Remove(li); db.SaveChanges(); break; case "dislikesComent": discs.dislikes = discs.dislikes - 1; db.Dislikes.Remove(dis); db.SaveChanges(); break; } return(RedirectToAction("PergDisc", "PergDisc", new { id = idDisc })); }
public ActionResult RetVote(int id, string btnAction) { string option = btnAction.ToString(); var userId = User.Identity.GetUserId(); Discussoes discs = db.Discussoes.Find(id); Likes li = db.Likes.Select(x => x).Where(x => x.DiscussaoFK == id).FirstOrDefault(); Dislikes dis = db.Dislikes.Select(x => x).Where(x => x.DiscussaoFK == id).FirstOrDefault(); switch (option) { case "likesDisc": discs.likes = discs.likes - 1; db.Likes.Remove(li); Session["stateVoteDisc"] = false; db.SaveChanges(); break; case "dislikesDisc": discs.dislikes = discs.dislikes - 1; db.Dislikes.Remove(dis); Session["stateVoteDiscDislike"] = false; db.SaveChanges(); break; } return(RedirectToAction("PergDisc", "PergDisc", new { id = id })); }
public ActionResult avaliaDisc(int id, string btnAvalDisc) { string option = btnAvalDisc.ToString(); int valueOption = Convert.ToInt16(option.Substring(8, 1)); //recolhe o id do utilizador autenticado var userId = User.Identity.GetUserId(); //procura a DISCUSSAO com o id igual ao passado no parâmetro Discussoes discs = db.Discussoes.Find(id); //procura na BD se este utilizador já tem avaliacao nas DISCUSSOES Avaliacao av = db.Avaliacao.Select(x => x).Where(x => x.DiscussaoFK == id).Where(x => x.UtilizadorFK == userId).FirstOrDefault(); if (discs == null) { return(HttpNotFound()); } if (av == null) { var newId = db.Likes.Select(x => x.likeID).ToList().Count() + 1; //cria uma nova AVALIACAO var newAval = new Avaliacao { avaliacaoID = newId, dataLike = DateTime.Now, avaliacao = valueOption, DiscussaoFK = id, UtilizadorFK = userId }; db.Avaliacao.Add(newAval); } //grava as notificacoes db.SaveChanges(); //faz a média da avaliação da DISCUSSAO discs.avaliacao = (from aval in db.Avaliacao where (aval.DiscussaoFK == id && aval.ComentarioFK == null) select aval.avaliacao).ToList().Average(); db.SaveChanges(); return(RedirectToAction("PergDisc", "PergDisc", new { id = id })); }
public ActionResult Vote(int id, string btnAction) { string option = btnAction.ToString(); var userId = User.Identity.GetUserId(); //procura na base de dados a DISCUSSAO com o id passado por parâmetro Discussoes discs = db.Discussoes.Find(id); //procura na base de dados se a DISCUSSAO TEM LIKES OU DISLIKES Likes li = db.Likes.Select(x => x).Where(x => x.DiscussaoFK == id).Where(x => x.ComentarioFK == null).Where(x => x.UtilizadorFK == userId).FirstOrDefault(); Dislikes dis = db.Dislikes.Select(x => x).Where(x => x.DiscussaoFK == id).Where(x => x.ComentarioFK == null).Where(x => x.UtilizadorFK == userId).FirstOrDefault(); switch (option) { case "likesDisc": if (discs == null) { return(HttpNotFound()); } if (li == null) { discs.likes = discs.likes + 1; var newId = db.Likes.Select(x => x.likeID).Count() + 1; //cria um novo LIKE var newLike = new Likes { likeID = newId, dataLike = DateTime.Now, DiscussaoFK = id, UtilizadorFK = userId }; //adiciona na BD db.Likes.Add(newLike); Session["stateVoteDisc"] = true; } db.SaveChanges(); break; case "dislikesDisc": if (discs == null) { return(HttpNotFound()); } if (dis == null) { discs.dislikes = discs.dislikes + 1; var newId = db.Dislikes.Select(x => x.dislikeID).Count() + 1; //cria um novo DISLIKE var newDislike = new Dislikes { dislikeID = newId, dataLike = DateTime.Now, DiscussaoFK = id, UtilizadorFK = userId }; //adiciona na BD db.Dislikes.Add(newDislike); Session["stateVoteDiscDislike"] = true; } db.SaveChanges(); break; } return(RedirectToAction("PergDisc", "PergDisc", new { id = id })); }
public ActionResult Delete(int id) { Discussoes discussoes = db.Discussoes.Find(id); db.Discussoes.Remove(discussoes); db.SaveChanges(); return(RedirectToAction("Index", "Reports")); }
public ActionResult Edit([Bind(Include = "idDiscussao,dataPublicacao,titulo,conteudo,likes,dislikes,report,UtilizadorFK")] Discussoes discussoes) { if (ModelState.IsValid) { db.Entry(discussoes).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.UtilizadorFK = new SelectList(db.Users, "Id", "Nickname", discussoes.UtilizadorFK); return(View(discussoes)); }
public ActionResult VoteComent(int idDisc, int idComent, string btnAction) { string option = btnAction.ToString(); var userId = User.Identity.GetUserId(); Discussoes discs = db.Discussoes.Find(idDisc); //Verfica se o COMENTARIO com o ID passado por parâmetro tem algum like ou dislike Likes li = db.Likes.Select(x => x).Where(x => x.DiscussaoFK == idDisc).Where(x => x.ComentarioFK == idComent).FirstOrDefault(); Dislikes dis = db.Dislikes.Select(x => x).Where(x => x.DiscussaoFK == idDisc).Where(x => x.ComentarioFK == idComent).FirstOrDefault(); switch (option) { case "likesComent": if (discs == null) { return(HttpNotFound()); } if (li == null) { discs.likes = discs.likes + 1; var newId = db.Likes.Select(x => x.likeID).Count() + 1; var newLike = new Likes { likeID = newId, dataLike = DateTime.Now, DiscussaoFK = idDisc, ComentarioFK = idComent, UtilizadorFK = userId }; db.Likes.Add(newLike); } db.SaveChanges(); break; case "dislikesComent": if (discs == null) { return(HttpNotFound()); } if (dis == null) { discs.dislikes = discs.dislikes + 1; var newId = db.Dislikes.Select(x => x.dislikeID).Count() + 1; var newDislike = new Dislikes { dislikeID = newId, dataLike = DateTime.Now, DiscussaoFK = idDisc, ComentarioFK = idComent, UtilizadorFK = userId }; db.Dislikes.Add(newDislike); } db.SaveChanges(); break; } return(RedirectToAction("PergDisc", "PergDisc", new { id = idDisc })); }
public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Discussoes discussoes = db.Discussoes.Find(id); if (discussoes == null) { return(HttpNotFound()); } return(View(discussoes)); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Discussoes discussoes = db.Discussoes.Find(id); if (discussoes == null) { return(HttpNotFound()); } ViewBag.UtilizadorFK = new SelectList(db.Users, "Id", "Nickname", discussoes.UtilizadorFK); return(View(discussoes)); }
// GET: PergDisc /// <summary> /// seleciona os dados para a VIEW PergDisc /// os dados são a DISCUSSOES que tem o id igual ao que é passado por parâmetro /// os COMENTARIOS, OS LIKES, DISLIKES, AVALAICAO, REPORTS e COMENTREPORTS /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult PergDisc(int?id) { //Caso o 'id' do TEMA for nulo if (id == null) { //Redirecionará o utilizador para a view INDEX return(RedirectToAction("Index", "Temas")); } //Procura um tema com o 'id' fornecido pela view Discussoes discussoes = db.Discussoes.Find(id); //verifica se o tema foi encontrado if (discussoes == null) { //caso o tema não seja encontrado, redireciona para a view INDEX return(RedirectToAction("Index", "Temas")); } HomeViewModel hvm = new HomeViewModel(); hvm.temas = db.Temas.ToList(); hvm.discussoes = (from disc in db.Discussoes where disc.idDiscussao == id select disc).ToList(); hvm.comentarios = db.Comentarios.Select(x => x).Where(x => x.DiscussaoFK == id).ToList(); hvm.likes = db.Likes.Select(x => x).Where(x => x.DiscussaoFK == id).ToList(); hvm.dislikes = db.Dislikes.Select(x => x).Where(x => x.DiscussaoFK == id).ToList(); hvm.avaliacao = db.Avaliacao.Select(x => x).Where(x => x.DiscussaoFK == id).ToList(); hvm.reports = db.Reports.Select(x => x).Where(x => x.DiscussaoFK == id).ToList(); hvm.comentReports = db.ComentReports.Select(x => x).ToList(); var temaEscolhido = db.Temas.Select(x => new { x.idTema, x.TemasDiscussoes, x.Etiqueta }).Where(x => x.TemasDiscussoes.Any(y => y.idDiscussao == id)).FirstOrDefault(); ViewBag.temaEsc = temaEscolhido.idTema; ViewBag.temaEscolhido = temaEscolhido.Etiqueta; ViewBag.likes = db.Likes.Select(x => x).Where(x => x.DiscussaoFK == id).Count(); ViewBag.dislikes = db.Dislikes.Select(x => x).Where(x => x.DiscussaoFK == id).Count(); ViewBag.numDisc = db.Discussoes.Select(x => x).Count(); ViewBag.temas = db.Temas.Select(x => x.Etiqueta).ToList(); return(View(hvm)); }
public ActionResult avaliaComent(int idComent, int idDisc, string btnAvalComent) { string option = btnAvalComent.ToString(); int valueOption = Convert.ToInt16(option.Substring(10, 1)); int notaAval = valueOption; //recolhe o id do utilizador autenticado var userId = User.Identity.GetUserId(); //procura a DISCUSSAO com o id igual ao passado por parâmetro Discussoes discs = db.Discussoes.Find(idDisc); //procura o COMENTARIO com o id igual ao passado por parâmetro Comentarios coment = db.Comentarios.Find(idComent); //procura na BD se este utilizador já tem avaliacao nos COMENTARIO Avaliacao av = db.Avaliacao.Select(x => x).Where(x => x.ComentarioFK == idComent).Where(x => x.UtilizadorFK == userId).FirstOrDefault(); if (coment == null) { return(HttpNotFound()); } if (av == null) { var newId = db.Likes.Select(x => x.likeID).Count() + 1; //cria uma nova avaliacao var newAval = new Avaliacao { avaliacaoID = newId, dataLike = DateTime.Now, avaliacao = notaAval, DiscussaoFK = idDisc, ComentarioFK = idComent, UtilizadorFK = userId }; db.Avaliacao.Add(newAval); } //grava as modificações db.SaveChanges(); //faz a média da avaliação do COMENTARIO coment.avaliacao = (from aval in db.Avaliacao where aval.ComentarioFK == idComent select aval.avaliacao).ToList().Average(); db.SaveChanges(); return(RedirectToAction("PergDisc", "PergDisc", new { id = idDisc })); }
public ActionResult Create([Bind(Include = "idDiscussao,titulo,conteudo")] Discussoes discussoes, int?id, string[] checkbox) { int idT = 0; //caso haja alguma TEMA escolhido try { //para cada TEMA escolhido na checkbox foreach (var item in checkbox) { idT = Convert.ToInt32(item); //procura o id do TEMA na tabela respetiva Temas tema = db.Temas.Select(x => x).Where(x => x.idTema == idT).FirstOrDefault(); //adiciona ao relacionamento de M-M discussoes.TemasDiscussoes.Add(tema); } discussoes.avaliacao = 0; discussoes.dataPublicacao = DateTime.Now; discussoes.dislikes = 0; discussoes.likes = 0; discussoes.UtilizadorFK = User.Identity.GetUserId(); if (ModelState.IsValid) { db.Discussoes.Add(discussoes); db.SaveChanges(); return(RedirectToAction("PergDisc", "PergDisc", new { id = id })); } } //senão houver TEMA escolhido catch (Exception) { IEnumerable <Temas> temas = db.Temas.ToList(); ViewBag.temas = temas; ModelState.AddModelError("", string.Format("Erro! Introduza pelo menos um Tema para a Discussão.")); return(View(discussoes)); } return(View(discussoes)); }