Exemple #1
0
        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 }));
        }
Exemple #2
0
        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 }));
        }
Exemple #3
0
        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 }));
        }
Exemple #4
0
        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 }));
        }
Exemple #5
0
        public ActionResult Delete(int id)
        {
            Discussoes discussoes = db.Discussoes.Find(id);

            db.Discussoes.Remove(discussoes);
            db.SaveChanges();
            return(RedirectToAction("Index", "Reports"));
        }
Exemple #6
0
 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));
 }
Exemple #7
0
        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 }));
        }
Exemple #8
0
        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));
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        // 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));
        }
Exemple #11
0
        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 }));
        }
Exemple #12
0
        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));
        }