public IActionResult BeheerBestelling(BestellingEditViewModel evm, int id) { if (ModelState.IsValid) { try { McEditie editie = _editieRepository.GetById(id); if (editie == null) { return(NotFound()); } Bestelling bestelling = editie.GetBestelling(evm.BestellingId); if (bestelling == null) { return(NotFound()); } MapBestellingEditViewModelToBestelling(evm, bestelling); _editieRepository.SaveChanges(); TempData["message"] = "U heeft de bestelling gewijzigd"; SendConfirmationMail(bestelling); } catch (Exception e) { TempData["error"] = $"Sorry, er liep iets fout, de bestelling kon niet worden gewijzigd: {e.Message}"; } return(RedirectToAction(nameof(Bestellingen), new { id })); } return(View(nameof(BeheerBestelling), evm)); }
[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 StartNextEditieStatus(int id) { McEditie editie = _editieRepository.GetById(id); if (editie == null) { return(NotFound()); } try { if (editie.Status == McEditie.McEditieStatusType.Verkoop) { editie.StartDoorverkoop(); } else { editie.StartDownload(); } _editieRepository.SaveChanges(); } catch (Exception ex) { TempData["error"] = $"Something went wrong: {ex.Message}"; } return(RedirectToAction(nameof(Edit), new { id })); }
public IActionResult BestellingBetaaldConfirmation(int id, int bestellingId) { McEditie editie = _editieRepository.GetById(id); if (editie == null) { TempData["error"] = "Oeps... Er ging iets mis, de gekozen editie bestaat niet (meer)!"; ViewData["Edities"] = GetEditiesAsSelectList(); return(RedirectToAction(nameof(Index))); } Bestelling bestelling = editie.GetBestelling(bestellingId); if (bestelling?.IsBetaald != false) { TempData["error"] = "Oeps... De gevraagde bestelling bestaat niet of is reeds als betaald aangeduid!"; return(RedirectToAction(nameof(Bestellingen), new { id = editie.Id })); } try { bestelling.IsBetaald = true; _editieRepository.SaveChanges(); SendMailPaymentConfirmation(bestelling); } catch (Exception e) { TempData["error"] = $"Er ging iets mis! Exception: {e.Message}"; } TempData["message"] = $"U heeft succesvol de bestelling van {bestelling.Vereniging.GroepNaam} als betaald aangeduid!"; return(RedirectToAction(nameof(Bestellingen), new { id = editie.Id })); }
public IActionResult Index(Vereniging vereniging) { McEditie editie = _editieRepository.GetNextOrCurrentEditie(); ViewData["ServerTime"] = DateTime.Now.ToString("dd MMM yyyy HH:mm"); return(View(new VerkoopIndexViewModel(editie, vereniging))); }
public IActionResult ApproveTradeResponseByOwnerConfirmation(int id) { McEditie editie = _editieRepository.GetNextOrCurrentEditieIncludeTrades(); if (editie == null) { return(NotFound("Er is nog geen opkomende editie aangemaakt, als dit volgens u niet klopt, gelieve dan contact op te nemen met [email protected]")); } TradeResponse response = editie.GetTradeResponseById(id); if (response != null) { try { response.Offer.ApproveResponse(response.Id); _editieRepository.SaveChanges(); NotifyTradeResponseApproved(response); TempData["message"] = $"U heeft succesvol de reactie van {response.Vereniging.GroepNaam} goedgekeurd!"; } catch (Exception ex) { TempData["error"] = $"Er ging iets mis: {ex.Message}"; } } return(RedirectToAction(nameof(Doorverkoop))); }
public IActionResult CheckInWithDetails(int id, TicketBarcodeVerenigingViewModel vm) { McEditie editie = _editieRepository.GetByIdWithTickets(id); if (editie == null) { return(NotFound()); } if (ModelState.IsValid) { if (!IsValidEan8(vm.Barcode.Value)) { TempData["error"] = "ONGELDIGE BARCODE, GELIEVE OPNIEUW TE SCANNEN"; return(RedirectToAction(nameof(CheckIn), new { id })); } try { int barcodeWithoutChecksum = vm.Barcode.Value / 10; Ticket ticket = editie.GetTicketByBarcode(barcodeWithoutChecksum); if (ticket == null) { TempData["error"] = "ONBESTAAND TICKET - SCAN OPNIEUW - OF VALS TICKET?"; return(RedirectToAction(nameof(CheckIn), new { id })); } ticket.CheckIn(); _editieRepository.SaveChanges(); return(RedirectToAction(nameof(CheckInWithDetails), new { id, verenigingId = ticket.Vereniging.GroepId })); } catch (Exception e) { TempData["redError"] = e.Message; } } return(RedirectToAction(nameof(CheckIn), new { id })); }
public IActionResult PlaceTradeResponse(PlaceTradeResponseModel rm, Vereniging vereniging) { McEditie editie = _editieRepository.GetNextOrCurrentEditieIncludeTrades(); if (editie == null) { return(NotFound("Er is nog geen opkomende editie aangemaakt, als dit volgens u niet klopt, gelieve dan contact op te nemen met [email protected]")); } if (ModelState.IsValid) { try { TradeOffer offer = editie.GetTradeOfferById(rm.OfferId); if (offer == null) { TempData["error"] = "Oeps er ging iets mis! Deze aanbieding bestaat niet meer!"; return(View(nameof(Doorverkoop), new TicketsDoorverkoopViewModel(editie, vereniging))); } offer.AddResponse(vereniging, rm.Amount); _editieRepository.SaveChanges(); TempData["message"] = "U heeft succesvol een reactie geplaatst"; } catch (Exception ex) { TempData["error"] = $"Oeps! Er ging iets mis: {ex.Message}"; } return(RedirectToAction(nameof(Doorverkoop))); } return(RedirectToAction(nameof(PlaceTradeResponse), new { id = rm.OfferId })); }
public IActionResult Index() { McEditie nextOrCurrent = _editieRepository.GetNextOrCurrentEditieIncludeTickets(); IEnumerable <McEditie> pastEdities = _editieRepository.GetPastEdities(); IEnumerable <McEditie> upcomingEdities = _editieRepository.GetUpComingWithoutCurrentOrNextEditie(); if (nextOrCurrent != null) { //scanTime bepaald hoeveel uur voor de editie tickets kunnen gescanned worden int scanTime = nextOrCurrent.EnableTimeRestrictions ? -3 : -3; ViewData["NextIsNow"] = nextOrCurrent.StartDatum.AddHours(scanTime) <= DateTime.Now && nextOrCurrent.EindDatum >= DateTime.Now; //NextIsNow 3u voor effectieve editie zodat tickets kunnen gescanned worden, behalve als timeRestrictions uitstaan (testedities) } //Prevent scan tickets page if no tickets generated if (nextOrCurrent != null) { ViewData["ScanningAvailable"] = nextOrCurrent.Tickets.Count > 0; } else { ViewData["ScanningAvailable"] = false; } return(View(new EditieIndexViewModel(nextOrCurrent, pastEdities, upcomingEdities))); }
public ApproveTradeOwnerModel(TradeResponse response, McEditie editie) { Amount = response.Amount; VerenigingNaam = response.Vereniging.GroepNaam; VerenigingMail = response.Vereniging.Email; ResponseId = response.Id; Price = Amount * editie.TicketPrijs; }
public CloseTradeModel(McEditie editie, TradeResponse response) { VerenigingNaam = response.Offer.Owner.GroepNaam; Amount = response.Amount; Price = response.Amount * editie.TicketPrijs; ResponseId = response.Id; OfferId = response.Offer.Id; }
public TicketsDownloadViewModel(McEditie editie, Vereniging vereniging) { Naam = vereniging.GroepNaam; EditieStatus = editie.Status; VerenigingHasTickets = editie.VerenigingHasTickets(vereniging); TicketAmount = editie.GetAmountTotalTicketsByVereniging(vereniging); TicketsDownloadedOnce = editie.Tickets.Any(t => t.Vereniging.GroepId == vereniging.GroepId); }
public IActionResult CheckInWithDetails(int id, int verenigingId) { McEditie editie = _editieRepository.GetByIdWithTickets(id); ViewData["editieName"] = editie.Naam; ViewData["amountTicketsSold"] = editie.Tickets.Count; ViewData["amountCheckedIn"] = editie.GetAmountCheckedIn(); return(View(new TicketBarcodeVerenigingViewModel(_verenigingRepository.GetById(verenigingId)))); }
public IActionResult CheckIn(int id) { McEditie editie = _editieRepository.GetByIdWithTickets(id); ViewData["editieName"] = editie.Naam; ViewData["amountTicketsSold"] = editie.Tickets.Count; ViewData["amountCheckedIn"] = editie.GetAmountCheckedIn(); return(View()); }
public TicketsIndexViewModel(McEditie editie, Vereniging vereniging) { EditieNaam = editie.Naam; DaysUntill = editie.StartDatum.Subtract(DateTime.Now).Days; Bestellingen = editie.GetBestellingenOfVereniging(vereniging).ToList(); TradesSold = editie.Trades.Where(t => t.From.GroepId == vereniging.GroepId).ToList(); TradesReceived = editie.Trades.Where(t => t.To.GroepId == vereniging.GroepId).ToList(); AantalTickets = editie.GetAmountTotalTicketsByVereniging(vereniging); }
public IActionResult Doorverkoop(Vereniging vereniging) { McEditie editie = _editieRepository.GetNextOrCurrentEditieIncludeTrades() ?? _editieRepository.GetLastIncludeBestellingenAndTrades(); if (editie == null) { return(NotFound("Er zijn nog geen edities aangemaakt, als dit volgens u niet klopt, gelieve dan contact op te nemen met [email protected]")); } return(View(new TicketsDoorverkoopViewModel(editie, vereniging))); }
private void MapEditieEditViewModelToEditie(EditieEditViewModel evm, McEditie editie) { editie.Naam = evm.Naam; editie.StartDatum = evm.StartDatum; editie.EindDatum = evm.EindDatum; editie.Locatie = evm.Locatie; editie.TicketPrijs = evm.TicketPrijs; editie.KostPerMedewerker = evm.KostPerMedewerker; editie.MaxTickets = evm.MaxTickets; }
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) { McEditie editie = _editieRepository.GetById(id); if (editie == null) { return(NotFound()); } ViewData["IsEdit"] = true; return(View(new EditieEditViewModel(editie))); }
public IActionResult Delete(int id) { McEditie editie = _editieRepository.GetById(id); if (editie == null) { return(NotFound()); } ViewData["Naam"] = editie.Naam; return(View()); }
public EditieVereniging(Vereniging vereniging, McEditie editie) { Naam = vereniging.GroepNaam; IBAN = vereniging.IBAN; Mail = vereniging.Email; Konvent = vereniging.Konvent != null ? vereniging.Konvent.GroepNaam : "/"; AantalTickets = editie.GetBestellingenOfVereniging(vereniging).Sum(b => b.AantalGereserveerdeTickets); AantalTicketsNaVerkoop = editie.GetAmountTotalTicketsByVereniging(vereniging); AantalMedewerkers = editie.GetBestellingenOfVereniging(vereniging).Sum(b => b.AantalMedewerkers); IsGroot = vereniging.IsGroot; }
public IActionResult Bestellingen(int id, int sortByPaid = 0) { McEditie editie = _editieRepository.GetById(id); if (editie == null) { TempData["error"] = "Oeps... Er ging iets mis, de gekozen editie bestaat niet (meer)!"; ViewData["Edities"] = GetEditiesAsSelectList(); return(RedirectToAction(nameof(Index))); } return(View(new PenningBestellingenViewModel(editie, sortByPaid))); }
//id = responseId public IActionResult DeclineTradeResponse(int id) { McEditie editie = _editieRepository.GetNextOrCurrentEditieIncludeTrades(); if (editie == null) { return(NotFound("Er is nog geen opkomende editie aangemaakt, als dit volgens u niet klopt, gelieve dan contact op te nemen met [email protected]")); } TradeResponse response = editie.GetTradeResponseById(id); return(View(response)); }
public IActionResult Bestellingen(int id) { McEditie editie = _editieRepository.GetById(id); if (editie == null) { return(NotFound()); } ViewData["EditieNaam"] = editie.Naam; ViewData["EditieId"] = editie.Id; return(View(editie.Verkoopmomenten.OrderBy(vm => vm.StartDatum))); }
private Chart GenerateAmountVerenigingenBoughtTicketsChart(McEditie editie) { Chart chart = new Chart() { Type = Enums.ChartType.Doughnut, Options = new Options() { Title = new Title() { Display = true, Position = "top", Text = "Aantal verenigingen met tickets", FontSize = 20 } } }; ChartJSCore.Models.Data data = new ChartJSCore.Models.Data { Labels = new List <string>() { "Verenigingen met tickets", "Verenigingen zonder tickets" }, Datasets = new List <Dataset>() }; int verenigingenWithTicketsCount = _verenigingRepository.GetAllWhoHaveTickets(editie.Id).Count(); int verenigingenCount = _verenigingRepository.GetAll().Count(); PieDataset dataset = new PieDataset() { BackgroundColor = new List <ChartColor>() { ChartColorSolid[2], ChartColorSolid[3] }, HoverBackgroundColor = new List <ChartColor>() { ChartColorSolid[2], ChartColorSolid[3] }, Data = new List <double>() { verenigingenWithTicketsCount, verenigingenCount - verenigingenWithTicketsCount } }; data.Datasets.Add(dataset); chart.Data = data; return(chart); }
private Chart GenerateAmountTicketSoldChart(McEditie editie) { Chart chart = new Chart() { Type = Enums.ChartType.Doughnut, Options = new Options() { Title = new Title() { Display = true, Position = "top", Text = "Aantal verkochte tickets", FontSize = 20 } } }; ChartJSCore.Models.Data data = new ChartJSCore.Models.Data { Labels = new List <string>() { "Aantal verkochte tickets", "Aantal beschikbare tickets" }, Datasets = new List <Dataset>() }; int ticketsRemaining = editie.GetAmountTicketsRemaining(); PieDataset dataset = new PieDataset() { BackgroundColor = new List <ChartColor>() { ChartColorSolid[2], ChartColorSolid[3] }, HoverBackgroundColor = new List <ChartColor>() { ChartColorSolid[2], ChartColorSolid[3] }, Data = new List <double>() { editie.MaxTickets - ticketsRemaining, ticketsRemaining } }; data.Datasets.Add(dataset); chart.Data = data; return(chart); }
[AcceptVerbs("Get", "Post")] //REMOTE public IActionResult CheckTicketsToOffer(int amount, Vereniging vereniging) { McEditie editie = _editieRepository.GetNextOrCurrentEditieIncludeTrades(); if (editie == null) { return(Json("Er ging iets mis... Gelieve de pagina te herladen")); } if (editie.GetAmountTotalTicketsByVereniging(vereniging) < amount) { return(Json("U kan niet meer tickets aanbieden dan u beschikbaar heeft")); } return(Json(true)); }
public IActionResult StartTicketDownload(Vereniging vereniging, TicketsDownloadViewModel vm) { McEditie editie = _editieRepository.GetNextOrCurrentEditieIncludeTickets(); if (editie == null) { return(NotFound("Er is nog geen opkomende editie aangemaakt, als dit volgens u niet klopt, gelieve dan contact op te nemen met [email protected]")); } string blankPDFpath; string ticketPath; try { string blankPDFname = _config.GetValue <string>("EmptyTicketName"); ticketPath = Path.Combine(Directory.GetCurrentDirectory(), "Tickets"); blankPDFpath = Path.Combine(Directory.GetCurrentDirectory(), "Tickets", blankPDFname); } catch (Exception ex) { TempData["error"] = $"Oeps er ging iets mis, indien dit blijft voorkomen, stuur dan volgende tekst door naar [email protected]: {ex.Message}"; return(RedirectToAction(nameof(Index))); } if (!editie.VerenigingHasTickets(vereniging)) { TempData["error"] = "Sorry, u heeft geen tickets..."; return(RedirectToAction(nameof(Index))); } //make newlines also possible string memberNamesString = vm.MemberNames?.Replace(Environment.NewLine, ";"); List <string> memberNames = memberNamesString?.Split(";").ToList(); editie.GenerateTicketsForVereniging(vereniging, blankPDFpath, ticketPath, memberNames); _editieRepository.SaveChanges(); using (MemoryStream ms = new MemoryStream()) { using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, true)) { foreach (Ticket t in editie.GetAllTicketsOfVereniging(vereniging)) { var ZipArchiveEntry = archive.CreateEntry(t.TicketName, CompressionLevel.Fastest); byte[] ticketBytes = System.IO.File.ReadAllBytes(t.PdfPath); using (var zipStream = ZipArchiveEntry.Open()) zipStream.Write(ticketBytes, 0, ticketBytes.Length); } } Task.Run(() => editie.RemoveTicketsVereniging(vereniging, ticketPath)); return(File(ms.ToArray(), "application/zip", "Tickets.zip")); } }
public PenningBestellingenViewModel(McEditie editie, int sortByPaid = 0) { EditieId = editie.Id; EditieNaam = editie.Naam; Bestellingen = editie.Verkoopmomenten.SelectMany(v => v.Bestellingen).ToList(); Bestellingen = sortByPaid == 1 ? Bestellingen.OrderBy(b => b.IsBetaald) .ThenBy(b => b.Vereniging.GroepNaam) .ThenBy(b => b.Verkoopmoment.StartDatum) .ToList() : Bestellingen.OrderBy(b => b.Vereniging.GroepNaam) .ThenBy(b => b.Verkoopmoment.StartDatum) .ToList(); SortByPaid = (sortByPaid == 1); }
public IActionResult PlaceTradeOffer(Vereniging vereniging) { McEditie editie = _editieRepository.GetNextOrCurrentEditieIncludeTrades(); if (editie == null) { return(NotFound("Er is nog geen opkomende editie aangemaakt, als dit volgens u niet klopt, gelieve dan contact op te nemen met [email protected]")); } if (editie.TradeOffers.SingleOrDefault(o => o.Owner.GroepId == vereniging.GroepId) != null) { TempData["error"] = "Een vereniging kan slechts één aanbieding plaatsen"; return(View(nameof(Doorverkoop), new TicketsDoorverkoopViewModel(editie, vereniging))); } return(View(new PlaceTradeOfferModel())); }