예제 #1
0
        public async Task <IActionResult> Register(EmployeeWithPassword employeeWithPassword, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                Employees employee = employeeWithPassword.Employee;
                repository.AddEmployee(employee);
                if (ModelState.IsValid)
                {
                    EmployeeUser user = new EmployeeUser
                    {
                        UserName = employee.EmployeeId.ToString()
                    };
                    // Add user to Identity DB
                    IdentityResult result = await userManager.CreateAsync(user, employeeWithPassword.Password);

                    if (!result.Succeeded)
                    {
                        AddErrorsFromResult(result);
                    }
                    else
                    {
                        // Assign user to employee Role
                        result = await userManager.AddToRoleAsync(user, "Employee");

                        if (!result.Succeeded)
                        {
                            // Delete User from Identity DB
                            await userManager.DeleteAsync(user);

                            repository.DeleteEmployee(employee);
                            AddErrorsFromResult(result);
                        }
                        else
                        {
                            return(RedirectToAction("Index", "Home"));
                        }
                    }
                }
            }
            return(View("Index", new ViewEmployeesModel
            {
                EmployeeUsers = userManager.Users,
                Employees = repository.Employees
            }));
        }