private List <PPDestinataire> ConvToDestinataire(List <IUtilisateur> utils, PPMessage message)
 {
     return(utils.Select(u => new PPDestinataire
     {
         EtatLu = (short)EtatLu.NonLu, Lieu = (short)LieuxCourriel.Reception, NoDestinataire = (int)u.No
     }).ToList());
 }
        /// <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 ApercuCourriel(BrouillonViewModel brouillon)
        {
            brouillon.NoMsg = -1;
            PPMessage message = EnregistrerMessage(brouillon);

            try
            {
                PPVendeur vendeur =
                    (from v in context.PPVendeurs
                     where v.NoVendeur == brouillon.destinataires.FirstOrDefault()
                     select v).FirstOrDefault();
                if (vendeur != null)
                {
                    message.DescMsg = message.DescMsg.Replace("X%", (vendeur.Pourcentage * 100).ToString() + "%");
                }
            }
            catch (Exception)
            {
            }


            RejectAllChanges(); //Au cas ou

            return(View(message));
        }
        private void SaveAttachmentToMessage(HttpPostedFileBase file, PPMessage msg)
        {
            Directory.CreateDirectory(Server.MapPath(ATTACHMENTS_DIR));
            file.SaveAs(GetAttachmentPathForMessage(msg));

            msg.FichierJoint = file.FileName;

            context.SubmitChanges();
        }
        private void DeleteAttachmentOfMessage(PPMessage message)
        {
            var physicalPath = GetAttachmentPathForMessage(message);
            var fileInf      = new FileInfo(physicalPath);

            if (!fileInf.Exists)
            {
                throw new IOException("Aucune piece jointe pour ce message");
            }
            fileInf.Delete();
        }
        public ActionResult EnregistrerReponse(int noCourriel)
        {
            PPMessage ogMessage = GetMessageById(noCourriel);

            var maxId = (from m in context.PPMessages
                         select m.NoMsg).ToList().DefaultIfEmpty().Max();
            int noMessage     = maxId + 1;
            var obj           = "re: " + ogMessage.objet;
            var enteteReponse = "<br/><hr/>" +
                                "<p>---------- message repondu ---------</p>" +
                                "<p>De : " + ogMessage.Expediteur.DisplayName + "</p>" +
                                "<p>Date : " + ogMessage.dateEnvoi.Value.ToLongDateString() + "</p>" +
                                "<p>Objet : " + ogMessage.objet + "</p>" +
                                "<br/>";
            var description = enteteReponse + ogMessage.DescMsg;

            PPMessage brouillon = new PPMessage
            {
                objet        = obj,
                DescMsg      = description,
                dateEnvoi    = DateTime.Now,
                Lieu         = 4,
                NoMsg        = noMessage,
                FichierJoint = ogMessage.FichierJoint,
                NoExpediteur = (int)SessionUtilisateur.UtilisateurCourant.No
            };

            context.PPMessages.InsertOnSubmit(brouillon);
            context.PPDestinataires.InsertOnSubmit(
                new PPDestinataire
            {
                NoMsg          = noMessage,
                NoDestinataire = (int)ogMessage.NoExpediteur
            }
                );
            try
            {
                context.SubmitChanges();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError));
            }

            return(Content(noMessage.ToString()));
        }
        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));
        }
예제 #8
0
        public void ReceiveData(byte[] encodedData, AClient client)
        {
            PPMessage message = new PPMessage(encodedData);

            // Unless the server starts refusing requests in the future, this
            // should never be false.
            if (message.ConnectionEstablished)
            {
                if (Jobs[message.ReceiverJobNumber] == null)
                {
                    return;
                }
                if (Jobs[message.ReceiverJobNumber].RemoteJobNumber == -1)
                {
                    Jobs[message.ReceiverJobNumber].RemoteJobNumber = message.SenderJobNumber;
                }
                Jobs[message.ReceiverJobNumber].ProcessMessage(message.Message, client);
            }
        }
예제 #9
0
 public void BeginJob(PhilesJobType jobType, AClient client, object[] param)
 {
     if (jobType == PhilesJobType.JOB_CLIENT_PHILES)
     {
         int       nJobCode        = Jobs.AddJob(PhilesJobType.JOB_CLIENT_PHILES);
         PPMessage beginJobMessage = new PPMessage(false, nJobCode, (int)PhilesJobType.JOB_PHILES);
         client.Send(beginJobMessage.GetEncodedData());
     }
     else if (jobType == PhilesJobType.JOB_CLIENT_DIRECTORY_LISTING)
     {
         int       nJobCode        = Jobs.AddJob(PhilesJobType.JOB_CLIENT_DIRECTORY_LISTING, param);
         PPMessage beginJobMessage = new PPMessage(false, nJobCode, (int)PhilesJobType.JOB_SERVER_DIRECTORY_LISTING);
         client.Send(beginJobMessage.GetEncodedData());
     }
     else if (jobType == PhilesJobType.JOB_CLIENT_FILE_UPLOAD)
     {
         int       nJobCode        = Jobs.AddJob(PhilesJobType.JOB_CLIENT_FILE_UPLOAD, param);
         PPMessage beginJobMessage = new PPMessage(false, nJobCode, (int)PhilesJobType.JOB_SERVER_FILE_UPLOAD);
         client.Send(beginJobMessage.GetEncodedData());
     }
 }
        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);
        }
 private string GetAttachmentPathForMessage(PPMessage message)
 {
     return(Server.MapPath(ATTACHMENTS_DIR + "/attachment-" + message.NoMsg));
 }