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