//public ActionResult SaveComment(string commentaire, string nom, string note, string nomSeo)
        public ActionResult SaveComment(SaveCommentViewModel comment)
        {
            using (var context = new AvisEntities())
            {
                var formationEntity = context.Formation.FirstOrDefault(f => f.NomSeo == comment.nomSeo);

                if (formationEntity == null)
                {
                    return(RedirectToAction("Acceuil", "Home"));
                }

                Avis nouvelAvis = new Avis();

                nouvelAvis.DateAvis    = DateTime.Now;
                nouvelAvis.Description = comment.commentaire;

                nouvelAvis.UserId = User.Identity.GetUserId();

                var userId = User.Identity.GetUserId();

                var mgerUnicite = new UniqueAvisVerification();
                if (!mgerUnicite.EstAuthoriseACommenter(userId, formationEntity.Id))
                {
                    TempData["Message"] = "Désolé, vous ne pouvez poster qu'un seul avis par formation";
                    return(RedirectToAction("DetailsFormation", "Formation", new { nomSeo = comment.nomSeo }));
                }

                var mger = new PersonneManager();
                nouvelAvis.Nom = mger.GetNomFromUserId(userId);



                double dNote = 0;

                if (!double.TryParse(comment.note, NumberStyles.Any, CultureInfo.InvariantCulture, out dNote))
                {
                    throw new Exception("impossible de parser la note " + comment.note);
                }

                nouvelAvis.Note = dNote;

                nouvelAvis.IdFormation = formationEntity.Id;
                context.Avis.Add(nouvelAvis);
                context.SaveChanges();
            }

            return(RedirectToAction("DetailsFormation", "Formation", new { nomSeo = comment.nomSeo }));
        }
        public ActionResult SaveComment(SaveCommentViewModel comment)
        {
            using (var context = new AvisEntities())
            {
                var formationEntity = context.Formation.FirstOrDefault(f => f.NomSeo == comment.NomSeo);
                if (formationEntity == null)
                {
                    return(RedirectToAction("Accueil", "Home"));
                }

                Avis nouvelAvis = new Avis();
                nouvelAvis.DateAvis = DateTime.Now;

                var userId = User.Identity.GetUserId();

                var mgerUnicite = new UniqueAvisVerification();
                if (!mgerUnicite.EstAutoriseACommenter(userId, formationEntity.Id))
                {
                    TempData["Message"] = "Désolé, un seul avis par compte utilisateur.";
                    return(RedirectToAction("DetailsFormation", "Formation", new { nomSeo = comment.NomSeo }));
                }

                var mger = new PersonneManager();
                nouvelAvis.Nom         = mger.GetNomFromUserId(userId);
                nouvelAvis.Description = comment.Commentaire;

                nouvelAvis.UserId = userId;

                double dNote = 0;

                if (!double.TryParse(comment.Note, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out dNote))
                {
                    throw new Exception("Impossible de parser la note " + comment.Note);
                }

                nouvelAvis.Note = dNote;

                nouvelAvis.IdFormation = formationEntity.Id;

                context.Avis.Add(nouvelAvis);

                try
                {
                    context.SaveChanges();
                }
                catch (DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                          eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                              ve.PropertyName, ve.ErrorMessage);
                        }
                    }
                    throw;
                }

                //context.SaveChanges();
            }

            return(RedirectToAction("DetailsFormation", "Formation", new { nomSeo = comment.NomSeo }));
        }