public async Task <EmployeeRichViewModel> Handle(GetEmployeeRichQuery request, CancellationToken cancellationToken) { var employee = await EmployeeRepository.Get(request.Id.GetValueOrDefault(0)); var viewmodel = new EmployeeRichViewModel(); viewmodel.LoadFromDomain(employee); var vacationtypes = await Mediator.Send(new GetVacationTypesQuery()); viewmodel.VacationTypes = vacationtypes.ToList(); viewmodel.ApplyVacationDays(); var positions = await Mediator.Send(new GetPositionsQuery()); viewmodel.Positions = positions.ToList(); var departments = await Mediator.Send(new GetDepartmentsQuery()); viewmodel.Departments = departments.ToList(); var employeesvm = await Mediator.Send(new GetEmployeesQuery()); viewmodel.Employees = employeesvm.Where(item => item.Id != employee?.Id && item.ManagerId != employee?.Id).ToList(); var userroles = request.Id.GetValueOrDefault(0) > 0 ? await UserManager.GetRolesAsync(await UserManager.FindByIdAsync(request.Id.ToString())) : new List <string>(); var roles = RoleManager.Roles.ToList(); var rolesvm = new List <RoleViewModel>(); foreach (var item in roles) { var rolevm = new RoleViewModel(); rolevm.LoadFromDomain(item, userroles); rolesvm.Add(rolevm); } viewmodel.Roles = rolesvm; return(viewmodel); }