示例#1
0
        private void MailCommande(Client client, Commande commande, PanierViewModel panier)
        {
            string mailFoodTruck         = ConfigurationManager.AppSettings["MailFoodTruck"];
            string lesArticlesDansLeMail = "";

            foreach (ArticleViewModel article in panier.ArticlesDetailsViewModel)
            {
                lesArticlesDansLeMail += "\n" + article.Quantite + " x " + article.Article.Nom + " = " + (article.Quantite * article.Article.PrixTTC).ToString("C2", new CultureInfo("fr-FR"));
            }

            CultureInfo cultureinfoFr = new CultureInfo("fr-FR");
            string      nomClient     = client.Nom ?? "non renseigné";
            string      prenomClient  = client.Prenom ?? "non renseigné";
            string      emailClient   = client.Email ?? "non@renseigne";
            string      corpsDuMailEnCommunClientFoodtruck =
                $"Nom : {nomClient}\n" +
                $"Prénom : {prenomClient}\n" +
                $"Email : {emailClient}\n\n" +
                $"Articles :{lesArticlesDansLeMail}\n" +
                $"Total de la commande : {commande.PrixTotalTTC.ToString("C2", cultureinfoFr)}\n";

            if (commande.RemiseFidelite > 0)
            {
                corpsDuMailEnCommunClientFoodtruck += $"\nRemise fidélité : {commande.RemiseFidelite.ToString("C2", cultureinfoFr)}";
            }
            if (commande.RemiseCommerciale > 0)
            {
                corpsDuMailEnCommunClientFoodtruck += $"\nRemise commerciale : {commande.RemiseCommerciale.ToString("C2", cultureinfoFr)}";
            }

            string sujet     = $"Nouvelle commande numéro {commande.Id}";
            string corpsMail = $"Nouvelle commande {commande.Id}. Merci de la préparer pour le {commande.DateRetrait.ToString("dddd dd MMMM HH:mm")}\n" + corpsDuMailEnCommunClientFoodtruck;


            Utilitaire.EnvoieMail(mailFoodTruck, sujet, corpsMail);

            if (client.Id != 0)
            {
                string sujetMailClient = $"Nouvelle commande numéro {commande.Id} prise en compte";
                string corpsMailClient = $"Bonjour {client.Prenom}\n" +
                                         $"Votre dernière commande a bien été prise en compte." +
                                         $"\nVous pourrez venir la chercher le {commande.DateRetrait.ToString("dddd dd MMMM")}" +
                                         $" à partir de {commande.DateRetrait.ToString("HH:mm").Replace(":", "h")}" +
                                         $"\nMerci de votre confiance\n\n" +
                                         "voici le récapitulatif : \n" + corpsDuMailEnCommunClientFoodtruck;
                string       objetEvenement       = "FoodTruckLyon";
                string       descriptionEvenement = $"Chercher commande FoodTruckLyon {commande.Id}\n {corpsDuMailEnCommunClientFoodtruck}";
                string       adresseEvenement     = "17 Rue des Gones 69007 Lyon";
                DateTime     dateDebutEvenement   = commande.DateRetrait;
                DateTime     dateFinEvenement     = commande.DateRetrait.AddMinutes(int.Parse(ConfigurationManager.AppSettings["PasCreneauxHoraire"]));
                double       lattitudeEvenement   = 45.796386;
                double       longitudeEvenement   = 5.0379093;
                MemoryStream pieceJointe          = Utilitaire.CreerEvenementCalendrier(objetEvenement, descriptionEvenement, adresseEvenement, dateDebutEvenement, dateFinEvenement, lattitudeEvenement, longitudeEvenement);
                Utilitaire.EnvoieMail(emailClient, sujetMailClient, corpsMailClient, pieceJointe);
            }
        }
