public async Task <IActionResult> AjoutVoyageur(VoyagePersonnesViewModel voyagePersonnes, int idVoyage, int nbPersonnes)
        {
            //On récupère le voyage en cours
            var voyage = _context.Voyage.Where(v => v.Id == idVoyage).Include(v => v.IdDestinationNavigation).FirstOrDefault();

            voyagePersonnes.Voyage = voyage;

            //On récupère l'utilisateur
            ViewBag.Utilisateur = _context.Personne.Where(p => p.Id == 4).FirstOrDefault();

            //Prix de base pour l'utilisateur
            double prixTva = (double)voyage.PrixHt;

            List <double> prixParVoyageur = PrixParVoyageur((double)voyage.PrixHt, voyagePersonnes.Voyageurs);

            foreach (var item in prixParVoyageur)
            {
                prixTva += item;
            }
            prixTva += prixTva * 0.20;
            ViewBag.PrixParVoyageur = prixParVoyageur;
            ViewBag.Utilisateur     = await _context.Personne.Where(p => p.Email == User.FindFirstValue(ClaimTypes.Name)).FirstOrDefaultAsync();

            ViewBag.PrixTva = prixTva;
            HttpContext.Session.Set("prix", prixTva);
            if (ModelState.IsValid)
            {
                //On stock en session si le voyageur est valide
                HttpContext.Session.Set("voyageurs", voyagePersonnes.Voyageurs);
                return(RedirectToAction(nameof(Index), new { idVoyage, nbPersonnes }));
            }
            return(View("Index", voyagePersonnes));
        }
        // GET: Client/Reservation
        public async Task <IActionResult> Index(int idVoyage, int nbPersonnes)
        {
            //Gestion si la personne a déjà réservé le voyage
            var userMail = User.FindFirstValue(ClaimTypes.Name);
            var personne = await _context.Personne
                           .Where(p => p.Email == userMail).Include(p => p.Client).ThenInclude(c => c.Dossierresa)
                           .FirstOrDefaultAsync();

            if (personne.Client != null && personne.Client.Dossierresa.Where(d => d.IdVoyage == idVoyage).Any())
            {
                return(RedirectToAction("Details", "Personnes"));
            }


            var voyage = await _context.Voyage.Where(v => v.Id == idVoyage).Include(v => v.IdDestinationNavigation).FirstOrDefaultAsync();

            //Prix de base pour l'utilisateur
            double prixTva = (double)voyage.PrixHt;

            //On s'assure que la liste de voyageur en session est déjà instancié
            List <Personne> voyageurs = HttpContext.Session.Get <List <Personne> >("voyageurs") == null ? new List <Personne>() : HttpContext.Session.Get <List <Personne> >("voyageurs");

            List <double> prixParVoyageur = PrixParVoyageur((double)voyage.PrixHt, voyageurs);

            if (nbPersonnes > voyageurs.Count())
            {
                voyageurs.Add(new Personne());
            }

            foreach (var item in prixParVoyageur)
            {
                prixTva += item;
            }
            prixTva += prixTva * 0.20;
            HttpContext.Session.Set("voyageurs", voyageurs);
            ViewBag.Utilisateur = await _context.Personne.Where(p => p.Email == User.FindFirstValue(ClaimTypes.Name)).FirstOrDefaultAsync();

            ViewBag.PrixParVoyageur = prixParVoyageur;
            HttpContext.Session.Set("prix", prixTva);
            ViewBag.PrixTva = prixTva;
            HttpContext.Session.Set("idVoyage", idVoyage);
            var voyagePersonnes = new VoyagePersonnesViewModel(voyage, voyageurs);

            return(View(voyagePersonnes));
        }