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