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);
        }