private void AddSessionCell(PdfPTable table, ApplicationUserTijdvak applicationUserTijdvak)
        {
            PdfPCell cell;

            if (applicationUserTijdvak.Sessie == null || applicationUserTijdvak.Sessie.Track.BadgeCode == null)
            {
                cell = new PdfPCell(new Phrase(String.Format("")));
                cell.BackgroundColor = new BaseColor(255, 255, 255);
            }
            else
            {
                cell = new PdfPCell(new Phrase(String.Format(applicationUserTijdvak.Sessie.Track.BadgeCode), _fontSession));
                cell.BackgroundColor = DeriveColorFromRgbString(applicationUserTijdvak.Sessie.Track.Rgb);
            }
            AddSessionCellSuffix(table, cell);
            table.AddCell(cell);
        }
        public async Task <IActionResult> EditSessionSelection(EditSessionSelection model)
        {
            string id = _userManager.GetUserId(User);

            if (model == null || id == null || model.TijdvakId == null)
            {
                return(NotFound());
            }

            ApplicationUser user = await _context.ApplicationUsers
                                   .Include(c => c.ApplicationUserTijdvakken)
                                   .ThenInclude(atv => atv.Sessie)
                                   .Include(c => c.ApplicationUserTijdvakken)
                                   .ThenInclude(t => t.Tijdvak)
                                   .SingleOrDefaultAsync(m => m.Id == id);

            if (user == null)
            {
                return(NotFound());
            }

            Sessie sessie = await _context.Sessies
                            .Include(s => s.SessieTijdvakken)
                            .Include(s => s.Ruimte)
                            .SingleOrDefaultAsync(s => s.Id == model.SelectedSessieId);

            if (sessie == null)
            {
                return(NotFound());
            }

            int usercount = await sessie.GetUserCountAsync(_context);

            TempData["StatusMessage"] = "Fout: Registreren bij sessie niet gelukt, probeer het nog een keer...";

            if (usercount < sessie.Ruimte.Capacity)
            {
                // release tijdvakken for the current session (as we might be going from a 2 tijdvak session to a 1 tijdvak session, we need to make sure all tijdvakken are released)
                ApplicationUserTijdvak currentautv = await _context.ApplicationUserTijdvakken
                                                     .Where(t => t.ApplicationUserId == user.Id)
                                                     .SingleOrDefaultAsync(t => t.TijdvakId == model.TijdvakId);

                Sessie currentsessie = await _context.Sessies.SingleOrDefaultAsync(s => s.Id == currentautv.SessieId);

                if (currentsessie != null)
                {
                    foreach (ApplicationUserTijdvak autv in user.ApplicationUserTijdvakken)
                    {
                        if (autv.SessieId == currentsessie.Id)
                        {
                            autv.SessieId = null;
                        }
                    }
                }

                // reserve tijdvakken for the selected session
                foreach (SessieTijdvak stv in sessie.SessieTijdvakken)
                {
                    foreach (ApplicationUserTijdvak autv in user.ApplicationUserTijdvakken)
                    {
                        if (stv.TijdvakId == autv.TijdvakId)
                        {
                            autv.SessieId = stv.SessieId;
                        }
                    }
                }
                try
                {
                    sessie.ForceChangeCount++;
                    var saveresult = await _context.SaveChangesAsync();

                    TempData["StatusMessage"] = "U bent geregistreerd voor de sessie...";
                }
                catch (DbUpdateConcurrencyException)
                {
                }
            }
            return(RedirectToAction(nameof(SelectSessies)));
        }