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); } }
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)); } }
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")); } }