public async Task <IActionResult> CreateAssistant(AssistantCreationBindingModel assistantCreationBindingModel) { ViewBag.Action = "Assistants"; //Create 'Assistant' Role if it doesn't exist string RoleString = "Assistant"; var role = await _roleManager.RoleExistsAsync(RoleString); if (!role) { await _roleManager.CreateAsync(new IdentityRole(RoleString)); } Assistant assistant = null; //Validate Model if (ModelState.IsValid) { var user = CreateUser(assistantCreationBindingModel); //create user and assign role if successful var result = await _userManager.CreateAsync(user, assistantCreationBindingModel.Password); if (result.Succeeded) { //Fill role related attributes assistant = new Assistant() { User = user, DoctorId = assistantCreationBindingModel.DoctorId }; _context.Add(assistant); await _context.SaveChangesAsync(); await _context.SaveChangesAsync(); await _userManager.AddToRoleAsync(user, RoleString); } await _context.SaveChangesAsync(); return(RedirectToAction("Assistants")); } var doctors = _context.Doctors.Include(d => d.User).ToList(); ViewBag.Gender = genders.Select(g => new SelectListItem { Text = g, Value = g }); ViewBag.DoctorId = doctors.Select(d => new SelectListItem { Text = d.User.UserName, Value = d.Id }); return(View("./Assistants/Create", assistant)); }
public async Task <IActionResult> EditAssistant(string id, AssistantCreationBindingModel assistantCreationBindingModel) { ViewBag.Action = "Assistants"; if (id != assistantCreationBindingModel.Id) { return(NotFound()); } if (ModelState.IsValid) { try { var assistant = await _context.Assistants.Where(a => a.Id.Equals(id)).Include(a => a.User).SingleAsync(); MapUser(assistant.User, assistantCreationBindingModel); assistant.DoctorId = assistantCreationBindingModel.DoctorId; _context.Update(assistant); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!AssistantExists(assistantCreationBindingModel.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("Assistants")); } var doctors = _context.Doctors.Include(d => d.User).ToList(); ViewBag.Gender = genders.Select(g => new SelectListItem { Text = g, Value = g }); ViewBag.DoctorId = doctors.Select(d => new SelectListItem { Text = d.User.UserName, Value = d.Id }); return(View("./Assistants/Edit", assistantCreationBindingModel)); }