public async Task <GetSubordinateTopicTreeOperationResponse> Execute(GetPartialSubordinateTopicTreeOperationRequest request) { var topics = await _topicRepository.GetRootTopics(); var teamTree = await _authorizationContext.GetTeamTree(); var manager = await _authorizationContext.CurrentEmployee(); if (teamTree == null) { throw new EmployeeDoesNotManageAnyTeamException(manager.Id); } var employees = teamTree.GetAllEmployees(); if (request.EmployeeIds.Any()) { employees = employees .Where(employee => request.EmployeeIds.Contains(employee.Id)) .ToList(); } return(new GetSubordinateTopicTreeOperationResponse { Roots = topics .Select(topic => MapToResponse(topic, employees)) .ToList() }); }
public async Task <GetSubordinateTopicTreeOperationResponse> Execute(GetSpecificTeamTopicTreeOperationRequest request) { var manager = await _authorizationContext.GetEmployeeIfAuthorizedFor(request.EmployeeId); if (manager == null) { throw new ApplicationException($"Not authorized for '{request.EmployeeId}'"); } var team = await _teamRepository.GetByManagerIdAsync(manager.Id); if (team == null) { throw new EmployeeDoesNotManageAnyTeamException(manager.Id); } var getPartialTreeRequest = new GetPartialSubordinateTopicTreeOperationRequest { EmployeeIds = team.Employees .Select(employee => employee.Id) .Concat(new [] { manager.Id }) .ToList() }; return(await _getPartialSubordinateTopicTreeOperation.Execute(getPartialTreeRequest)); }
public async Task <GetSubordinateTopicTreeOperationResponse> Execute() { var request = new GetPartialSubordinateTopicTreeOperationRequest { EmployeeIds = new List <Guid>() }; return(await _getPartialSubordinateTopicTreeOperation.Execute(request)); }