public ActionResult Payment(ShoppingCartVM carts) { // opvragen ID ingelogde User string userID = User.FindFirst(ClaimTypes.NameIdentifier).Value; try { Ticket ticket; Abonnement abonnement; if (carts.Cart != null) { foreach (CartVM cart in carts.Cart) { IEnumerable <Ticket> ticketsUser = ticketService.TicketsPerUserPerDatum(userID, cart.Datum, cart.Wedstrijd_ID); ICollection <Ticket> ticketsUserWedstrijd = ticketService.TicketsPerUserPerWedstrijd(userID, cart.Wedstrijd_ID); if (ticketsUser.Count() == 0) { if (ticketsUserWedstrijd.Count + cart.Aantal <= 10) { for (var i = 0; i < cart.Aantal; i++) { ticket = new Ticket(); ticket.WedstrijdId = cart.Wedstrijd_ID; ticket.VakId = Convert.ToInt32(cart.VakFactor.Substring(0, 1)); ticket.RingId = Convert.ToInt32(cart.RingFactor.Substring(0, 1)); stadionRingVakService = new StadionRingVakService(); _wedstrijdService = new WedstrijdService(); Wedstrijd wedstrijd = _wedstrijdService.GetWedstrijd(ticket.WedstrijdId); var aantalZitplaatsen = stadionRingVakService.AantalZitplaatsenPerVak(wedstrijd.StadionId, ticket.RingId, ticket.VakId); IEnumerable <Ticket> tickets = ticketService.TicketsPerWedstrijd(ticket.WedstrijdId, ticket.RingId, ticket.VakId); if (tickets.Count() + cart.Aantal <= aantalZitplaatsen.AantalZitplaatsen) { int zitplaatsVrij = 1; int j = 1; foreach (Ticket ticket1 in tickets) { if (ticket1.ZitplaatsNr != j) { break; } j++; } zitplaatsVrij = j; ticket.ZitplaatsNr = zitplaatsVrij; ticket.UserId = userID; ticketService = new TicketService(); ticketService.Insert(ticket); Ticket ticket2 = ticketService.Get(ticket.TicketId); _emailSender.SendEmailAsync(User.Identity.Name, "bevestiging van betaling", "Ticket id: " + ticket2.TicketId + "<br> Datum: " + ticket2.Wedstrijd.Datum + "<br> Thuisploeg: " + ticket2.Wedstrijd.Thuisploeg.Naam + "<br> Uitploeg: " + ticket2.Wedstrijd.Uitploeg.Naam + "<br> Ring: " + ticket2.Ring.Naam + "<br> Vak: " + ticket2.Vak.Naam + "<br> Zitplaats: " + ticket2.ZitplaatsNr); } else { ViewBag.Message = "Er zijn onvoldoende zitplaatsen beschikbaar in het geselecteerde vak. Uw betaling is dus niet gelukt. Er zijn slechts " + (aantalZitplaatsen.AantalZitplaatsen - tickets.Count()) + " tickets beschikbaar"; } } } else { ViewBag.Message = "U kan maximum 10 tickets kopen per match. U heeft het maximum bereikt. Uw betaling is niet gelukt."; } } else { ViewBag.Message = "U kan op eenzelfde dag geen twee verschillende wedstrijden gaan bekijken! Enkel de tickets voor de eerst geselecteerde wedstrijd werden aangekocht."; } } } if (carts.AbonnementCart != null) { //ticket plaats berekenen: loop over thuiswedstrijden van bepaalde club, loop over ieder ticket, ticket met hoogste zitplaatsnr bewaren // en dan +1 foreach (AbonnementCartVM abonnementCart in carts.AbonnementCart) { Abonnement abonnementUser = abonnementService.GetAbonnementPerUser(userID, abonnementCart.Startdatum); if (abonnementUser == null && carts.AbonnementCart.Count == 1) { int ringId = Convert.ToInt32(abonnementCart.RingFactor.Substring(0, 1)); int vakId = Convert.ToInt32(abonnementCart.VakFactor.Substring(0, 1)); int zitplaatsVrij = 1; int j = 1; foreach (Abonnement abonnementClub in abonnementService.AbonnementPerClub(abonnementCart.Club_ID)) { if (abonnementClub.ZitplaatsNr != j) { break; } j++; } zitplaatsVrij = j; abonnement = new Abonnement(); abonnement.ClubId = abonnementCart.Club_ID; abonnement.SeizoenId = seizoenService.GetByDatum(DateTime.Now).SeizoenId; abonnement.RingId = ringId; abonnement.VakId = vakId; abonnement.ZitplaatsNr = zitplaatsVrij; abonnement.UserId = userID; abonnementService = new AbonnementService(); abonnementService.Insert(abonnement); Abonnement abonnement2 = abonnementService.Get(abonnement.AbonnementId); _emailSender.SendEmailAsync(User.Identity.Name, "bevestiging van betaling", "Abonnement id: " + abonnement2.AbonnementId + "<br> Club: " + abonnement2.Club.Naam + "<br> Startdatum: " + abonnement2.Seizoen.Startdatum + "<br> Einddatum: " + abonnement2.Seizoen.Einddatum + "<br> Ring: " + ringService.Get(abonnement2.RingId).Naam + "<br> Vak: " + vakService.Get(abonnement2.VakId).Naam + "<br> Zitplaats: " + abonnement2.ZitplaatsNr); } else { ViewBag.Message = "U kan slechts 1 abonnement kopen per seizoen. De betaling is dus niet gebeurd."; } } } } catch (DataException ex) { ModelState.AddModelError("", "Opslaan niet gelukt"); } catch (Exception ex) { ModelState.AddModelError("", "Bel systeem administrator"); } HttpContext.Session.Clear(); return(View()); }