public async Task <IActionResult> AddParentToCurrentProgram(string email, int programid) { var parent = _context.Parents.SingleOrDefault(p => p.Email == email); if (parent == null) { parent = new Models.Parent(); parent.Email = email; parent.FirstName = "Placeholder"; parent.LastName = "Placeholder"; parent.Phone = 1234567890; var programs = new List <Program_Parent>(); var allPrograms = _context.Programs; foreach (var prog in allPrograms) { if (prog.ID == programid) { parent.Programs.Add(new Program_Parent { ProgramID = programid, ParentID = parent.ID }); } } _context.Add(parent); await _context.SaveChangesAsync(); } else if (parent != null) { var allPrograms = _context.Programs; foreach (var prog in allPrograms) { if (prog.ID == programid) { parent.Programs.Add(new Program_Parent { ProgramID = programid, ParentID = parent.ID }); } } await _context.SaveChangesAsync(); } string redirectAction = "Details/" + programid; return(RedirectToAction(redirectAction)); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { var user = new IdentityUser { UserName = Input.Email, Email = Input.Email }; var result = await _userManager.CreateAsync(user, Input.Password); var role = new IdentityRole { Name = "Parent" }; await _userManager.AddToRoleAsync(user, "Parent"); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var parent = _context.Parents.SingleOrDefault(p => p.Email == Input.Email); if (parent == null) { parent = new Models.Parent(); parent.Email = user.Email; parent.FirstName = Input.FirstName; parent.LastName = Input.LastName; parent.Phone = Input.Phone; _context.Add(parent); await _context.SaveChangesAsync(); } else if (parent.ParentName == "Placeholder Placeholder") { parent.FirstName = Input.FirstName; parent.LastName = Input.LastName; parent.Phone = Input.Phone; 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); await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }