public async Task <IActionResult> Edit(int id, [Bind("Id,NumeroCb,PrixTotal,IdClient,IdEtatDossier,IdVoyage")] Dossierresa dossierresa)
        {
            if (id != dossierresa.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(dossierresa);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DossierresaExists(dossierresa.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdClient"]      = new SelectList(_context.Client, "Id", "Id", dossierresa.IdClient);
            ViewData["IdEtatDossier"] = new SelectList(_context.Etatdossier, "Id", "Libelle", dossierresa.IdEtatDossier);
            ViewData["IdVoyage"]      = new SelectList(_context.Voyage, "Id", "Descriptif", dossierresa.IdVoyage);
            return(View(dossierresa));
        }
Пример #2
0
        public async Task <IActionResult> ValiderResa(Dossierresa dossierresa)
        {
            if (ModelState.IsValid)
            {
                var personne = await _context.Personne.Where(p => p.Email == User.FindFirstValue(ClaimTypes.Name)).FirstOrDefaultAsync();

                if (personne.TypePers == 4)
                {
                    personne.TypePers = 1;
                    _context.Client.Add(new BoVoyage.Models.Client()
                    {
                        Id = personne.Id
                    });
                }

                foreach (var voyageur in HttpContext.Session.Get <List <Personne> >("voyageurs"))
                {
                    if (voyageur.Nom != null)
                    {
                        if (!_context.Personne.Where(p => p.Email == voyageur.Email).Any())
                        {
                            voyageur.TypePers = 2;
                            _context.Personne.Add(voyageur);
                        }
                        await _context.SaveChangesAsync();

                        _context.Voyageur.Add(new Voyageur()
                        {
                            Id = voyageur.Id, Idvoyage = HttpContext.Session.Get <int>("idVoyage")
                        });
                    }
                }
                _context.Voyageur.Add(new Voyageur()
                {
                    Id = personne.Id, Idvoyage = HttpContext.Session.Get <int>("idVoyage")
                });
                var dossier = new Dossierresa()
                {
                    NumeroCb = dossierresa.NumeroCb, IdClient = personne.Id, IdEtatDossier = 2, IdVoyage = HttpContext.Session.Get <int>("idVoyage"), PrixTotal = HttpContext.Session.Get <decimal>("prix")
                };
                _context.Personne.Update(personne);
                _context.Dossierresa.Add(dossier);
                var voyage = await _context.Voyage.FindAsync(HttpContext.Session.Get <int>("idVoyage"));

                voyage.PlacesDispo = voyage.PlacesDispo - (HttpContext.Session.Get <List <Personne> >("voyageurs").Count() + 1);
                _context.Voyage.Update(voyage);
                await _context.SaveChangesAsync();

                return(View());
            }
            ViewBag.Prix = HttpContext.Session.Get <double>("prix");
            return(View("Paiement", dossierresa));
        }
        public async Task <IActionResult> Create([Bind("Id,NumeroCb,PrixTotal,IdClient,IdEtatDossier,IdVoyage")] Dossierresa dossierresa)
        {
            if (ModelState.IsValid)
            {
                _context.Add(dossierresa);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdClient"]      = new SelectList(_context.Client, "Id", "Id", dossierresa.IdClient);
            ViewData["IdEtatDossier"] = new SelectList(_context.Etatdossier, "Id", "Libelle", dossierresa.IdEtatDossier);
            ViewData["IdVoyage"]      = new SelectList(_context.Voyage, "Id", "Descriptif", dossierresa.IdVoyage);
            return(View(dossierresa));
        }
Пример #4
0
        public IActionResult EnregistrerResa([Bind("NumeroCb", "PrixTotal", "IdClient", "IdVoyage")] Dossierresa dossier)
        {
            //TODO comments & errors

            dossier.IdEtatDossier = 1;

            try
            {
                _context.Dossierresa.Add(dossier);
                _context.SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }

            return(RedirectToAction("Index", "Dossierresas"));
        }
        public async Task <IActionResult> Edit(int id, [Bind("Id,NumeroCb,PrixTotal,IdClient,IdEtatDossier,IdVoyage")] Dossierresa dossierresa)
        {
            if (id != dossierresa.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(dossierresa);
                    if (dossierresa.IdEtatDossier == 2)//dossier Validé
                    {
                        var voyage = await _context.Voyage.Include(v => v.Voyageur).Where(v => v.Id == dossierresa.IdVoyage).FirstOrDefaultAsync();

                        voyage.PlacesDispo -= 1 + voyage.Voyageur.Count();
                        _context.Update(voyage);
                    }
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DossierresaExists(dossierresa.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["IdClient"]      = new SelectList(_context.Client, "Id", "Id", dossierresa.IdClient);
            ViewData["IdEtatDossier"] = new SelectList(_context.Etatdossier, "Id", "Libelle", dossierresa.IdEtatDossier);
            ViewData["IdVoyage"]      = new SelectList(_context.Voyage, "Id", "Descriptif", dossierresa.IdVoyage);
            return(View(dossierresa));
        }
Пример #6
0
        public IActionResult Payer(int idPersonne, int idVoyage, [Bind("Email", "Telephone", "Datenaissance")] List <Personne> voyageurs)
        {
            //Récupération de la personne
            var client = _context.Personne.Find(idPersonne);

            //Vérifie si la personne qui effectue une réservation est déjà enregistrée en tant que Client ou non
            if (!_context.Client.Any(c => c.Id == idPersonne))
            {
                client.TypePers = 1;
                client.Client   = new Models.Client {
                    Id = idPersonne
                };
            }

            //Récupération du voyage à réserver
            var voyage = _context.Voyage.Include(v => v.IdDestinationNavigation).FirstOrDefault(v => v.Id == idVoyage);

            var price = voyage.PrixHt;

            foreach (var item in voyageurs)
            {
                //Vérifie que l'adresse mail de chaque voyageur est différente de celle du client
                if (item.Email == client.Email)
                {
                    return(BadRequest($"L'adresse mail {item.Email} est déjà utilisée par le client, merci d'utiliser une adresse mail différente."));
                }

                if (!_context.Personne.Where(p => p.Email == item.Email).Any())
                {
                    item.Civilite = "";
                    item.Nom      = "";
                    item.Prenom   = "";
                    item.TypePers = 2;
                    item.Datenaissance ??= null;
                    item.Telephone ??= null;

                    try
                    {
                        //Enregistre la personne dans un premier temps, afin de pouvoir récupérer son ID et l'assigner en tant que voyageur
                        _context.Personne.Add(item);
                        _context.SaveChanges();
                    }
                    catch (DbUpdateException dbue)
                    {
                        var sqle = (SqlException)dbue.InnerException;

                        //Vérifie si l'erreur reçue a pour numéro 515, et renvoie un message associé
                        if (sqle.Number == 515)
                        {
                            return(BadRequest("L'adresse email doit être renseignée et unique pour tous les voyageurs."));
                        }
                    }
                    catch (Exception)
                    {
                        return(BadRequest("Une erreur innatendue est survenue. Merci de rééssayer."));
                    }

                    //Instancie le voyageur et sauvegarde sa liaison
                    Voyageur voyageur = new Voyageur()
                    {
                        Id = item.Id, Idvoyage = idVoyage
                    };
                    _context.Voyageur.Add(voyageur);
                }
                else
                {
                    //Si le voyageur existe déjà en base, l'associe au voyage, au lieu de créer un nouveau voyageur, basé sur son adresse email
                    var voyageur = _context.Personne.Where(p => p.Email == item.Email).FirstOrDefault();
                    _context.Voyageur.Add(new Voyageur()
                    {
                        Id = voyageur.Id, Idvoyage = idVoyage
                    });
                }

                if (item.Datenaissance != null)
                {
                    var age = DateTime.Today.Year - ((DateTime)item.Datenaissance).Year;
                    if (((DateTime)item.Datenaissance).Date > DateTime.Today.AddYears(-age))
                    {
                        age--;
                    }

                    // Réduc enfant
                    if (age <= 12)
                    {
                        price += voyage.PrixHt * (decimal)0.40;
                    }
                    else
                    {
                        price += voyage.PrixHt;
                    }
                }
                else
                {
                    price += voyage.PrixHt;
                }
            }

            //Création du dossier de réservation
            var dossierRes = new Dossierresa
            {
                IdClient      = idPersonne,
                IdEtatDossier = 1,
                IdVoyage      = idVoyage,
                NumeroCb      = "",
                PrixTotal     = price
            };

            try
            {
                _context.Personne.Update(client);
                _context.SaveChanges();
            }
            catch (DbUpdateException dbue)
            {
                var sqle = (SqlException)dbue.InnerException;

                //Vérifie si l'erreur reçue a pour numéro 2627, et renvoie un message associé
                if (sqle.Number == 2627)
                {
                    return(BadRequest("Un des voyageurs participe déjà à ce voyage."));
                }
            }
            catch (Exception)
            {
                return(BadRequest("Une erreur innatendue est survenue. Merci de rééssayer."));
            }

            return(View("Payer", dossierRes));
        }