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));
        }
예제 #3
0
        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));
            }
        }
예제 #4
0
        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"));
        }