public IActionResult Register(RegisterEmployeeBindingModel bm) { var expLevels = new[] { "A", "B", "C", "D" }; if (!expLevels.Contains(bm.ExperinceLevel)) { ModelState.AddModelError("ExperinceLevel", "Experince Level must be \"A\", \"B\", \"C\", \"D\""); var companies = CompanyServices.GetAllCompanies(); return(this.View(companies)); } var employee = this.Mapper.Map <Employee>(bm); this.EmployeeServices.AddEmployee(employee); return(RedirectToAction("Details", new { id = employee.Id, slug = employee.Name })); }
public async Task <IHttpActionResult> RegisterEmployee(RegisterEmployeeBindingModel model) { // Adding one day because of the bug with the Daylight Saving Time model.DateOfBirth = model.DateOfBirth.AddDays(1); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } RegisterUserBindingModel employeeToUserBM = AutoMapper.Mapper.Map <RegisterUserBindingModel>(model); IHttpActionResult resultOfUserRegistering = await this.Register(employeeToUserBM); if (typeof(OkNegotiatedContentResult <string>) != resultOfUserRegistering.GetType()) { return(resultOfUserRegistering); } var userId = (resultOfUserRegistering as OkNegotiatedContentResult <string>).Content; User user = await _context.Users.FirstOrDefaultAsync(u => u.Id == userId); var rolesForEmployee = new[] { "Employee" }; var resultOfAddingToRoles = await SafelyAddUserToRole(rolesForEmployee, user.Id); if (resultOfAddingToRoles == false) { return(InternalServerError(new Exception("Adding user to role failed."))); } try { Employee newEmployee = AutoMapper.Mapper.Map <RegisterEmployeeBindingModel, Employee>(model); newEmployee.User = user; newEmployee.UserId = user.Id; _context.Employees.Add(newEmployee); _context.SaveChanges(); } catch (Exception e) { InternalServerError(e); throw; } return(Ok()); }