public ShoppingCartController() { boekingService = new BoekingService(); hotelService = new HotelService(); ritService = new RitService(); stationService = new StationService(); trajectService = new TrajectService(); treinTypeService = new TreinTypeService(); vakantieDagenService = new VakantieDagenService(); }
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 Home(ZoekListVM zoekListVM) { ModelState.Clear(); if (zoekListVM == null) { return(NotFound()); } if (ModelState.IsValid) { StedenService stedenService = new StedenService(); zoekListVM.Steden = new SelectList(stedenService.GetAll(), "StadId", "Naam"); KlasseService klasseService = new KlasseService(); zoekListVM.Klasses = new SelectList(klasseService.GetAll(), "KlasseId", "Klassenaam"); zoekListVM.GeselecteerdeKlasse = klasseService.GetKlasseVanId(zoekListVM.Klasse); RittenService rittenService = new RittenService(); TrajectService trajectService = new TrajectService(); TicketService ticketService = new TicketService(); VakantiesService vakantiesService = new VakantiesService(); zoekListVM.RoutesHeen = rittenService.GetRittenVanTraject(Convert.ToInt16(zoekListVM.Van), Convert.ToInt16(zoekListVM.Naar)); double totalePrijsh = 0; double totalePrijst = 0; foreach (var item in zoekListVM.RoutesHeen) { if (item.ReisMogelijkheden.Prijs != null) { totalePrijsh += Convert.ToDouble(item.ReisMogelijkheden.Prijs); } var vakantie = new Vakanties(); var extraPlaatsen = 1.0; //controle vakantie if (item.ReisMogelijkheden.Kerstvakantie == true && vakantiesService.DatumInVakantie(Convert.ToDateTime(zoekListVM.HeenDate), true) == true) { vakantie = vakantiesService.Get(Convert.ToDateTime(zoekListVM.HeenDate), true); extraPlaatsen = 1 + vakantie.PercentExtraPlaatsen; } else if (item.ReisMogelijkheden.Paasvakantie == true && vakantiesService.DatumInVakantie(Convert.ToDateTime(zoekListVM.HeenDate), false) == true) { vakantie = vakantiesService.Get(Convert.ToDateTime(zoekListVM.HeenDate), false); extraPlaatsen = 1 + vakantie.PercentExtraPlaatsen; } //controle nog genoeg plaatsen op de trein if (zoekListVM.Klasse == 1) { var vrijePlaatsen = Convert.ToInt16(item.ReisMogelijkheden.Trein.AantalPlaatsenEc * extraPlaatsen) - ticketService.GetAantalPlaatsenGereserveerd(item.ReisMogelijkhedenId, Convert.ToDateTime(zoekListVM.HeenDate), zoekListVM.Klasse); if (vrijePlaatsen < zoekListVM.Aantal) { return(RedirectToAction("ErrorTreinOverboekt")); } } else { var vrijePlaatsen = (item.ReisMogelijkheden.Trein.AantalPlaatsenBus * extraPlaatsen) - ticketService.GetAantalPlaatsenGereserveerd(item.ReisMogelijkhedenId, Convert.ToDateTime(zoekListVM.HeenDate), zoekListVM.Klasse); if (vrijePlaatsen < zoekListVM.Aantal) { return(RedirectToAction("ErrorTreinOverboekt")); } } } var aankomstdatumheenreis = Convert.ToDateTime(zoekListVM.HeenDate); //overstap gemist if (zoekListVM.RoutesHeen.Count() > 1) { for (int i = 0; i < zoekListVM.RoutesHeen.Count() - 1; i++) { if (zoekListVM.RoutesHeen.ElementAt(i).ReisMogelijkheden.Aankomsttijd >= zoekListVM.RoutesHeen.ElementAt(i + 1).ReisMogelijkheden.Vertrektijd) { aankomstdatumheenreis = aankomstdatumheenreis.AddDays(1); } } } ViewBag.Aankomstdatumheen = aankomstdatumheenreis; var aankomstdatumterugreis = Convert.ToDateTime(zoekListVM.TerugDate); if (zoekListVM.TerugDate != null) { zoekListVM.RoutesTerug = rittenService.GetRittenVanTraject(Convert.ToInt16(zoekListVM.Naar), Convert.ToInt16(zoekListVM.Van)); foreach (var item in zoekListVM.RoutesTerug) { if (item.ReisMogelijkheden.Prijs != null) { totalePrijst += Convert.ToDouble(item.ReisMogelijkheden.Prijs); } var vakantie = new Vakanties(); var extraPlaatsen = 1.0; //controle vakantie if (item.ReisMogelijkheden.Kerstvakantie == true && vakantiesService.DatumInVakantie(Convert.ToDateTime(zoekListVM.TerugDate), true) == true) { vakantie = vakantiesService.Get(Convert.ToDateTime(zoekListVM.TerugDate), true); extraPlaatsen = 1 + vakantie.PercentExtraPlaatsen; } else if (item.ReisMogelijkheden.Paasvakantie == true && vakantiesService.DatumInVakantie(Convert.ToDateTime(zoekListVM.TerugDate), false) == true) { vakantie = vakantiesService.Get(Convert.ToDateTime(zoekListVM.TerugDate), false); extraPlaatsen = 1 + vakantie.PercentExtraPlaatsen; } //controle nog genoeg plaatsen op de trein if (zoekListVM.Klasse == 1) { var vrijePlaatsen = Convert.ToInt16(item.ReisMogelijkheden.Trein.AantalPlaatsenEc * extraPlaatsen) - ticketService.GetAantalPlaatsenGereserveerd(item.ReisMogelijkhedenId, Convert.ToDateTime(zoekListVM.HeenDate), zoekListVM.Klasse); if (vrijePlaatsen < zoekListVM.Aantal) { return(RedirectToAction("ErrorTreinOverboekt")); } } else { var vrijePlaatsen = Convert.ToInt16(item.ReisMogelijkheden.Trein.AantalPlaatsenBus * extraPlaatsen) - ticketService.GetAantalPlaatsenGereserveerd(item.ReisMogelijkhedenId, Convert.ToDateTime(zoekListVM.HeenDate), zoekListVM.Klasse); if (vrijePlaatsen < zoekListVM.Aantal) { return(RedirectToAction("ErrorTreinOverboekt")); } } } //overstap gemist if (zoekListVM.RoutesTerug.Count() > 1) { for (int i = 0; i < zoekListVM.RoutesTerug.Count() - 1; i++) { if (zoekListVM.RoutesTerug.ElementAt(i).ReisMogelijkheden.Aankomsttijd >= zoekListVM.RoutesTerug.ElementAt(i + 1).ReisMogelijkheden.Vertrektijd) { aankomstdatumterugreis = aankomstdatumterugreis.AddDays(1); } } } } ViewBag.Aankomstdatumterug = aankomstdatumterugreis; ViewBag.PrijsTicketh = Convert.ToDouble(totalePrijsh); ViewBag.PrijsTickett = Convert.ToDouble(totalePrijst); //if (ModelState.IsValid) //{ return(View(zoekListVM)); } else { zoekListVM.RoutesHeen = null; return(View("Home", zoekListVM)); } }
public IActionResult Boeken(ZoekListVM zoekListVM, double prijsh, double prijst, string aankomstdatumheen, string aankomstdatumterug) { if (zoekListVM == null) { return(NotFound()); } if (ModelState.IsValid) { TrajectService trajectService = new TrajectService(); Traject trajectheen = trajectService.GetTraject(Convert.ToInt16(zoekListVM.Van), Convert.ToInt16(zoekListVM.Naar)); KlasseService klasseService = new KlasseService(); Klasse klasse = klasseService.GetKlasseVanId(zoekListVM.Klasse); double p = prijsh * (1 + Convert.ToDouble(klasse.Toeslag)) * zoekListVM.Aantal; p = Math.Round(p, 2); List <string> vn = new List <string>(); List <string> an = new List <string>(); for (int i = 0; i < zoekListVM.Aantal; i++) { vn.Add(zoekListVM.Passagierslijst.Passagiers[i].Voornaam); an.Add(zoekListVM.Passagierslijst.Passagiers[i].Achternaam); } CartVM itemheen = new CartVM { TrajectId = trajectheen.TrajectId, Van = trajectheen.VertrekStadNavigation.Naam, Naar = trajectheen.AankomstStadNavigation.Naam, AantalTickets = zoekListVM.Aantal, Klasse = zoekListVM.Klasse, Prijs = p, Vertrekdatum = Convert.ToDateTime(zoekListVM.HeenDate), Aankomstdatum = Convert.ToDateTime(aankomstdatumheen), Voornamen = vn, Achternamen = an }; ShoppingCartVM shopping; if (HttpContext.Session.GetObject <ShoppingCartVM>("ShoppingCart") != null) { shopping = HttpContext.Session.GetObject <ShoppingCartVM>("ShoppingCart"); } else { shopping = new ShoppingCartVM(); shopping.Cart = new List <CartVM>(); } shopping.Cart.Add(itemheen); HttpContext.Session.SetObject("ShoppingCart", shopping); if (zoekListVM.TerugDate != null) { Traject trajectterug = trajectService.GetTraject(Convert.ToInt16(zoekListVM.Naar), Convert.ToInt16(zoekListVM.Van)); double pterug = prijst * (1 + Convert.ToDouble(klasse.Toeslag)) * zoekListVM.Aantal; pterug = Math.Round(pterug, 2); CartVM itemterug = new CartVM { TrajectId = trajectterug.TrajectId, Van = trajectterug.VertrekStadNavigation.Naam, Naar = trajectterug.AankomstStadNavigation.Naam, AantalTickets = zoekListVM.Aantal, Klasse = zoekListVM.Klasse, Prijs = pterug, Vertrekdatum = Convert.ToDateTime(zoekListVM.TerugDate), Aankomstdatum = Convert.ToDateTime(aankomstdatumterug), Voornamen = vn, Achternamen = an }; if (HttpContext.Session.GetObject <ShoppingCartVM>("ShoppingCart") != null) { shopping = HttpContext.Session.GetObject <ShoppingCartVM>("ShoppingCart"); } else { shopping = new ShoppingCartVM(); shopping.Cart = new List <CartVM>(); } shopping.Cart.Add(itemterug); HttpContext.Session.SetObject("ShoppingCart", shopping); } return(RedirectToAction("Index", "ShoppingCart")); } return(RedirectToAction("Home", "Trein")); }