示例#2
0
 public ActionResult PendantFermetures(int id)
 {
     if (AdminCommande && id == 0)
     {
         CommandeDAL     commandeDAL            = new CommandeDAL();
         List <Commande> commandes              = commandeDAL.CommandesPendantFermetures();
         List <int>      commandesIdMailInconnu = new List <int>();
         foreach (Commande commande in commandes)
         {
             int commandeId = commande.Id;
             commandeDAL.Annuler(commandeId);
             int clientId = commande.ClientId;
             if (clientId != 0)
             {
                 Client client       = new ClientDAL().Details(clientId);
                 string objetMail    = $"Problème commande {commandeId} : Fermeture de votre foodtruck";
                 string corpsMessage = $"Bonjour {client.Prenom}\n\n" +
                                       $"Vous avez passé la commande numéro {commandeId} pour le {commande.DateRetrait.ToString("dddd dd MMMM yyyy à HH:mm").Replace(":", "h")} et nous vous en remercions.\n\n" +
                                       $"Malheureusement nous ne sommes plus ouvert pendant votre horaire de retrait et nous avons été contraint de l'annuler.\n\n" +
                                       $"Nous vous invitons à choisir un autre créneau de retrait (vous pouvez dupliquer votre commande annulée dans votre espace client).\n\n" +
                                       $"Nous vous prions de nous excuser pour la gène occasionnée.\n\n" +
                                       $"Bien cordialement\n" +
                                       $"Votre équipe Foodtrucklyon";
                 string adresseMailClient = client.Email;
                 Utilitaire.EnvoieMail(adresseMailClient, objetMail, corpsMessage);
             }
             else
             {
                 commandesIdMailInconnu.Add(commandeId);
             }
         }
         string message = $"Les {commandes.Count} commande(s) ont bien été annulées et les clients ont reçu un mail";
         if (commandesIdMailInconnu.Count != 0)
         {
             message += "\nAttention :\nLes clients des commandes qui suivent n'ont pas pu être prévenus car ils n'ont pas rensigné les adresses mail :\n";
             foreach (int commandeId in commandesIdMailInconnu)
             {
                 message += $"-{commandeId}-  ";
             }
         }
         TempData["message"] = new Message(message, TypeMessage.Ok);
         return(RedirectToAction(ActionNom));
     }
     else
     {
         return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
     }
 }
