public async Task <ActionResult> Payment(ShoppingCartVM carts) { if (carts == null) { return(NotFound()); } string userID = User.FindFirst(ClaimTypes.NameIdentifier).Value; //altijd in een try catch stoppen try { Boeking boeking; Zetels zetels; BoekingService boekingService = new BoekingService(); TrajectService trajectService = new TrajectService(); RitService ritService = new RitService(); ZetelService zetelService = new ZetelService(); StationService stationService = new StationService(); foreach (CartVM cart in carts.Cart) { boeking = new Boeking(); zetels = new Zetels(); Traject t = trajectService.Get(cart.TrajectNr); //alle boekingen ophalen van de boekingsdatum var boekingen = boekingService.GetAllByDate(DateTime.Parse(cart.Vertrekdatum)); int ZetelID = 0; //het komene blok code dient om de boekingen die niet mogelijk zijn wegens plaatsgebrek te blokkeren. if (t.Rit1Id != 0) { //type trein opvragne van de eerste rit TreinType TypeRit1 = ritService.GetTreinTypeRit(t.Rit1Id); int MaxAantalPersonen = 0; int HuidigAantalPersonen = 0; //maxAantalPersonen instellen aan de hand van de klasse if (cart.Klasse.Equals("Economic")) { MaxAantalPersonen = TypeRit1.CapaciteitEconomic; } else if (cart.Klasse.Equals("Business")) { MaxAantalPersonen = TypeRit1.CapaciteitBusiness; } foreach (Boeking b in boekingen) { //trjact ophalen dat we willen controleren Traject TeTestenTraject = trajectService.Get(b.TrajectId); //lijst om alle ritId's in te steken. List <int> ritIDs = new List <int>(); ritIDs.Add(TeTestenTraject.Rit1Id); if (TeTestenTraject.Rit2Id != null) { ritIDs.Add((int)TeTestenTraject.Rit2Id); } if (TeTestenTraject.Rit3Id != null) { ritIDs.Add((int)TeTestenTraject.Rit3Id); } if (ritIDs.Contains(t.Rit1Id)) { HuidigAantalPersonen++; } } if (HuidigAantalPersonen + 1 <= MaxAantalPersonen) { zetels.Rit1Zetel = HuidigAantalPersonen + 1; cart.Zetel1 = HuidigAantalPersonen + 1; } else { Rit r = ritService.Get(t.Rit1Id); Station s = stationService.Get(r.VertrekStationId); return(View("TeWeinigPlaatsen", s.StationNaam)); } } if (t.Rit2Id != 0 && t.Rit2Id != null) { TreinType TypeRit2 = ritService.GetTreinTypeRit((int)t.Rit2Id); int MaxAantalPersonen = 0; int HuidigAantalPersonen = 0; if (cart.Klasse.Equals("Economic")) { MaxAantalPersonen = TypeRit2.CapaciteitEconomic; } else if (cart.Klasse.Equals("Business")) { MaxAantalPersonen = TypeRit2.CapaciteitBusiness; } foreach (Boeking b in boekingen) { Traject TeTestenTraject = trajectService.Get(b.TrajectId); List <int> ritIDs = new List <int>(); ritIDs.Add(TeTestenTraject.Rit1Id); if (TeTestenTraject.Rit2Id != null) { ritIDs.Add((int)TeTestenTraject.Rit2Id); if (TeTestenTraject.Rit3Id != null) { ritIDs.Add((int)TeTestenTraject.Rit3Id); } if (ritIDs.Contains((int)t.Rit2Id)) { HuidigAantalPersonen++; } } } if (HuidigAantalPersonen + 1 <= MaxAantalPersonen) { zetels.Rit2Zetel = HuidigAantalPersonen + 1; cart.Zetel2 = HuidigAantalPersonen + 1; } else { Rit r = ritService.Get((int)t.Rit2Id); Station s = stationService.Get(r.VertrekStationId); return(View("TeWeinigPlaatsen", s.StationNaam)); } } if (t.Rit3Id != 0 && t.Rit3Id != null) { TreinType TypeRit3 = ritService.GetTreinTypeRit((int)t.Rit3Id); int MaxAantalPersonen = 0; int HuidigAantalPersonen = 0; if (cart.Klasse.Equals("Economic")) { MaxAantalPersonen = TypeRit3.CapaciteitEconomic; } else if (cart.Klasse.Equals("Business")) { MaxAantalPersonen = TypeRit3.CapaciteitBusiness; } foreach (Boeking b in boekingen) { Traject TeTestenTraject = trajectService.Get(b.TrajectId); List <int> ritIDs = new List <int>(); ritIDs.Add(TeTestenTraject.Rit1Id); if (TeTestenTraject.Rit2Id != null) { ritIDs.Add((int)TeTestenTraject.Rit2Id); } if (TeTestenTraject.Rit3Id != null) { ritIDs.Add((int)TeTestenTraject.Rit3Id); if (ritIDs.Contains((int)t.Rit3Id)) { HuidigAantalPersonen++; } } } if (HuidigAantalPersonen + 1 <= MaxAantalPersonen) { zetels.Rit3Zetel = HuidigAantalPersonen + 1; cart.Zetel3 = HuidigAantalPersonen + 1; } else { Rit r = ritService.Get((int)t.Rit3Id); Station s = stationService.Get(r.VertrekStationId); return(View("TeWeinigPlaatsen", s)); } } try { //zetels instellen en indien dit niet lukt een exception opvangen zetelService.Create(zetels); ZetelID = zetels.ZetelId; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } boeking.BoekingsDatum = DateTime.UtcNow; boeking.VertrekDatum = DateTime.Parse(cart.Vertrekdatum); boeking.Naam = cart.Naam; boeking.Voornaam = cart.Voornaam; if (cart.HotelId != null && cart.HotelId != 0) { boeking.HotelId = cart.HotelId; } else { boeking.HotelId = null; } boeking.TrajectId = cart.TrajectNr; boeking.LoginId = userID; boeking.Klasse = cart.Klasse; boeking.ZetelId = ZetelID; //boeking aanmaken en indien dit niet lukt het probleem loggen try { boekingService.Create(boeking); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } //mail if (ModelState.IsValid) { UserService userService = new UserService(); AspNetUsers user = userService.Get(userID); try { var naam = "TGV"; var message = "Bedankt om te boeken bij TGV"; var body = "<p>Email From: " + "{0} ([email protected])</p><p>Message: " + "</p><p>{1}</p>"; body = string.Format(body, naam, message); EmailSender mail = new EmailSender(); await mail.SendEmailAsync(user.Email, "Bevestiging boeking", body); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex); } } //mail ViewBag.Ritten = ritService.GetAll().ToList(); ViewBag.Stations = stationService.GetAll().ToList(); ViewBag.Trajecten = trajectService.GetAll().ToList(); return(View("Payment", carts)); }
public IActionResult KiezenRit(BoekenVM b) { if (b == null) { return NotFound(); } //System.Diagnostics.Debug.WriteLine("printen in console"); //inputcontrole if (b.Eindpunt == b.Vertrekpunt) { ModelState.AddModelError(nameof(b.Eindpunt), "Eindpunt en vertrekpunt mogen niet dezelfde waarde hebben"); } if (b.Eindpunt == 0) { ModelState.AddModelError(nameof(b.Eindpunt), "Gelieve een eindpunt te selecteren"); } if (b.Vertrekpunt == 0) { ModelState.AddModelError(nameof(b.Eindpunt), "Gelieve een eindpunt te selecteren"); } if(b.Vertrekdatum == null) { ModelState.AddModelError(nameof(b.Vertrekdatum), "Gelieve een datum op te geven in formaat yyyy - mm - dd"); } else { if (b.Vertrekdatum.Equals("")) { ModelState.AddModelError(nameof(b.Vertrekdatum), "Gelieve een datum op te geven in formaat yyyy - mm - dd"); } } for (int a = 0; a < b.AantalPersonen; a++) { if (string.IsNullOrEmpty(b.Namen[a]) || b.Namen[a].Length < 3 || b.Namen[a].Length > 30) { ModelState.AddModelError(nameof(b.Namen), "Gelieve een geldige naam voor persoon " + (a + 1) + " op te geven"); } if (string.IsNullOrEmpty(b.Voornamen[a]) || b.Voornamen[a].Length < 3 || b.Voornamen[a].Length > 30) { ModelState.AddModelError(nameof(b.Voornamen), "Gelieve een geldige voornaam voor persoon " + (a + 1) + " op te geven"); } } if (ModelState.IsValid) { var vertrekpunt = b.Vertrekpunt; var aankomst = b.Eindpunt; var route = new List<Traject>(); b.VertrekpuntNaam = stationService.Get(b.Vertrekpunt).StationNaam; b.EindpuntNaam = stationService.Get(b.Eindpunt).StationNaam; //eerst gaan we de route bepalen, deze houd nog geen rekening met de tijstippen, dit doen we puur voor de route en overstappen. var list = ritService.GetAllByCitiesWithDate(b.Vertrekpunt, b.Eindpunt, DateTime.Parse(b.Vertrekdatum)); //als de lijst leeg is wil dit zeggen dat de route uit meer dan één rit bestaat if (list.Count() == 0) { var listVertrekRitten = ritService.GetAllByDepartCity(vertrekpunt); //datecontrole toevoegen var listAankomstRitten = ritService.GetAllByArrivalCity(aankomst); //datecontrole toevoegen Boolean gevonden = false; foreach (var item in listVertrekRitten) { //listVertrekRitten2.Add(item.AankomstStationId); foreach (var item2 in listAankomstRitten) { //listAankomstRitten2.Add(item.VertrekStationId); if (item.AankomstStationId == item2.VertrekStationId) { //trahect bestaat uit 2 ritten Traject traject = new Traject { Rit1Id = item.RitId, Rit2Id = item2.RitId }; var trajectenList = new List<Traject>(); trajectenList.Add(traject); route = trajectenList; gevonden = true; } } } if (!gevonden) { //indien er nog stteds geen traject is gevonden zal het bestaan uit 2 tussenpunten foreach (var item in listVertrekRitten) { foreach (var item2 in listAankomstRitten) { if (ritService.GetAllByCitiesWithDate(item.AankomstStationId, item2.VertrekStationId, DateTime.Parse(b.Vertrekdatum)).Count() != 0) { Traject traject = new Traject { Rit1Id = item.RitId, Rit2Id = ritService.GetAllByCitiesWithDate(item.AankomstStationId, item2.VertrekStationId, DateTime.Parse(b.Vertrekdatum)).ElementAt(0).RitId, Rit3Id = item2.RitId }; var trajectenList = new List<Traject>(); trajectenList.Add(traject); route = trajectenList; gevonden = true; } } } } } else { //traject bestaat uit één rit Traject traject = new Traject { Rit1Id = list.ElementAt(0).RitId }; var trajectenList = new List<Traject>(); trajectenList.Add(traject); route = trajectenList; } //route is bepaald en zal nu aangemaakt worden met de juiste tijdstippen en toegevoegd worden aan de VM if (route[0].Rit3Id == null) { if (route[0].Rit2Id == null) { //traject bestaat uit 0 overstappen Rit r = ritService.Get(route[0].Rit1Id); var ritten = ritService.GetAllByCitiesWithDate(r.VertrekStationId, r.AankomstStationId, DateTime.Parse(b.Vertrekdatum)); var trajecten = new List<Traject>(); foreach (var rit in ritten) { Traject traject = new Traject { Rit1Id = rit.RitId }; if (trajectService.GetTrajecten1Rit(traject.Rit1Id).Count() != 0) { traject = trajectService.GetTrajecten1Rit(traject.Rit1Id).ElementAt(0); } else { trajectService.Create(traject); } //code gilles //Rit rit1 = ritService.Get(traject.Rit1Id); //TreinType treinType1 = treinTypeService.Get(rit1.TreinTypeId); //int MaxAantalPersonen = 0; //int HuidigAantalPersonen = 0; //if (b.Klasse.Equals("Economic")) //{ // MaxAantalPersonen = treinType1.CapaciteitEconomic; //} //else if (b.Klasse.Equals("Business")) //{ // MaxAantalPersonen = treinType1.CapaciteitBusiness; //} //var boekingen = boekingService.GetAllByDate(DateTime.Parse(b.Vertrekdatum)); //Traject TeTestenTraject = traject; //List<int> ritIDs = new List<int>(); //ritIDs.Add(TeTestenTraject.Rit1Id); //if (TeTestenTraject.Rit2Id != null) //{ // ritIDs.Add((int)TeTestenTraject.Rit2Id); //} //if (TeTestenTraject.Rit3Id != null) //{ // ritIDs.Add((int)TeTestenTraject.Rit3Id); // if (ritIDs.Contains((int)t.Rit3Id)) // { // HuidigAantalPersonen++; // } //} //code gilles trajecten.Add(traject); b.AlleRitten = ritService.GetAll(); }; b.Trajecten = trajecten; } else { //traject bestaat uit 1 overstap Rit r = ritService.Get(route[0].Rit1Id); Rit r1 = ritService.Get(route[0].Rit2Id ?? default(int)); var ritten = ritService.GetAllByCitiesWithDate(r.VertrekStationId, r.AankomstStationId, DateTime.Parse(b.Vertrekdatum)); var trajecten = new List<Traject>(); foreach (var rit in ritten) { Rit rit2 = null; if (ritService.GetRitByCitiesWithDateAndTime(r1.VertrekStationId, r1.AankomstStationId, DateTime.Parse(b.Vertrekdatum), rit.AankomstUur).Count() > 0) { rit2 = ritService.GetRitByCitiesWithDateAndTime(r1.VertrekStationId, r1.AankomstStationId, DateTime.Parse(b.Vertrekdatum), rit.AankomstUur).ElementAt(0); } else { rit2 = ritService.GetAllByCitiesWithDate(r1.VertrekStationId, r1.AankomstStationId, DateTime.Parse(b.Vertrekdatum).AddDays(1)).ElementAt(0); } Traject traject = new Traject { Rit1Id = rit.RitId, Rit2Id = rit2.RitId }; if (trajectService.GetTrajecten2Rit(traject.Rit1Id, (int)traject.Rit2Id).Count() != 0) { traject = trajectService.GetTrajecten2Rit(traject.Rit1Id, (int)traject.Rit2Id).ElementAt(0); } else { trajectService.Create(traject); } trajecten.Add(traject); //einde code gilles }; b.Trajecten = trajecten; b.AlleRitten = ritService.GetAll(); } } else { //traject bestaat uit 2 overstappen Rit r = ritService.Get(route[0].Rit1Id); Rit r1 = ritService.Get(route[0].Rit2Id ?? default(int)); Rit r2 = ritService.Get(route[0].Rit3Id ?? default(int)); var ritten = ritService.GetAllByCitiesWithDate(r.VertrekStationId, r.AankomstStationId, DateTime.Parse(b.Vertrekdatum)); var trajecten = new List<Traject>(); foreach (var rit in ritten) { Rit rit2 = null; if (ritService.GetRitByCitiesWithDateAndTime(r1.VertrekStationId, r1.AankomstStationId, DateTime.Parse(b.Vertrekdatum), rit.AankomstUur).Count() > 0) { rit2 = ritService.GetRitByCitiesWithDateAndTime(r1.VertrekStationId, r1.AankomstStationId, DateTime.Parse(b.Vertrekdatum), rit.AankomstUur).ElementAt(0); } else { rit2 = ritService.GetAllByCitiesWithDate(r1.VertrekStationId, r1.AankomstStationId, DateTime.Parse(b.Vertrekdatum).AddDays(1)).ElementAt(0); } Rit rit3 = null; if (ritService.GetRitByCitiesWithDateAndTime(r2.VertrekStationId, r2.AankomstStationId, DateTime.Parse(b.Vertrekdatum), rit2.AankomstUur).Count() > 0) { rit3 = ritService.GetRitByCitiesWithDateAndTime(r2.VertrekStationId, r2.AankomstStationId, DateTime.Parse(b.Vertrekdatum), rit2.AankomstUur).ElementAt(0); } else { rit3 = ritService.GetAllByCitiesWithDate(r2.VertrekStationId, r2.AankomstStationId, DateTime.Parse(b.Vertrekdatum).AddDays(1)).ElementAt(0); } Traject traject = new Traject { Rit1Id = rit.RitId, Rit2Id = rit2.RitId, Rit3Id = rit3.RitId }; if (trajectService.GetTrajecten3Rit(traject.Rit1Id, (int)traject.Rit2Id, (int)traject.Rit3Id).Count() != 0) { traject = trajectService.GetTrajecten3Rit(traject.Rit1Id, (int)traject.Rit2Id, (int)traject.Rit3Id).ElementAt(0); } else { trajectService.Create(traject); } trajecten.Add(traject); }; b.Trajecten = trajecten; b.AlleRitten = ritService.GetAll(); } return View(b); } else { ViewBag.StationLijst = new SelectList(stationService.GetAll(), "StationId", "StationNaam"); ViewBag.HotelLijst = new SelectList(hotelService.GetAll(), "HotelId", "HotelNaam"); return View("Boeken", b); } }