Beispiel #1
0
        // 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));
        }