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;
 }
Exemplo n.º 2
0
 /**
  * @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);
 }