// GET: Regattas/Register/{guid} public async Task <IActionResult> Register(Guid?id) { if (id == null) { return(NotFound()); } var regatta = await _context.Regattas.SingleOrDefaultAsync(r => r.Id == id); if (regatta == null) { return(NotFound()); } // Get the boats from the user and convert them to SelectListItems to be consumed by the view. var _boatItems = _context.Boats.Where(b => b.Owner.Id == GetCurrentUser().Id) .Select(b => new SelectListItem { Value = b.Id.ToString(), Text = b.Name }).ToList(); // Insert default value. _boatItems.Insert(0, new SelectListItem { Value = "", Text = "Välj båt" }); var regattaVm = new RegattaRegistrationViewModel { Regatta = regatta, BoatItems = new SelectList(_boatItems, "Value", "Text") }; return(View(regattaVm)); }
public async Task <IActionResult> RegisterConfirmed(Guid?id, RegattaRegistrationViewModel registration) { if (id == null) { return(NotFound()); } if (ModelState.IsValid) { Regatta regatta = await _context.Regattas .Include(r => r.Registrations) .SingleOrDefaultAsync(r => r.Id == id); var _user = GetCurrentUser(); // Check if there is already a registration for this user if (regatta.Registrations.Exists(r => r.UserId == _user.Id)) { // If you have already registered you should be redirected somewhere else. return(RedirectToAction(nameof(Index))); } // Get the boat the user selected from the dropdown Boat _boat = await _context.Boats.SingleOrDefaultAsync(b => b.Id == registration.SelectedBoatId); var newRegistration = new RegattaRegistration { Regatta = regatta, Boat = _boat, User = _user, Message = registration.Message, NumberOfParticipants = registration.NumberOfParticipants }; _context.RegattaRegistration.Add(newRegistration); _context.SaveChanges(); } // Create Registration confirmation view! return(RedirectToAction(nameof(Index))); }