private SelectList GetKonventenAsSelectList()
 {
     return(new SelectList(
                _konventRepository.GetAll().OrderBy(k => k.GroepNaam),
                nameof(Konvent.GroepId),
                nameof(Konvent.GroepNaam)
                ));
 }
        private Chart GenerateTicketsPerKonventChart(McEditie editie)
        {
            Chart chart = new Chart
            {
                Type = Enums.ChartType.Bar
            };

            ChartJSCore.Models.Data data = new ChartJSCore.Models.Data
            {
                Labels   = new List <string>(),
                Datasets = new List <Dataset>()
            };
            foreach (var vm in editie.Verkoopmomenten.OrderBy(vm => vm.StartDatum))
            {
                data.Labels.Add($"Verkoop {vm.GetVerkoopmomentNumberInEditie()}");
            }
            data.Labels.Add("Totaal");

            //Generate datasets
            int colorNum = 0;

            foreach (var konvent in _konventRepository.GetAll())
            {
                //calculate tickets for each vm and the total
                var dataForDataset = new List <double>();
                int konventSum     = 0;
                foreach (var vm in editie.Verkoopmomenten.OrderBy(vm => vm.StartDatum))
                {
                    int tickets = vm.Bestellingen
                                  .Where(b => b.Vereniging.Konvent?.GroepId == konvent.GroepId)
                                  .Sum(b => b.AantalGereserveerdeTickets);
                    dataForDataset.Add(tickets);
                    konventSum += tickets;
                }
                dataForDataset.Add(konventSum);

                //create the actual dataset
                Random     rand    = new Random();
                BarDataset dataset = new BarDataset()
                {
                    Label           = konvent.GroepNaam,
                    Data            = dataForDataset,
                    BackgroundColor = new List <ChartColor>
                    {
                        ChartColorTransparent[colorNum]
                    },
                    BorderColor = new List <ChartColor>
                    {
                        ChartColorSolid[colorNum]
                    },
                    BorderWidth = new List <int>()
                    {
                        1
                    }
                };
                data.Datasets.Add(dataset);
                chart.Data = data;
                colorNum++;
            }

            chart.Options = new Options()
            {
                Title = new Title()
                {
                    Display  = true,
                    Position = "top",
                    Text     = "Aantal tickets verkocht per verkoopmoment per konvent",
                    FontSize = 20
                }
            };

            return(chart);
        }