public ActionResult Restaurer(List <int> NoCourriel)
        {
            foreach (int no in NoCourriel)
            {
                PPDestinataire message = (from m in context.PPDestinataires
                                          where m.NoMsg == no && m.NoDestinataire == noUtilisateur
                                          select m).FirstOrDefault();
                if (message != null)
                {
                    message.Lieu = (short?)LieuxCourriel.Reception;
                }
            }

            try
            {
                context.SubmitChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }
        /// <summary>
        /// Permet d'aller checker un courriel en particulier
        /// </summary>
        /// <param name="NoCourriel"></param>
        /// <returns>le partialview du courriel</returns>
        public ActionResult GetCourriel(int NoCourriel = 0)
        {
            PPMessage messages = (from m in context.PPMessages
                                  where m.NoMsg == NoCourriel
                                  select m).FirstOrDefault();

            PPDestinataire message = (from m in context.PPDestinataires
                                      where m.NoMsg == NoCourriel && m.NoDestinataire == noUtilisateur
                                      select m).FirstOrDefault();

            if (message != null)
            {
                message.EtatLu = (short?)EtatLu.Lu;
            }

            try
            {
                context.SubmitChanges();
                return(PartialView("Courriel/_Courriel", messages));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }
        }
        public ActionResult Supprimer(List <int> NoCourriel)
        {
            foreach (int no in NoCourriel)
            {
                PPMessage message = (from m in context.PPMessages
                                     where m.NoMsg == no && m.NoExpediteur == noUtilisateur
                                     select m).FirstOrDefault();

                //si c'est l'expediteur, supprimer définitivement
                if (message != null)
                {
                    message.Lieu = (short?)LieuxCourriel.Supprime;
                }

                PPDestinataire destinataire = (from m in context.PPDestinataires
                                               where m.NoMsg == no && m.NoDestinataire == noUtilisateur
                                               select m).FirstOrDefault();

                if (destinataire != null)
                {
                    //si déja dans les elements supprimés, supprimer définitivement
                    if (destinataire.Lieu == (short?)LieuxCourriel.Archive)
                    {
                        destinataire.Lieu = (short?)LieuxCourriel.Supprime;
                    }
                    else
                    {
                        destinataire.Lieu = (short?)LieuxCourriel.Archive;
                    }
                }
            }

            try
            {
                context.SubmitChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }
        private PPMessage EnregistrerMessage(BrouillonViewModel brouillon, PPMessage msg = null)
        {
            if (msg == null)
            {
                msg = new PPMessage();
            }

            brouillon.destinataires = brouillon.destinataires ?? new List <int?>();

            msg.NoMsg        = (int)brouillon.NoMsg.GetValueOrDefault(msg.NoMsg);
            msg.DescMsg      = brouillon.DescMsg;
            msg.Lieu         = brouillon.Lieu;
            msg.objet        = brouillon.objet;
            msg.dateEnvoi    = DateTime.Now;
            msg.NoExpediteur = (int)SessionUtilisateur.UtilisateurCourant.No;

            var destinataires            = msg.PPDestinataires.ToList();
            var NosDestinatairesAAjouter = new List <int?>(brouillon.destinataires);
            var NosDestinatairesADelete  = new List <int>();

            foreach (var dest in destinataires)
            {
                if (dest.NoDestinataire < 0 && dest.NoDestinataire > -4)
                {
                    context.PPDestinataires.DeleteAllOnSubmit(msg.PPDestinataires);
                    msg.PPDestinataires.AddRange(ConvToDestinataire(CasSpeciaux(dest.NoDestinataire), msg));
                    return(msg);
                }

                if (!brouillon.destinataires.Contains(dest.NoDestinataire))
                {
                    NosDestinatairesADelete.Add(dest.NoDestinataire);
                }
                else
                {
                    NosDestinatairesAAjouter.Remove(dest.NoDestinataire);
                }
            }

            var destinatairesADelete = (from dest in context.PPDestinataires
                                        where NosDestinatairesADelete.Contains(dest.NoDestinataire)
                                        select dest);

            context.PPDestinataires.DeleteAllOnSubmit(destinatairesADelete);

            List <PPDestinataire> destinatairesObj = new List <PPDestinataire>(NosDestinatairesAAjouter.Count);

            foreach (var noDest in NosDestinatairesAAjouter)
            {
                if (noDest < 0)
                {
                    context.PPDestinataires.DeleteAllOnSubmit(msg.PPDestinataires);
                    msg.PPDestinataires.AddRange(ConvToDestinataire(CasSpeciaux((int)noDest), msg));
                    return(msg);
                }

                if (!noDest.HasValue)
                {
                    continue;
                }

                var objDest = new PPDestinataire
                {
                    NoMsg          = msg.NoMsg,
                    NoDestinataire = noDest.Value
                };
                destinatairesObj.Add(objDest);
            }

            msg.PPDestinataires.AddRange(destinatairesObj);
            context.PPDestinataires.InsertAllOnSubmit(destinatairesObj);

            return(msg);
        }