public async Task <IActionResult> Create([Bind("SessionId,TrackId,TimeslotId")] Schedule schedule) { if (ModelState.IsValid) { _context.Add(schedule); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["SessionId"] = new SelectList(_context.Sessions, "SessionId", "SessionId", schedule.SessionId); ViewData["TimeslotId"] = new SelectList(_context.Timeslots, "TimeslotId", "TimeslotId", schedule.TimeslotId); ViewData["TrackId"] = new SelectList(_context.Tracks, "TrackId", "Name", schedule.TrackId); return(View(schedule)); }
public async Task <bool> UpdateUser(CodecampUser user) { try { _context.CodecampUsers.Update(user); await _context.SaveChangesAsync(); return(true); } catch (DbUpdateConcurrencyException) { if (!await UserExists(user.Id)) { return(false); } else { throw; } } }
public async Task <IActionResult> OnGetAsync(string loginWithRegistration = null) { ViewData["MaxImageSize"] = SpeakerViewModel.MaxImageSize / 1000; LoginWithRegistration = loginWithRegistration; var user = await _userManager.GetUserAsync(User); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } // Finish registering the user as a speaker if (loginWithRegistration == "Speaker") { // Set role as Speaker user.IsAttending = true; user.IsSpeaker = true; await _userManager.AddToRoleAsync(user, "Speaker"); // Remove Attendee role await _userManager.RemoveFromRoleAsync(user, "Attendee"); // Set the users event to the current event var currentEvent = await _eventBL.GetActiveEvent(); if (user.EventId.HasValue == false || (user.EventId.HasValue == true && user.EventId.Value != currentEvent.EventId)) { user.EventId = currentEvent.EventId; } // Save the changes await _context.SaveChangesAsync(); } else if (LoginWithRegistration == "Attendee") { // Set role as Speaker user.IsAttending = true; // Set the users event to the current event var currentEvent = await _eventBL.GetActiveEvent(); if (user.EventId.HasValue == false || (user.EventId.HasValue == true && user.EventId.Value != currentEvent.EventId)) { user.EventId = currentEvent.EventId; } // Save the changes await _context.SaveChangesAsync(); } IsSpeaker = User.IsInRole("Speaker"); var userName = await _userManager.GetUserNameAsync(user); var email = await _userManager.GetEmailAsync(user); var phoneNumber = await _userManager.GetPhoneNumberAsync(user); Username = userName; if (IsSpeaker && user.SpeakerId.HasValue) { // Retrieve the associated speaker var speaker = await _speakerBL.GetSpeakerViewModel(user.SpeakerId.Value); Input = new InputModel() { SpeakerId = speaker.SpeakerId, FirstName = user.FirstName, LastName = user.LastName, GeographicLocation = user.GeographicLocation, TwitterHandle = user.TwitterHandle, IsVolunteer = user.IsVolunteer, Email = email, PhoneNumber = phoneNumber, CompanyName = speaker != null ? speaker.CompanyName : string.Empty, Bio = speaker != null ? speaker.Bio : string.Empty, WebsiteUrl = speaker != null ? speaker.WebsiteUrl : string.Empty, BlogUrl = speaker != null ? speaker.BlogUrl : string.Empty, LinkedIn = speaker != null ? speaker.LinkedIn : string.Empty, IsMvp = speaker != null ? speaker.IsMvp : false, NoteToOrganizers = speaker != null ? speaker.NoteToOrganizers : string.Empty }; } else // An Attendee { Input = new InputModel { FirstName = user.FirstName, LastName = user.LastName, GeographicLocation = user.GeographicLocation, TwitterHandle = user.TwitterHandle, IsVolunteer = user.IsVolunteer, Email = email, PhoneNumber = phoneNumber }; } IsEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user); return(Page()); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { if (ModelState.IsValid) { // Get the current event var theEvent = await _eventBL.GetActiveEvent(); var user = new CodecampUser { IsAttending = true, IsSpeaker = false, UserName = Input.Email, Email = Input.Email, IsVolunteer = Input.IsVolunteer, EventId = theEvent != null ? theEvent.EventId : (int?)null }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); await _userManager.AddToRoleAsync(user, "Attendee"); // Save the DB changes await _context.SaveChangesAsync(); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme); // Generate and send a confirmation email to the user await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); // Redirect to the registration almost complete page return(RedirectToPage("./RegistrationAlmostComplete")); } foreach (var error in result.Errors) { if (error.Code == "DuplicateUserName") { // The account currently exists, redirect to login page, note // this is to complete speaker registration. return(RedirectToPage("./Login", new { ReturnUrl = "./Manage/Index", LoginWithRegistration = "Attendee", Email = Input.Email // pass the email/username for convenience })); } ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }