public async Task <GetAllSubordinateEmployeesOperationResponse> Execute()
        {
            var teamTree = await _authorizationContext.GetTeamTree();

            var employees = teamTree
                            .Flatten(tree => tree.Employees.Select(employee => employee.ManagedTeam))
                            .SelectMany(team => team.Employees)
                            .ToList();

            var mappedEmployees = employees
                                  .Select(employee => new GetAllSubordinateEmployeesOperationResponse.Employee
            {
                Id       = employee.Id,
                FullName = employee.FullName,
                ManagedEmployeesCount = employee.ManagedTeam?.Employees.Count ?? 0,
                ManagerId             = employee.Team.Manager.Id,
                ManagerFullName       = employee.Team.Manager.FullName,
                SubordinateIds        = employee.ManagedTeam?.GetAllEmployees()
                                        .Select(subordinate => subordinate.Id)
                                        .ToList() ?? new List <Guid>()
            })
                                  .ToList();

            var response = new GetAllSubordinateEmployeesOperationResponse
            {
                Employees = mappedEmployees
            };

            return(response);
        }
 public EmployeeListModel(GetAllSubordinateEmployeesOperationResponse response)
 {
     Employees = response.Employees
                 .Select(employee => new Employee
     {
         Id                    = employee.Id,
         FullName              = employee.FullName,
         ManagerId             = employee.ManagerId,
         ManagerFullName       = employee.ManagerFullName,
         ManagedEmployeesCount = employee.ManagedEmployeesCount,
         SubordinateIds        = employee.SubordinateIds
     })
                 .ToList();
 }