public async Task <ActionResult> NewEmployee(CreateEmployeeViewModel employee) { if (ModelState.IsValid) { var res = await createEmployeeCommand.Create(employee); if (res.Successful) { NotificationsController.AddNotification(this.User.SafeUserName(), $"{employee.Email} has been created."); return(RedirectToAction(nameof(NewEmployee))); } else { foreach (var err in res.Errors) { ModelState.AddModelError(string.Empty, err); } } } employee.AvailableJobs = await jobService.GetAsync(); employee.AvailableRoles = await employeeService.GetAllRoles(); return(View("NewEmployee", employee)); }
public async Task <ActionResult> NewEmployee() { var allJobs = await jobService.GetAsync(); var roles = await employeeService.GetAllRoles(); var vm = new CreateEmployeeViewModel() { AvailableJobs = allJobs, AvailableRoles = roles }; return(View("NewEmployee", vm)); }
public async Task <Result> Create(CreateEmployeeViewModel employee) { var userRole = employee.SelectedRole; var user = new IdentityUser { UserName = employee.Email, Email = employee.Email }; var passwordsMatch = employee.Password.Equals(employee.PasswordConfirm); if (!passwordsMatch) { return(new Result(false, "Passwords don't match")); } var isNewEmployee = (await userManager.FindByNameAsync(employee.Email)) == null; if (!passwordsMatch) { return(new Result(false, $"{employee.Email} has already been created.")); } var result = await userManager.CreateAsync(user, employee.Password); if (result.Succeeded) { var employeesJobs = employee.SelectedJobs == null ? new List <int>() : employee.SelectedJobs.Select(x => int.Parse(x)).ToList(); await userManager.AddToRoleAsync(user, userRole); employeeService.Save(new EmployeeDTO() { UserName = employee.Email, AssignJobs = employeesJobs, Role = userRole, First = employee.FirstName, Last = employee.LastName, IsExempt = employee.IsExempt, }); return(new Result(true)); } else { return(new Result(false, result.Errors.Select(err => $"{ err.Code}-{err.Description}").ToArray())); } }