[AcceptVerbs("Get", "Post")] //REMOTE public IActionResult CheckAskedAmountOfTickets(int aantalTickets, Vereniging vereniging) { McEditie editie = _editieRepository.GetNextOrCurrentEditie(); Verkoopmoment verkoopmoment = editie.GetCurrentOrNextVerkoopMoment(); int maxTicketsVereniging = verkoopmoment.GetMaxTicketsVereniging(vereniging); int maxTicketsLeft = verkoopmoment.Editie.GetAmountTicketsRemaining(); if (aantalTickets <= 0) { return(Json("Sorry, u moet een positief aantal tickets bestellen")); } if (aantalTickets > maxTicketsLeft) { return(Json($"Sorry, er zijn slechts {maxTicketsLeft} tickets meer beschikbaar")); } if (aantalTickets > maxTicketsVereniging) { return(Json($"Sorry, u kan maximaal maar {maxTicketsVereniging} tickets bestellen")); } //check if vereniging has an exception amount, limits stay the same if (vereniging.MaxTicketsException != null) { int amountAlreadyOrdered = editie.GetAmountTicketsOrderedByVereniging(vereniging); if (aantalTickets + amountAlreadyOrdered > vereniging.MaxTicketsException.Value) { int ticketsLeft = vereniging.MaxTicketsException.Value - amountAlreadyOrdered; return(Json($"Sorry, u kan nog maximaal maar {ticketsLeft} tickets bestellen")); } } return(Json(true)); }
public IActionResult BestelTickets(VerkoopBestelViewModel vm, Vereniging vereniging) { if (ModelState.IsValid) { Verkoopmoment verkoopmoment = _editieRepository.GetNextOrCurrentEditie()?.GetCurrentOrNextVerkoopMoment(); Bestelling bestelling; if (verkoopmoment == null) { TempData["error"] = "Sorry, u was net te laat met het bestellen van uw tickts... :("; return(RedirectToAction("Index", "Home")); } try { bestelling = verkoopmoment.PlaatsBestelling(vereniging, vm.AantalTickets); _editieRepository.SaveChanges(); SendConfirmationMail(bestelling); } catch (Exception e) { TempData["error"] = $"Sorry, gelieve opnieuw te proberen! Error: {e.Message}"; return(RedirectToAction(nameof(Index))); } return(RedirectToAction(nameof(BestellingConfirmation), new { id = bestelling.BestellingId })); } return(RedirectToAction(nameof(BestelTickets))); }
public VerkoopmomentEditViewModel(Verkoopmoment vm) { EditieId = vm.Editie.Id; StartDatum = vm.StartDatum; EindDatum = vm.EindDatum; MaxTicketsKlein = vm.MaxTicketsKlein; MaxTicketsGroot = vm.MaxTicketsGroot; }
public VerkoopIndexViewModel(McEditie editie, Vereniging vereniging) { HasNextVerkoopmoment = false; if (editie != null) { EditieNaam = editie.Naam; Verkoopmoment verkoopmoment = editie.GetCurrentOrNextVerkoopMoment(); if (verkoopmoment != null) { HasNextVerkoopmoment = true; BuyingPossible = false; //enkel bij statuscode 0 op true latenkomen if (vereniging.IsGroot) { MaxTickets = verkoopmoment.MaxTicketsGroot; Grootte = "Groot"; } else { MaxTickets = verkoopmoment.MaxTicketsKlein; Grootte = "Klein"; } KostPrijs = editie.TicketPrijs; MedewerkersTax = editie.KostPerMedewerker; StartVerkoopmoment = verkoopmoment.StartDatum; EindVerkoopmoment = verkoopmoment.EindDatum; int status = verkoopmoment.CanVerenigingBuy(vereniging); switch (status) { case 0: Message = "Joepie! Momenteel kunt u tickets bestellen!"; BuyingPossible = true; break; case 1: Message = "Sorry, er zijn geen tickets meer beschikbaar voor deze editie :-("; break; case 2: Message = "Gelieve later terug te keren, momenteel is er geen verkoopmoment bezig"; break; case 3: Message = "Sorry, u kunt slechts 1 keer per verkoopmoment tickets kopen..."; break; default: Message = $"Er liep iets fout, gelieve contact op te nemen met de webmaster als het probleem zich blijft voordoen (status code {status})"; break; } } } }
public IActionResult Edit(int id) { Verkoopmoment vm = _verkoopmomentRepository.GetById(id); if (vm == null) { return(NotFound()); } ViewData["IsEdit"] = true; return(View(new VerkoopmomentEditViewModel(vm))); }
public IActionResult BestelTickets(Vereniging vereniging) { Verkoopmoment verkoopmoment = _editieRepository.GetNextOrCurrentEditie()?.GetCurrentOrNextVerkoopMoment(); int? status = verkoopmoment?.CanVerenigingBuy(vereniging); if (status != 0 || verkoopmoment == null) { return(NotFound("Deze pagina is momenteel niet beschikbaar, raadpleeg de https://www.massacantusgent.be/verkoop/ voor meer info")); } return(View(new VerkoopBestelViewModel(verkoopmoment))); }
public IActionResult Delete(int id) { Verkoopmoment vm = _verkoopmomentRepository.GetById(id); if (vm == null) { return(NotFound()); } ViewData["Verkoopmoment"] = $"Verkoopmoment van {vm.StartDatum.ToShortDateString()}"; ViewData["Aantal"] = vm.Bestellingen.Count; ViewData["ReturnId"] = vm.Editie.Id; return(View()); }
public IActionResult DeleteConfirmed(int id) { try { Verkoopmoment vm = _verkoopmomentRepository.GetById(id); if (vm == null) { return(NotFound()); } _verkoopmomentRepository.Delete(vm); _verkoopmomentRepository.SaveChanges(); TempData["message"] = $"U heeft succesvol het verkoopmoment op {vm.StartDatum.ToString("dd MMM")} verwijderd"; return(RedirectToAction("Edit", "Editie", new { vm.Editie.Id })); } catch (Exception e) { TempData["error"] = $"Sorry, er liep iets fout, het verkoopmoment kon niet worden verwijderd: {e.GetType().Name}"; } return(RedirectToAction("Index", "Editie")); }
public IActionResult Create(VerkoopmomentEditViewModel evm) { if (ModelState.IsValid) { try { McEditie editie = _editieRepository.GetById(evm.EditieId); if (editie == null) { return(NotFound()); } Verkoopmoment vm = new Verkoopmoment(editie, evm.StartDatum, evm.EindDatum, evm.MaxTicketsKlein, evm.MaxTicketsGroot); _editieRepository.SaveChanges(); //vm wordt automatisch aan editie toegevoegd dus moet geen verkoopmomenten.Add()... TempData["message"] = $"U heeft succesvol een verkoopmoment aangemaakt op {vm.StartDatum.ToString("dd MMM")}"; } catch (Exception e) { TempData["error"] = $"Sorry, er liep iets fout tijdens het aanmaken van het verkoopmoment: {e.Message}"; } return(RedirectToAction(nameof(EditieController.Edit), "Editie", new { id = evm.EditieId })); } ViewData["IsEdit"] = false; return(View(nameof(Edit), evm)); }
public IActionResult Edit(VerkoopmomentEditViewModel evm, int id) { if (ModelState.IsValid) { try { McEditie editie = _editieRepository.GetById(evm.EditieId); Verkoopmoment vm = editie.Verkoopmomenten.SingleOrDefault(v => v.VerkoopId == id); //kan ook via verkoopmomentrepo, maar vind dit veiliger if (editie == null || vm == null) { return(NotFound()); } vm.UpdateVerkoopmoment(evm.StartDatum, evm.EindDatum, evm.MaxTicketsGroot, evm.MaxTicketsKlein); _editieRepository.SaveChanges(); TempData["message"] = $"U heeft succesvol het verkoopmoment op {vm.StartDatum.ToString("dd MMM")} bijgewerkt"; } catch (Exception e) { TempData["error"] = $"Sorry, er liep iets fout tijdens het wijzigen van het verkoopmoment: {e.Message}"; } return(RedirectToAction(nameof(EditieController.Edit), "Editie", new { id = evm.EditieId })); } ViewData["IsEdit"] = true; return(View(nameof(Edit), evm)); }
public void Delete(Verkoopmoment vm) { _verkoopmomenten.Remove(vm); }
public void Add(Verkoopmoment vm) { _verkoopmomenten.Add(vm); }
public VerkoopBestelViewModel(Verkoopmoment verkoopmoment) : this() { EditieNaam = verkoopmoment.Editie.Naam; }
public async Task InitializeData() { _dbContext.Database.EnsureDeleted(); if (_dbContext.Database.EnsureCreated()) { await InitializeUsers(); /* * var konventen = new List<Konvent> * { * new Konvent("Home Konvent"), * new Konvent("Faculteiten Konvent"), * new Konvent("Senioren Konvent") * }; * _dbContext.Konventen.AddRange(konventen); * _dbContext.SaveChanges(); */ //Konventen en verenigingen Konvent k1 = new Konvent("Konvent 1", new List <Kleur>() { new Kleur("Bruin", "#6E2C00"), new Kleur("Zwart", "#000000") }); Konvent k2 = new Konvent("Konvent 2"); var verenigingen = new List <Vereniging> { new Vereniging("*****@*****.**", "Vereniging 1", "*****@*****.**", "BE32123456789002", new List <Kleur>() { new Kleur("Blauw", "#3498DB"), new Kleur("Wit", "#FFFFFF") }, k2), new Vereniging("*****@*****.**", "Vereniging 2", "*****@*****.**", "BE32123456789002", new List <Kleur>() { new Kleur("Geel", "#F4D03F"), new Kleur("Zwart", "#000000"), new Kleur("Paars", "#6a0dad") }, k1), new Vereniging("*****@*****.**", "Vereniging 3", "*****@*****.**", "BE32123456789002", new List <Kleur>() { new Kleur("Blauw", "#3498DB"), new Kleur("Paars", "#A569BD"), new Kleur("Groen", "#52BE80") }, k2, true), new Vereniging("*****@*****.**", "Vereniging 4", "*****@*****.**", "BE32123456789002"), new Vereniging("*****@*****.**", "Vereniging 5", "*****@*****.**", "BE32123456789002", new List <Kleur>() { new Kleur("Zwart", "#000000"), new Kleur("Wit", "#FFFFFF") }, k1), new Vereniging("*****@*****.**", "Vereniging 6", "*****@*****.**", "BE32123456789002", new List <Kleur>() { new Kleur("Groen", "#52BE80"), new Kleur("Oranje", "#F5B041"), new Kleur("Wit", "#FFFFFF") }, k2) }; _dbContext.Verenigingen.AddRange(verenigingen); Konvent k3 = new Konvent("Konvent 3"); _dbContext.Konventen.Add(k3); //Editie binnen 20dagen en 30 dagen voor opvulling McEditie editie20 = new McEditie("Editie XXX", DateTime.Now.AddDays(20), DateTime.Now.AddDays(20).AddHours(5), "Expo Hallen", 20, 25, 100); Verkoopmoment vm1 = new Verkoopmoment(editie20, DateTime.Now.AddDays(14), DateTime.Now.AddDays(15), 25, 45); Verkoopmoment vm2 = new Verkoopmoment(editie20, DateTime.Now.AddDays(16), DateTime.Now.AddDays(17), 25, 45); _dbContext.McEdities.Add(editie20); McEditie editie30 = new McEditie("Editie XXXI", DateTime.Now.AddDays(30), DateTime.Now.AddDays(30).AddHours(5), "Expo Hallen", 20, 25, 100); Verkoopmoment vm3 = new Verkoopmoment(editie30, DateTime.Now.AddDays(24), DateTime.Now.AddDays(25), 25, 45); Verkoopmoment vm4 = new Verkoopmoment(editie30, DateTime.Now.AddDays(26), DateTime.Now.AddDays(27), 25, 45); _dbContext.McEdities.Add(editie30); //TEST EDITIE - parameters aanpassen, tijd uitgedrukt in MINUTEN const int aantalVM = 2; const int lengteVM = 2; const int tijdTussenVM = 0; //0 voor geen pauze tussen const int tijdTussenVMenEditie = 180; const int tijdTotEersteVM = -15; const int lengteEditie = 120; const int maxTickets = 2000; const int kostPerMedewerker = 25; const int ticketPrijs = 20; //hier niet meer aankomen const int tijdTotMC = tijdTotEersteVM + (aantalVM * lengteVM) + ((aantalVM - 1) * tijdTussenVM) + tijdTussenVMenEditie; McEditie testEditie = new McEditie("Testeditie", DateTime.Now.AddMinutes(tijdTotMC), DateTime.Now.AddMinutes(tijdTotMC + lengteEditie), "Expo Hallen", ticketPrijs, kostPerMedewerker, maxTickets, false); var vms = new List <Verkoopmoment>(); for (int i = 0; i < aantalVM; i++) { int startVM = tijdTotEersteVM + (i * (lengteVM + tijdTussenVM)); Verkoopmoment vm = new Verkoopmoment(testEditie, DateTime.Now.AddMinutes(startVM), DateTime.Now.AddMinutes(startVM + lengteVM), 25, 45); vms.Add(vm); } _dbContext.McEdities.Add(testEditie); _dbContext.SaveChanges(); foreach (Vereniging v in verenigingen) { await CreateUser(v.Email, v.Email, "P@ssword1", "vereniging"); } _dbContext.SaveChanges(); Vereniging v2 = _dbContext.Verenigingen.Where(v => v.GroepNaam == "Vereniging 2").SingleOrDefault(); Vereniging v3 = _dbContext.Verenigingen.Where(v => v.GroepNaam == "Vereniging 3").SingleOrDefault(); Vereniging v4 = _dbContext.Verenigingen.Where(v => v.GroepNaam == "Vereniging 4").SingleOrDefault(); v2.IsGroot = true; var b1 = new Bestelling(vms[0], v2, 45); vms[0].Bestellingen.Add(b1); b1.IsBetaald = true; var b2 = new Bestelling(vms[0], v3, 10); vms[0].Bestellingen.Add(b2); b2.IsBetaald = true; vms[1].Bestellingen.Add(new Bestelling(vms[1], v2, 45)); vms[1].Bestellingen.Add(new Bestelling(vms[1], v4, 5)); var b3 = new Bestelling(vms[1], v3, 10); vms[1].Bestellingen.Add(b3); b3.IsBetaald = true; TradeOffer offer1 = testEditie.PlaceTradeOffer(v2, 4); TradeOffer offer2 = testEditie.PlaceTradeOffer(v4, 3); offer1.AddResponse(v3, 3); offer1.AddResponse(v4, 4); offer2.AddResponse(v2, 2); testEditie.StartDoorverkoop(); testEditie.StartDownload(); _dbContext.SaveChanges(); } }