/** * @param Course $course */ public function addCourse(Course $course) { if ($course->getWeek() == 'A') { $this->courses['A'] = $course; } elseif ($course->getWeek() == 'B') { $this->courses['B'] = $course; } }
/** * @param User $user * @return Course[] */ public function getUserNextCourses(User $user) { /** @var Course[] $todayCourses */ $todayCourses = $this->createQueryBuilder('c')->where('c.user = :user')->andWhere('c.day = :day')->orderBy('c.start', 'ASC')->setParameter('user', $user->getId())->setParameter('day', Course::getTodayConstant())->getQuery()->getResult(); $nextCourses = []; foreach ($todayCourses as $course) { if ($course->getStartAsInt() >= (int) date('Hi') - 15) { $nextCourses[$course->getStart()][] = $course; } } return array_slice($nextCourses, 0, 5); }
/** * @Route("/schedule/course/{id}", name="schedule_course") * @Template() */ public function courseAction(Course $course) { if (!$this->getUserLayer()->isStudent()) { return $this->createAccessDeniedResponse(); } /** @var $em EntityManager */ $em = $this->getDoctrine()->getManager(); $students = $em->createQueryBuilder()->select('c, u')->from('EtuUserBundle:Course', 'c')->leftJoin('c.user', 'u')->where('c.uv = :uv')->andWhere('c.start = :start')->andWhere('c.end = :end')->andWhere('c.week = :week')->andWhere('c.room = :room')->setParameter('uv', $course->getUv())->setParameter('start', $course->getStart())->setParameter('end', $course->getEnd())->setParameter('week', $course->getWeek())->setParameter('room', $course->getRoom())->orderBy('u.lastName', 'ASC')->getQuery()->getResult(); return array('course' => $course, 'students' => $students); }
/** * @param Course $course * @return int */ public static function getBlockSize(Course $course) { $partsStart = explode(':', $course->getStart()); $partsEnd = explode(':', $course->getEnd()); $hours = (int) $partsEnd[0] - (int) $partsStart[0]; $minutes = (int) $partsEnd[1] - (int) $partsStart[1]; $size = $hours * 2; if ($minutes == 30) { $size++; } elseif ($minutes == -30) { $size--; } return $size; }
/** * @param Course $course * @return array */ private function getData(Course $course) { $start = explode(':', $course->getStart()); $end = explode(':', $course->getEnd()); return ['day' => $course->getDay(), 'start' => ['hour' => (int) $start[0], 'minute' => (int) $start[1]], 'end' => ['hour' => (int) $end[0], 'minute' => (int) $end[1]], 'week' => $course->getWeek(), 'uv' => $course->getUv(), 'type' => $course->getType(), 'room' => $course->getRoom()]; }