//public ActionResult Create([Bind(Include = "Id,Name,IdentificationId")] Customer customer) public async Task <ActionResult> Create(UserAndCustomerViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = String.Format("cus-{0}", model.User.UserName), Email = model.User.Email, CreationDate = DateTime.Today }; var result = await UserManager.CreateAsync(user, model.User.Password); if (result.Succeeded) { var RoleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(new ApplicationDbContext())); var RoleName = "Customer"; if (!RoleManager.RoleExists(RoleName)) { RoleManager.Create(new IdentityRole(RoleName)); var userTemp = UserManager.FindByName(user.UserName); if (!UserManager.IsInRole(userTemp.Id, RoleName)) { UserManager.AddToRole(userTemp.Id, RoleName); } } var customer = new Customer { Id = user.UserName, Name = model.Customer.Name, IdentificationId = model.Customer.IdentificationId, StatusId = 1, }; db.Customers.Add(customer); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } AddErrors(result); } ViewBag.StatusId = new SelectList(db.Statuses, "Id", "Name", model.Customer.StatusId); return(View(model)); }
public async Task <ActionResult> Register(UserAndCustomerViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser(); string prefix = "cus"; bool isEmployee = false; if (db.Employees.Count() == 0) { prefix = "adm"; isEmployee = true; } user = new ApplicationUser { UserName = String.Format("{0}-{1}", prefix, model.User.UserName), Email = model.User.Email, CreationDate = DateTime.Today }; var result = await UserManager.CreateAsync(user, model.User.Password); if (result.Succeeded) { //var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext())); //var RoleName = "Customer"; /*if (!RoleManager.RoleExists(RoleName)) { * RoleManager.Create(new IdentityRole(RoleName)); * var userTemp = UserManager.FindByName(user.UserName); * if (!UserManager.IsInRole(userTemp.Id, RoleName)) * { * UserManager.AddToRole(userTemp.Id, RoleName); * } * }*/ await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); var userTemp = UserManager.FindByName(user.UserName); string RoleName = "Customer"; if (isEmployee) { RoleName = "Admin"; var employee = new Employee { Id = user.UserName, IdentificationId = model.Customer.IdentificationId, Name = model.Customer.Name, Status = model.Customer.Status, StatusId = 1, DepartmentId = 1, PositionId = 1 }; db.Employees.Add(employee); } else { var customer = new Customer { Id = user.UserName, IdentificationId = model.Customer.IdentificationId, Name = model.Customer.Name, Status = model.Customer.Status, StatusId = 1 }; db.Customers.Add(customer); } if (!UserManager.IsInRole(userTemp.Id, RoleName)) { UserManager.AddToRole(userTemp.Id, RoleName); } await db.SaveChangesAsync(); //var customer = new Customer { Id = user.UserName, IdentificationId = model.Customer.IdentificationId, // Name = model.Customer.Name, Status = model.Customer.Status, StatusId = 1 }; return(RedirectToAction("Index", "Home")); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }