[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 async Task <ObservableCollection <Reservering> > GetReserveringenByDateAsync(DateTime date) { if (_cachedReserveringen == null) { _cachedReserveringen = new ObservableCollection <Reservering>(); } Vereniging vereniging = await _verenigingRepository.GetVerenigingAsync(); List <Reservering> reserveringen = await _reserveringService.GetReserveringByDateAsync(vereniging.Id, date); foreach (Reservering reservering in reserveringen) { if (_cachedReserveringen.Count(r => r.Id == reservering.Id) == 0) { reservering.Baan = await _baanRepository.GetBaanAsync(vereniging.Id, vereniging.AccommodatieId, reservering.BaanId.Value); if (!_cachedReserveringen.Any(r => r.Id == reservering.Id)) { _cachedReserveringen.Add(reservering); } } } return(new ObservableCollection <Reservering>(_cachedReserveringen.Where(r => r.BeginTijd >= date.TimeOfDay || r.EindTijd >= date.TimeOfDay))); }
public async Task <Reservering> AddBaanToReserveringAsync(Guid baanId, TimeSpan beginTijd, TimeSpan duur) { if (_cachedReservering == null) { CreateEmptyReservering(); } Vereniging vereniging = await _verenigingRepository.GetVerenigingAsync(); Baan baan = await _baanRepository.GetBaanAsync(vereniging.Id, vereniging.AccommodatieId, baanId); if (_cachedReservering.Baan != baan || _cachedReservering.BaanId != baan.Id) { _cachedReservering.Baan = baan; _cachedReservering.BaanId = baan.Id; _cachedReservering.Datum = DateTime.Now.Date; _cachedReservering.BeginTijd = beginTijd; } await CalCulateDuration(duur); RaiseBaanUpdated(); return(_cachedReservering); }
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 Ticket(Vereniging vereniging, McEditie e, string blankPdf, string ticketsPath, string userName = null) { IsCheckedIn = false; Vereniging = vereniging; Editie = e; if (userName == "Simon") { Barcode = 12345678; } else { Barcode = GenerateBarcodeNumber(); } //PdfPath example: ~/Tickets/3/5/VERNIGING-yyyyxxx.pdf 3=editideId, 5=verenigingId, dan ticketnaam if (userName != null) { string ticketName = $"{vereniging.NormalizedGroepNaam}-{userName.Replace(" ", string.Empty)}.pdf"; PdfPath = Path.Combine(ticketsPath, e.Id.ToString(), vereniging.GroepId.ToString(), ticketName); } else { string ticketName = $"{vereniging.NormalizedGroepNaam}-{Barcode}.pdf"; PdfPath = Path.Combine(ticketsPath, e.Id.ToString(), vereniging.GroepId.ToString(), ticketName); } //make sure directory exists, if dir already exists method does nothing Directory.CreateDirectory(Path.Combine(ticketsPath, e.Id.ToString(), vereniging.GroepId.ToString())); GenerateTicketPdf(blankPdf); }
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 async Task <Vereniging> GetVerenigingByLocatieAsync(double Longitude, double Latitude) { Vereniging vereniging = new Vereniging { Id = Guid.NewGuid() }; ClubCloud_Vereniging ccVereniging = await client.GetVerenigingByLocationAsync("00000000", Latitude, Longitude, false); if (ccVereniging != null) { vereniging = new Vereniging { Id = ccVereniging.Id, Naam = ccVereniging.Naam, Nummer = ccVereniging.Nummer, AccommodatieId = ccVereniging.AccommodatieId.Value }; } else { await Task.Delay(5000); if (vereniging == null) { vereniging = await GetVerenigingByLocatieAsync(Longitude, Latitude); } } return(vereniging); }
private async Task UpdateBanenInfoAsync() { try { if (_vereniging == null) { _vereniging = await _verenigingRepository.GetVerenigingAsync(); } if (_afhang == null) { _afhang = await _verenigingRepository.GetVerenigingSettingsAsync(); } List <Baan> banen = await _baanRepository.GetBanenByDateAsync(_vereniging.Id, _vereniging.AccommodatieId, DateTime.Now); ResourceType banenResource = new ResourceType { TypeName = "Banen" }; foreach (Baan baan in banen) { banenResource.ResourceCollection.Add(new Resource { DisplayName = baan.Naam, ResourceName = baan.Naam, TypeName = "Banen" }); } Banen.Add(banenResource); } catch (Exception ex) { string message = ex.Message; throw; } }
public async Task <IActionResult> OnPostAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } _logger.LogInformation("User with ID '{UserId}' asked for their personal data.", _userManager.GetUserId(User)); // Only include personal data for download var personalData = new Dictionary <string, string>(); var personalDataProps = typeof(IdentityUser).GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(PersonalDataAttribute))); foreach (var p in personalDataProps) { personalData.Add(p.Name, p.GetValue(user)?.ToString() ?? "null"); } Vereniging vereniging = _verenigingRepository.GetByMail(user.Email); personalData.Add("EmailZeden", vereniging.EmailZeden); personalData.Add("IBAN", vereniging.IBAN); Response.Headers.Add("Content-Disposition", "attachment; filename=PersonalData.json"); return(new FileContentResult(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(personalData)), "text/json")); }
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 TradeResponse(Vereniging vereniging, TradeOffer offer, int amount) { Vereniging = vereniging; Amount = amount; Status = OfferStatusType.Pending; Offer = offer; }
public async Task <IActionResult> OnGetAsync() { var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } var userName = await _userManager.GetUserNameAsync(user); var email = await _userManager.GetEmailAsync(user); Vereniging vereniging = _verenigingRepository.GetByMail(email); Username = userName; Input = new InputModel { Email = email, EmailZeden = vereniging.EmailZeden, IBAN = vereniging.IBAN }; return(Page()); }
public async Task <ObservableCollection <Reservering> > GetReserveringenBySpelerAsync(Guid spelerId) { if (_cachedReserveringen == null || (_today == null || _today < DateTime.Today)) { _cachedReserveringen = new ObservableCollection <Reservering>(); Vereniging vereniging = await _verenigingRepository.GetVerenigingAsync(); List <Reservering> reserveringen = await _reserveringService.GetReserveringenAsync(vereniging.Id); foreach (Reservering reservering in reserveringen) { if (_cachedReserveringen.Count(r => r.Id == reservering.Id) == 0) { reservering.Baan = await _baanRepository.GetBaanAsync(vereniging.Id, vereniging.AccommodatieId, reservering.BaanId.Value); _cachedReserveringen.Add(reservering); } } _today = DateTime.Today; } ObservableCollection <Reservering> aankomende = new ObservableCollection <Reservering>(_cachedReserveringen.Where(r => r.BeginTijd >= DateTime.Now.TimeOfDay || r.EindTijd >= DateTime.Now.TimeOfDay)); ObservableCollection <Reservering> gevonden = new ObservableCollection <Reservering>(); foreach (Reservering reservering in aankomende) { if (reservering.Spelers.Count(s => s.Id == spelerId) > 0) { gevonden.Add(reservering); } } return(gevonden); }
private async Task UpdateBanenInfoAsync() { _vereniging = await _verenigingRepository.GetVerenigingAsync(); _reservering = await _reserveringRepository.GetReserveringAsync(); List <Baan> banen = await _baanRepository.GetBanenAsync(_vereniging.Id, _vereniging.AccommodatieId); ObservableCollection <BaanUserControlViewModel> UnorderedBanen = new ObservableCollection <BaanUserControlViewModel>(); foreach (Baan baan in banen) { UnorderedBanen.Add(new BaanUserControlViewModel(baan, _baanRepository, _reserveringRepository, _verenigingRepository, _navigationService, _resourceLoader, _alertMessageService, _eventAggregator)); } ObservableCollection <BaanUserControlViewModel> OrderedBanen = new ObservableCollection <BaanUserControlViewModel>(UnorderedBanen.OrderBy(b => b.BeginTijd).ThenByDescending(b => b.Duur).ThenBy(b => b.Nummer)); Banen = new ObservableCollection <BaanUserControlViewModel>(); foreach (BaanUserControlViewModel baan in OrderedBanen) { Banen.Add(baan); } /* * Banen = new ObservableCollection<BaanUserControlViewModel>(); * foreach (Baan baan in banen) * { * Banen.Add(new BaanUserControlViewModel(baan, _baanRepository, _reserveringRepository,_verenigingRepository, _navigationService, _resourceLoader, _alertMessageService, _eventAggregator)); * } */ }
public IActionResult VerifyEmail(int id, string email) { Vereniging vereniging = _verenigingRepository.GetByMail(email); return(vereniging?.Email.Equals(email) == true && vereniging.GroepId != id ? Json($"E-mailadres {email} is al in gebruik door een vereniging") : Json(true)); }
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 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); }
private void FillWithDummyData() { Vereniging = new Vereniging { Id = Guid.NewGuid(), Naam = "Mijn ClubCloud Club Naam", Nummer = "00000" }; PackageVersion version = Package.Current.Id.Version; Version = string.Format("{0}.{1}.{2}.{3}", version.Major, version.Minor, version.Build, version.Revision); }
//always run after generation of zipfile - safe space + security public void RemoveTicketsVereniging(Vereniging vereniging, string ticketsPath) { string path = Path.Combine(ticketsPath, Id.ToString(), vereniging.GroepId.ToString()); if (Directory.Exists(path)) { Directory.Delete(path, true); } }
private async Task UpdateSpelerImageAsync(Speler speler) { if (_foto == null) { _foto = new Models.Foto(); } _foto.ContentData = null; if (speler == null) { _storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/placeHolderSpeler.png")); try { IBuffer readbuffer = await FileIO.ReadBufferAsync(_storageFile); _foto.ContentData = readbuffer.ToArray(); } catch (Exception ex) { string message = ex.Message; } return; } if (speler.Id != Guid.Empty && _foto.ContentData == null) { try { Vereniging vereniging = await _verenigingRepository.GetVerenigingAsync(); _foto = await _spelerRepository.GetFotoAsync(vereniging.Id, Id); } catch (Exception ex) { string message = ex.Message; } return; } else { _storageFile = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/placeHolderSpeler.png")); try { IBuffer readbuffer = await FileIO.ReadBufferAsync(_storageFile); _foto.ContentData = readbuffer.ToArray(); } catch (Exception ex) { string message = ex.Message; } } }
public Trade(int amount, Vereniging from, Vereniging to) { if (from.GroepId == to.GroepId) { throw new ArgumentException("To and From vereniging are the same"); } Amount = amount; From = from; To = to; }
public IActionResult Details(int id) { Vereniging vereniging = _verenigingRepository.GetById(id); if (vereniging == null) { return(NotFound()); } return(View(vereniging)); }
public async void GetVerenigingByGeoLocatorAsync() { Geoposition position = await _locationService.GetLocationAsync(); _cachedVereniging = await GetVerenigingByLocatieAsync(position.Coordinate.Point.Position.Longitude, position.Coordinate.Point.Position.Latitude); _verenigingId = _cachedVereniging.Id; _sessionStateService.SessionState[VerenigingIdKey] = _verenigingId; RaiseVerenigingUpdated(); }
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))); }
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 Delete(int id) { Vereniging vereniging = _verenigingRepository.GetById(id); if (vereniging == null) { return(NotFound()); } ViewData[nameof(Vereniging.GroepNaam)] = _verenigingRepository.GetById(id).GroepNaam; return(View()); }
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 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; }
//gets the amount of tickets a vereniging has (from ordering AND TRADING) public int GetAmountTotalTicketsByVereniging(Vereniging vereniging) { int count = 0; count += GetAmountTicketsOrderedByVereniging(vereniging); //add tickets received from trades count += Trades.Where(t => t.To.GroepId == vereniging.GroepId).Sum(t => t.Amount); //removed tickets given away with trades count -= Trades.Where(t => t.From.GroepId == vereniging.GroepId).Sum(t => t.Amount); return(count); }
public int GetMaxTicketsVereniging(Vereniging vereniging) { if (vereniging.IsGroot) { return(MaxTicketsGroot); } else { return(MaxTicketsKlein); } }