public ActionResult RegisterContestant(AdmissionEntryViewModel model, int[] entryOptionId)
        {
            try
            {
                if (unitOfWork.Contestants.Get(model.Contestant.Id) != null)
                {
                    ModelState.AddModelError("Contestant.Id", "CNP already exists. Use \"Add existing\" instead.");
                }
                if (model.RDPSpot == true && model.RromSpot == true)
                {
                    ModelState.AddModelError("RDPSpot", "Can only choose one.");
                }
                if (!ModelState.IsValid)
                {
                    return(View(GetAdmissionEntryViewModel()));
                }

                var employee   = userManager.GetUserAsync(User).Result;
                var contestant = mapper.Map <Contestant>(model.Contestant);
                contestant.ContestantId = model.Contestant.Id;

                unitOfWork.Contestants.Add(contestant);

                var admissionEntry = new AdmissionEntry
                {
                    ContestantId = contestant.ContestantId,
                    EntryScore   = model.EntryScore,
                    EmployeeId   = employee.Id,
                    DateCreated  = DateTime.Now,
                    RromSpot     = model.RromSpot,
                    RDPSpot      = model.RDPSpot
                };
                unitOfWork.AdmissionEntries.Add(admissionEntry);
                unitOfWork.Complete();

                admissionEntry = unitOfWork.AdmissionEntries.GetAdmissionEntryByContestant(contestant.ContestantId);

                foreach (int id in entryOptionId)
                {
                    unitOfWork.EntryOptions.Add(new EntryOption
                    {
                        OptionId         = id,
                        AdmissionEntryId = admissionEntry.Id
                    });
                }
                unitOfWork.Complete();
                CreateContestantAccount(contestant);

                return(RedirectToAction(nameof(Index)));
            }
            catch (Exception e)
            {
                return(View(GetAdmissionEntryViewModel()));
            }
        }
 private AdmissionEntryViewModel GetAdmissionEntryViewModel()
 {
     if (unitOfWork.Sessions.IsAnyActive())
     {
         var session      = unitOfWork.Sessions.GetActiveSession();
         var entryOptions = mapper.Map <List <EntryOptionViewModel> >(unitOfWork.Options.GetOptionsBySessionId(session.Id));
         foreach (var option in entryOptions)
         {
             option.Name = unitOfWork.Specializations.GetNameById(option.SpecializationId);
         }
         var admissionEntryViewModel = new AdmissionEntryViewModel
         {
             EntryOptions = entryOptions
         };
         return(admissionEntryViewModel);
     }
     return(null);
 }