// GET: User public async Task <IActionResult> Index() { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var user = await _userManager.FindByIdAsync(userId); var roles = await _userManager.GetRolesAsync(user); Department department = await _departmentRepository.GetById((await _userRepository.GetByGuid(user.Id)).DepartmentId); List <User> users; if (roles.Contains("Administrator")) { users = (await _userRepository.GetAll()).ToList(); } else { users = _userRepository.GetUsersForDepartment(await _departmentRepository.GetById(department.Id)).ToList(); } foreach (var x in users) { x.Department = await _departmentRepository.GetById(x.DepartmentId); } var viewModels = _mapper.ConvertToViewModels(users); foreach (var vm in viewModels) { var dept = await _departmentRepository.GetById(vm.DepartmentId); if (dept != null) { vm.DepartmentName = dept.Name; } else { vm.DepartmentName = "N/A"; } } return(View(viewModels)); }