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