public async Task <EnsureManagerHasTeamResponse> Execute(EnsureManagerHasTeamRequest request)
        {
            var team = await _teamRepository.GetByManagerIdAsync(request.ManagerId);

            if (team == null)
            {
                var manager = await _employeeRepository.GetByIdAsync(request.ManagerId);

                if (manager == null)
                {
                    throw new ManagerNotFoundException(request.ManagerId);
                }

                team = new Domain.Entity.LearningCalendar.Team
                {
                    Manager   = manager,
                    Employees = null
                };

                await _teamRepository.UpdateAsync(team);
            }

            return(new EnsureManagerHasTeamResponse
            {
                TeamId = team.Id,
                EmployeeIds = team.Employees?.Select(employee => employee.Id).ToList() ?? new List <Guid>(),
                ManagerId = team.Manager.Id
            });
        }
Пример #2
0
        private GetTopicDetailsOperationResponse.Team MapTeam(Domain.Entity.LearningCalendar.Team team, Domain.Entity.LearningCalendar.Topic topic)
        {
            var employees = team.Employees
                            .Concat(new[] { team.Manager });

            var status = _employeeCollectionTopicProgressStatusStrategy.GetStatus(employees, topic);

            return(new GetTopicDetailsOperationResponse.Team
            {
                TeamId = team.Id,
                ManagerId = team.Manager.Id,
                ManagerFullName = team.Manager.FullName,
                EmployeeCount = status.PlannedEmployees.Count + status.LearnedEmployees.Count + status.OtherEmployees.Count,
                LearnedCount = status.LearnedEmployees.Count,
                PlannedCount = status.PlannedEmployees.Count,
                ProgressStatus = ProgressStatusMapper.MapStatus(status.TotalStatus)
            });
        }