Ejemplo n.º 1
0
        //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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
                }
            }
        }
Ejemplo n.º 4
0
 //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));
 }
Ejemplo n.º 5
0
 //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));
 }
Ejemplo n.º 6
0
 //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());
 }