//gets the amount of tickets left (that are not sold) public int GetAmountTicketsRemaining() { int tickets = 0; Verkoopmomenten.SelectMany(v => v.Bestellingen).ToList().ForEach(b => tickets += b.AantalGereserveerdeTickets); return(MaxTickets - tickets); }
public void AddVerkoopMoment(Verkoopmoment verkoopmoment) { if (EnableTimeRestrictions && verkoopmoment.EindDatum.AddDays(2) > StartDatum) { throw new ArgumentException("Verkoopmoment moet minstens 2 dagen voor de editie plaatsvinden"); } foreach (Verkoopmoment v in Verkoopmomenten) { if (verkoopmoment.StartDatum < v.EindDatum && v.StartDatum < verkoopmoment.EindDatum) { throw new ArgumentException("Verkoopmomenten kunnen niet op hetzelfde moment doorgaan, er bestaat reeds een VM tijdens deze periode"); } } Verkoopmomenten.Add(verkoopmoment); }
public void GenerateTicketsForVereniging(Vereniging vereniging, string blankPdf, string ticketsPath, List <string> memberNames) { if (Verkoopmomenten.Count == 0) { throw new ArgumentException("Er bestaan nog geen verkoopmomenten, dus er kunnen geen tickets gemaakt worden"); } bool allPast = Verkoopmomenten.All(v => v.EindDatum < DateTime.Now); if (!allPast) { throw new ArgumentException("Kan geen tickets genereren voor alle verkoopmomenten afgelopen zijn!"); } if (Status != McEditieStatusType.Download) { throw new ArgumentException("Kan geen tickets genereren tijdens doorverkoopfase"); } //remove existing tickets for vereniging Tickets.Where(t => t.Vereniging.GroepId == vereniging.GroepId).ToList().ForEach(t => Tickets.Remove(t)); string editionVerenigingDir = Path.Combine(ticketsPath, Id.ToString(), vereniging.GroepId.ToString()); if (Directory.Exists(editionVerenigingDir)) { Directory.Delete(editionVerenigingDir, true); } for (int i = 0; i < GetAmountTotalTicketsByVereniging(vereniging); i++) { if (memberNames != null && i < memberNames.Count) { Tickets.Add(new Ticket(vereniging, this, blankPdf, ticketsPath, memberNames[i])); } else { Tickets.Add(new Ticket(vereniging, this, blankPdf, ticketsPath)); } } }
//returns all bestellingen of the given vereniging public IEnumerable <Bestelling> GetBestellingenOfVereniging(Vereniging vereniging) { return(Verkoopmomenten.SelectMany(v => v.Bestellingen) .Where(b => b.Vereniging.GroepId == vereniging.GroepId)); }
//used to fetch bestelling when only edtion is given public Bestelling GetBestelling(int bestellingId) { return(Verkoopmomenten.SelectMany(v => v.Bestellingen).SingleOrDefault(b => b.BestellingId == bestellingId)); }
//Heeft het huidige of eerstkomende verkoopmoment terug voor deze editie, null als er geen meer voorkomen public Verkoopmoment GetCurrentOrNextVerkoopMoment() { return(Verkoopmomenten.Where(vm => vm.EindDatum >= DateTime.Now).OrderBy(vm => vm.StartDatum).FirstOrDefault()); }