private async Task <int> CrateParent(PerentCreateViewModel input, ApplicationUser user) { var parentId = await this.parentServices.CreateAsync(input.FirstName, input.LastName, input.Email, user.Id); await this.parentServices.SetStudentToParent(parentId, input.StudentId); return(parentId); }
public IActionResult Create(int id) { var viewModel = new PerentCreateViewModel { StudentId = id, }; var hasParent = this.parentServices.HasParent(viewModel.Email); if (hasParent) { return(this.RedirectToAction("Edit", new { id = viewModel.Id })); } return(this.View(viewModel)); }
public async Task <IActionResult> CreateAsync(PerentCreateViewModel input) { var hasParent = this.parentServices.HasParent(input.Email); var hasStudent = this.parentServices.ParentHasStudent(input.Email, input.StudentId); var parentUser = await this.userManager.FindByEmailAsync(input.Email); if (!this.ModelState.IsValid) { return(this.View(input)); } else if (parentUser == null && !hasParent) { var user = new ApplicationUser { UserName = input.Email, Email = input.Email, EmailConfirmed = true, }; var password = "******"; var result = await this.userManager.CreateAsync(user, password); if (result.Succeeded) { int parentId = await this.CrateParent(input, user); await this.userManager.AddToRoleAsync(user, GlobalConstants.ParentRoleName); return(this.RedirectToAction("Details", new { id = parentId })); } } else if (parentUser != null && !hasParent) { var isInRole = this.userManager.IsInRoleAsync(parentUser, GlobalConstants.ParentRoleName); if (await isInRole) { int parentId = await this.CrateParent(input, parentUser); return(this.RedirectToAction("Details", new { id = parentId })); } else { int parentId = await this.CrateParent(input, parentUser); await this.userManager.AddToRoleAsync(parentUser, GlobalConstants.ParentRoleName); return(this.RedirectToAction("Details", new { id = parentId })); } } else if (parentUser != null && hasParent && !hasStudent) { var parentId = this.parentServices.GetParentId(input.Email); await this.parentServices.SetStudentToParent(parentId, input.StudentId); return(this.RedirectToAction("Details", new { id = parentId })); } return(this.View("ParentHasStudent")); }