public async Task<ActionResult> Update(string id, ChangeUserViewModel vm)
        {
            try
            {
                var user = await UserManager.FindByIdAsync(id);
                if (user == null)
                {
                    //Logger.LogInformation($"Update: Cannot find user with id {id}");
                    return HttpNotFound();
                }
                user.UserName = vm.User.UserName;

                var uRole = await getRoleFromUser(user);

                var res = await UserManager.UpdateAsync(user);
                if (res.Succeeded)
                {
                    var err = false;

                    ////Rolle updaten?
                    if (uRole != null && !string.IsNullOrEmpty(uRole.Id) && vm.IsAdministrator == false)
                    {
                        //War admin, wurde entfernt
                        await UserManager.RemoveFromRoleAsync(user.Id, "admin");
                    }
                    else if ((uRole == null || string.IsNullOrEmpty(uRole.Id)) && vm.IsAdministrator)
                    {
                        //War nix ist nun admin
                        await UserManager.AddToRoleAsync(user.Id, "admin");
                    }

                    //Employee-Link updaten?
                    bool newAssignment = false;
                    var emp = await _empService.GetEmployee(user);
                    if (emp == null)
                    {
                        if (vm.EmployeeId != 0)
                        {
                            emp = await _empService.GetEmployee(vm.EmployeeId);
                            newAssignment = true;
                        }
                    }
                    if (emp != null)
                    {
                        //Spezialfall:
                        //Es gibt einen zugeordneten Employee (emp != null) und die im ViewModel übergebene EmployeeId ist 0 (kein Employee ausgewählt) -> Mitarbeiter zuordnung entfernen
                        if (vm.EmployeeId == 0)
                        {
                            try
                            {
                                await _empService.UnassignUser(user);
                                err = false;
                            }
                            catch (Exception ex)
                            {
                                //Logger.LogError($"Cannot remove employee {emp.FirstName} {emp.LastName} from user {user.UserName}!", ex);
                                ModelState.AddModelError(String.Empty, $"Der Mitarbeiter {emp.FirstName} {emp.LastName} konnte nicht vom Benutzer {user.UserName} entfernt werden! Bitte kontaktieren Sie den Administrator!");
                                err = true;
                            }
                        }
                        else
                        {
                            //Updaten
                            try
                            {
                                if (newAssignment) await _empService.AssignUser(emp, user);
                                else await _empService.ChangeAssignedEmployee(user, vm.EmployeeId);
                                err = false;
                            }
                            catch (Exception ex)
                            {
                                //Logger.LogError($"Cannot assign employee {emp.FirstName} {emp.LastName} to user {user.UserName}!", ex);
                                ModelState.AddModelError(String.Empty, $"Der Mitarbeiter {emp.FirstName} {emp.LastName} konnte dem Benutzer {user.UserName} nicht zugeordnet werden! Bitte kontaktieren Sie den Administrator!");
                                err = true;
                            }
                        }
                    }


                    if (err == false) return RedirectToAction("Index");
                }
                else
                {
                    //Logger.LogError("Cannot update User: "******"Error updateing user!", ex);
                ModelState.AddModelError(string.Empty, "Unable to save changes.");
            }

            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(vm);
        }
        public async Task<ActionResult> Edit(string id)
        {
            var user = await UserManager.FindByIdAsync(id);
            if (user == null)
            {
                //Logger.LogInformation($"Edit: Cannot find user with id {id}");
                return HttpNotFound();
            }
            var rId = getRoleIdFromUser(user);
            var emp = await _empService.GetEmployee(user);
            var eId = emp == null ? 0 : emp.Id;
            var vm = new ChangeUserViewModel { User = user, EmployeeId = eId };
            if (!string.IsNullOrEmpty(rId))
            {
                vm.IsAdministrator = true;
            }
            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(vm);
        }