public function findByIdWithClassroom($teacherId, WebService $studentWebService) { /** @var TeacherEntity $teacher */ $teacher = $this->findById($teacherId); if (!$teacher->isValid()) { return $teacher; } if ($teacher->hasStudents()) { return $teacher; } /** @var Response $response */ /** @var Client|WebService $studentWebService */ $response = $studentWebService->get('/api/student', array('query' => array('teacher_id' => $teacherId))); $teacher->setStudents($studentWebService->getData($response)); $key = $this->cache->createKey($teacherId); $this->cache->set($key, $teacher); return $teacher; }
/** * @param ServerRequestInterface $request * @param ResponseInterface $response * @param callable|null $next * @return JsonResponse */ public function getList(ServerRequestInterface $request, ResponseInterface $response, callable $next = null) { $params = $request->getQueryParams(); $teacherId = $params['teacher_id'] ?: null; /** @var WebServiceResponse $result */ $result = $this->classroomWebService->get('/api/teacher/classroom/' . $teacherId); $classroom = $this->classroomWebService->getData($result); $studentIds = array(); foreach ($classroom as $data) { if (isset($data['student_id'])) { $studentIds[] = $data['student_id']; } } $in = new In('id', $studentIds); $collection = $this->studentService->findAll(array($in)); $result = array(); foreach ($collection as $student) { /** @var StudentEntity $student */ $result[] = array('id' => $student->getId(), 'first_name' => $student->getFirstName(), 'last_name' => $student->getLastName(), 'earned_stars' => $student->getEarnedStarts(), 'email' => $student->getEmail(), 'added_at' => $student->getAddedAt(), 'last_modified' => $student->getLastModified(), 'icon' => $student->getUserIcon()); } return new JsonResponse($result); }