public async Task <IActionResult> CreateEmployee(EmployeeViewModel model) { if (ModelState.IsValid) { var directoryPath = _host.WebRootPath + "/images/EmployeesProfilePictures/"; var filePath = directoryPath + $"{model.FullName.Replace(" ", "")}.jpg"; if (!Directory.Exists(directoryPath)) { Directory.CreateDirectory(directoryPath); } using (var stream = new FileStream(filePath, FileMode.Create)) { await model.ProfilePicture.CopyToAsync(stream); } var employee = new Employee { CreatedOn = DateTime.UtcNow, FullName = model.FullName, FacebookUrl = model.FacebookUrl, JobPosition = model.JobPosition, ShortDescription = model.ShortDescription, IsFired = false, ProfilePictureUrl = "/images/EmployeesProfilePictures/" + $"{model.FullName.Replace(" ", "")}.jpg" }; await _employeeManager.CreateEmployeeAsync(employee); return(Redirect("/Employee/")); } return(View(model)); }
public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { var employee = Mapper.Map <RegisterViewModel, Employee>(model); var IsAdministrator = User.IsInRole("administrator"); var IsManager = User.IsInRole("manager"); var roleName = IsAdministrator ? "manager" : "employee"; if (IsManager) { var manager = await _employeeManager.GetEmployeeByUserNameAsync(User.Identity.Name); employee.ManagerId = manager.Id; } var result = await _employeeManager.CreateEmployeeAsync(employee, new string[] { roleName }, model.Password); if (result.Item1) { _logger.LogInformation("User created a new account with password."); return(RedirectToLocal(returnUrl)); } AddErrors(result.Item2); } // If we got this far, something failed, redisplay form return(View(model)); }
private async Task <Employee> CreateEmployeeAsync(string password, int employeeNumber, string firstName, string lastName, string email, string phoneNumber, string[] roles) { Employee applicationUser = new Employee { FirstName = firstName, LastName = lastName, Email = email, EmployeeNumber = employeeNumber, PhoneNumber = phoneNumber, EmailConfirmed = true, IsEnabled = true, CreatedDate = DateTime.Now.Date }; var result = await _employeeManager.CreateEmployeeAsync(applicationUser, roles, password); if (!result.Item1) { throw new Exception($"Seeding \"{email}\" user failed. Errors: {string.Join(Environment.NewLine, result.Item2)}"); } return(applicationUser); }