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); }