public async Task <IActionResult> Create([FromBody] EmployeeDTO dto, CancellationToken cancellationToken = default) { var store = await _storeRepository.FindByIdAsync(dto.StoreId, cancellationToken); if (store == null) { return(NotFound("No Store Found")); } var employee = _mapper.Map <Employee>(dto); employee.IsDeleted = false; // Just to make sure that the field is false at the point of creating var result = await _employeeManager.CreateAsync(employee, dto.PasswordHash); if (!result.Succeeded) { return(StatusCode(500)); } var addtoRoleResullt = await _employeeManager.AddToRoleAsync(employee, "employee"); if (!addtoRoleResullt.Succeeded) { return(BadRequest("Fail to add role")); } return(CreatedAtAction(nameof(GetById), new { employee.Id }, _mapper.Map <EmployeeDTO>(employee))); }
public async Task <ActionResult> CreateEmployee(EmployeeRegisterViewModel model) { string upgraded = await _adminRepository.GetUserStatusAsync(CurrentUser) ?? ""; int numberOfEmployees = EmployeeManager.Users.Where(u => u.CompanyId == CurrentCompanyId).Count(); if (numberOfEmployees >= 5 && !upgraded.Equals("active")) { return(RedirectToAction("Index", "Admin", new { message = "Please upgrade your account to add more employees." })); } if (ModelState.IsValid) { var user = new EmployeeUser { UserName = model.Username, FirstName = model.FirstName, LastName = model.LastName, PayRate = model.Payrate, OverTimeRate = model.OvertimeRate, TaxRate = model.TaxRate, HireDate = model.HireDate, PhoneNumber = model.Phone, Address = model.Address, PayMethod = model.PayMethod, CompanyId = CurrentCompanyId, CompanyName = CurrentCompany, IsAdmin = false }; var result = await EmployeeManager.CreateAsync(user, model.Password); if (result.Succeeded) { result = await EmployeeManager.AddToRoleAsync(user.Id, "Employee"); } if (result.Succeeded) { return(RedirectToAction("Index", "Admin", new { message = "Employee created successfully." })); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }