예제 #1
0
        // 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));
        }
예제 #2
0
        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)));
        }