示例#3
0
        public ActionResult DonnerDroitsAdmin(string email, string nom, string prenom)
        {
            if (AdminClient)
            {
                int      dureeValidite    = int.Parse(ConfigurationManager.AppSettings["DureeValiditeLienDroitsAdmin"]);
                string   codeVerification = Guid.NewGuid().ToString("n");
                string   url               = $"{Request.Url.Scheme}://{Request.Url.Authority}/Compte/ObtenirDroitsAdmin/{codeVerification}";
                DateTime finValidite       = DateTime.Now.AddMinutes(dureeValidite);
                string   stringFinValidite = finValidite.ToString("dddd dd MMMM yyyy à HH:mm").Replace(":", "h");

                Client client = new Client
                {
                    Email  = email,
                    Nom    = nom,
                    Prenom = prenom,
                };
                new CreerAdminDAL().Ajouter(client, codeVerification, DateTime.Now.AddMinutes(dureeValidite));
                string sujetMail = "Vous avez les droits d'administration";
                string message   = $"Bonjour {prenom} {nom}\n\n" +
                                   $"{Client.Prenom} {Client.Nom}, de FoodTruckLyon vous a donné les droits d'accès administrateur au site.\n" +
                                   "Veuillez cliquer sur le lien suivant ou recopier l'adresse dans votre navigateur afin de valider l'action:\n" +
                                   "\n" +
                                   url +
                                   "\n\n" +
                                   $"Attention, ce lien expirera le {stringFinValidite} et n'est valable qu'une seule fois\nvotre compte gardera l'accès administrateur sauf si un super-administrateur en décide autrement.";
                if (Utilitaire.EnvoieMail(email, sujetMail, message))
                {
                    TempData["message"] = new Message($"Un email de confirmation vient d'être envoyé à l'adresse {email}.\nIl expirera le {stringFinValidite}", TypeMessage.Info);
                }
                else
                {
                    TempData["message"] = new Message("Erreur dans l'envoi du mail.\nVeuillez rééssayer plus tard", TypeMessage.Erreur);
                }

                return(View());
            }
            else
            {
                return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
            }
        }
        public ActionResult ObtenirDroitsAdmin(string codeVerification)
        {
            ClientDAL  clientDAL  = new ClientDAL();
            CreerAdmin creerAdmin = new CreerAdminDAL().Verifier(codeVerification);

            if (creerAdmin != null)
            {
                Client = clientDAL.Details(creerAdmin.Email);
                string mdp = "";
                if (Client == null)
                {
                    mdp = Utilitaire.StringAleatoire(12);
                    string telephone = "";
                    Client = clientDAL.Creation(creerAdmin.Email, creerAdmin.Email, mdp, creerAdmin.Nom, creerAdmin.Prenom, telephone);
                }
                clientDAL.DonnerDroitAdmin(Client.Id);
                {
                    string mailFoodTruck = ConfigurationManager.AppSettings["MailFoodTruck"];
                    string objet         = $"{Client.Prenom.Trim()} {Client.Nom.Trim()} a abtenu les droit admin";
                    string messageMail   = $"le client {Client.Prenom.Trim()} {Client.Nom.Trim()} a obtenu les droits admin";
                    Utilitaire.EnvoieMail(mailFoodTruck, objet, messageMail);
                }
                ViewBag.Client      = Client;
                Session["ClientId"] = Client.Id;
                RecupererPanierProspectPuisSupprimer();
                SupprimerCookieProspect();
                ConnexionAutomatique();
                string message = "Félicitation ! Vous êtes maintenant administrateur du site.\nVous pouvez accéder au menu Administration";
                if (mdp != "")
                {
                    message += $"\nVeuillez noter votre mot de passe ou bien le changer : {mdp}";
                }
                TempData["message"] = new Message(message, TypeMessage.Info);
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                TempData["message"] = new Message("Le lien d'obtention des droits d'administration n'est plus valable.\nMerci de refaire une demande", TypeMessage.Interdit);
                return(RedirectToAction("Index", "Home"));
            }
        }
        public ActionResult OubliMotDePasse(string action, string email, string mdp, string mdp2)
        {
            if (action == "generationMail")
            {
                int    dureeValidite    = int.Parse(ConfigurationManager.AppSettings["DureeValiditeLienReinitialisationMotDePasse"]);
                string codeVerification = Guid.NewGuid().ToString("n") + email.GetHash();
                string url    = HttpContext.Request.Url.ToString() + '/' + codeVerification;
                Client client = new ClientDAL().Details(email);
                if (client != null)
                {
                    DateTime finValidite       = DateTime.Now.AddMinutes(dureeValidite);
                    string   stringFinValidite = finValidite.ToString("dddd dd MMMM yyyy à HH:mm").Replace(":", "h");
                    new OubliMotDePasseDAL().Ajouter(client.Id, codeVerification, DateTime.Now.AddMinutes(dureeValidite));
                    string sujetMail = "Procédure de réinitialisation de votre mot de passe";
                    string message   = "Bonjour\n" +
                                       "Vous avez oublié votre mot de passe et avez demandé à le réinitialiser.\n" +
                                       "Si vous êtes bien à l'origine de cette demande, veuillez cliquer sur le lien suivant ou recopier l'adresse dans votre navigateur :\n" +
                                       "\n" +
                                       url +
                                       "\n\nVous serez alors redirigé vers une page de réinitialisation de votre mot de passe.\n" +
                                       $"Attention, ce lien expirera le {stringFinValidite} et n'est valable qu'une seule fois";

                    if (Utilitaire.EnvoieMail(email, sujetMail, message))
                    {
                        TempData["message"] = new Message($"Un email de réinitialisation de votre mot de passe vient de vous être envoyé.\nIl expirera dans {dureeValidite} minutes.", TypeMessage.Info);
                    }
                    else
                    {
                        TempData["message"] = new Message("Erreur dans l'envoi du mail.\nVeuillez réessayer dans quelques instants", TypeMessage.Erreur);
                    }
                }
                else
                {
                    TempData["message"] = new Message("Nous n'avons pas de compte client avec cette adresse email.\nMerci de vérifier votre saisie", TypeMessage.Erreur);
                }

                return(RedirectToAction("Connexion", "Compte"));
            }
            else if (action == "changementMotDePasse")
            {
                if (VerifMdp(mdp, mdp2))
                {
                    ClientDAL clientDAL = new ClientDAL();
                    if (clientDAL.Modification(Client.Id, mdp) == 1)
                    {
                        TempData["message"] = new Message("La modification de votre mot de passe a bien été prise en compte", TypeMessage.Ok);
                    }
                }
                else
                {
                    TempData["message"] = new Message("Mauvais choix de mots de passe.\nVeuillez réessayer (minimum 8 caractères et identiques)", TypeMessage.Erreur);
                    return(View());
                }

                CommandeDAL commandeDAL = new CommandeDAL();
                ViewBag.RemiseTotalClient = commandeDAL.RemiseTotaleClient(Client.Id);
                return(RedirectToAction("Connexion", "Compte"));
            }
            else
            {
                return(RedirectToAction("Connexion", "Compte"));
            }
        }