public async Task<ActionResult> Create(CreateUserViewModel model) { bool haserror = false; if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Username }; var res = await UserManager.CreateAsync(user, model.Password); if (res.Succeeded) { res = null; if (model.IsAdministrator) { res = await UserManager.AddToRoleAsync(user.Id, "admin"); if (res.Succeeded) { if (model.EmployeeId != "0") { await _empService.AssignUser(model.EmployeeId.ToInt(), user); } return RedirectToAction("Index"); } else { ModelState.AddModelError(String.Empty, $"Der Benutzer {user.UserName} konnte nicht der Rolle admin zugeordnet werden. Bitte kontaktieren Sie den Administrator!"); res = null; res = await UserManager.DeleteAsync(user); //if (!res.Succeeded) Logger.LogError($"Couldn't roleback the user {user.UserName}! ({getErrors(res)}"); haserror = true; } } if (!haserror) { if (model.EmployeeId != "0") { await _empService.AssignUser(model.EmployeeId.ToInt(), user); } return RedirectToAction("Index"); } } else { AddErrors(res); } } model.Password = string.Empty; model.ConfirmPassword = string.Empty; var emps = await _empService.GetEmployees(true, true); var list = emps.Select(e => new SelectListItem { Value = e.Id.ToString(), Text = $"{e.FirstName} {e.LastName}" }).ToList(); ViewBag.Employees = new SelectList(list, "Value", "Text"); return View(model); }
/// <summary> /// Get Employee by User /// </summary> /// <param name="user">Application User</param> /// <returns></returns> public async Task<EmployeeModel> GetEmployee(ApplicationUser user) { var emps = await _context.Employees.ToListAsync(); EmployeeModel emp = null; foreach (var e in emps) { if (e.User != null) { if (e.User.Id == user.Id) { emp = e; break; } } } //emp = await _context.Employees.Where(e => (e.User == null) ? false : e.User.Id == user.Id).FirstOrDefaultAsync(); return emp; }
public async Task ChangeAssignedEmployee(ApplicationUser user, EmployeeModel newEmployee) { //Den Link entfernen await UnassignUser(user); await AssignUser(newEmployee, user); //var emp = await _context.Employees.Where(e => e.User.Id == user.Id).FirstOrDefaultAsync(); //var newUser = await _context.Users.Where(u => u.Id == user.Id).FirstOrDefaultAsync(); //if (emp != null) //{ // //Link besteht, Employee ändern // emp.User = newUser; // _context.Entry(emp).State = EntityState.Modified; // await _context.SaveChangesAsync(); //} //else //{ // //Link gibt es nicht // newEmployee.User = newUser; // _context.Entry(newEmployee).State = EntityState.Modified; // await _context.SaveChangesAsync(); //} }
public async Task ChangeAssignedEmployee(ApplicationUser user, int newEmployeeId) { var emp = await GetEmployee(newEmployeeId); await ChangeAssignedEmployee(user, emp); }
public async Task UnassignUser(ApplicationUser user) { try { //var link = await _context.EmployeeUsers.Where(e => e.UserId == user.Id).FirstOrDefaultAsync(); //if (link != null) //{ // //link.UserId = String.Empty; // //_context.Entry(link).State = EntityState.Modified; // _context.EmployeeUsers.Remove(link); // await _context.SaveChangesAsync(); //} //using (var db = new ApplicationDbContext()) //{ // var emp = await db.Employees.Where(e => e.User.Id == user.Id).FirstOrDefaultAsync(); // emp.User = null; // db.Entry(emp).State = EntityState.Modified; // await db.SaveChangesAsync(); //} var emp = await _context.Employees.Where(e => e.User.Id == user.Id).FirstOrDefaultAsync(); if (emp != null) { emp.User = null; _context.Entry(emp).State = EntityState.Modified; await _context.SaveChangesAsync(); } } catch (DbUpdateException ex) { throw new Exception("Cannot remove user from Employee!", ex); } }
public async Task AssignUser(EmployeeModel emp, ApplicationUser user) { ////var link = new EmployeeUser { EmployeeId = emp.EmployeeId, UserId = user.Id }; ////_context.EmployeeUsers.Add(link); ////await _context.SaveChangesAsync(); //using (var db = new ApplicationDbContext()) //{ // //var currEmp = await db.Employees.Where(e => e.Id == emp.Id).FirstOrDefaultAsync(); // //currEmp.User = user; // //db.Entry(currEmp).State = EntityState.Modified; // emp.User = user; // db.Entry(emp).State = EntityState.Modified; // await db.SaveChangesAsync(); //} //Zuerst den User ermitteln var u = await _context.Users.Where(x => x.Id == user.Id).FirstOrDefaultAsync(); emp.User = u; _context.Entry(emp).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (Exception ex) { throw ex; } }
public async Task AssignUser(int EmployeeId, ApplicationUser user) { var emp = await GetEmployee(EmployeeId); await AssignUser(emp, user); }
//private async Task<IdentityRole> getRoleFromUser(string userId) //{ // var roleIds = await getRoleIdFromUser(userId); // return await Context.Roles.Where(r => roleIds.Contains(r.Id)).ToListAsync(); //} private string getRoleIdFromUser(ApplicationUser user) { var role = user.Roles.FirstOrDefault(); if (role == null) return string.Empty; return role.RoleId; }
private async Task<IdentityRole> getRoleFromUser(ApplicationUser user) { var id = getRoleIdFromUser(user); return await getRole(id); }