/** * Get the last acquired skill by a user on course and/or session * @param User $user The user * @param Course $course The course * @param Session $session The session * @return Skill */ public function getLastByUser(User $user, Course $course = null, Session $session = null) { $qb = $this->createQueryBuilder('s'); $qb->innerJoin('ChamiloCoreBundle:SkillRelUser', 'su', Join::WITH, $qb->expr()->eq('s', 'su.skill'))->where($qb->expr()->eq('su.user', $user->getId())); if ($course) { $qb->andWhere($qb->expr()->eq('su.course', $course->getId())); } if ($session) { $qb->andWhere($qb->expr()->eq('su.session', $session->getId())); } $qb->setMaxResults(1)->orderBy('su.id', 'DESC'); return $qb->getQuery()->getOneOrNullResult(); }
/** * Get session's courses ordered by position in session_rel_course * @param Session $session The session * * @return \Doctrine\ORM\QueryBuilder */ public function getCoursesOrderedByPosition(Session $session) { $queryBuilder = $this->createQueryBuilder('s'); $queryBuilder->select('DISTINCT c ')->innerJoin('s.courses', 'src')->innerJoin('ChamiloCoreBundle:Course', 'c', Join::WITH, 'src.course = c.id')->where($queryBuilder->expr()->eq('s.id', $session->getId()))->orderBy('src.position'); return $queryBuilder->getQuery()->getResult(); }
/** * Get the coaches for a course within a session * @param Session $session The session * @param Course $course The course * @return \Doctrine\ORM\QueryBuilder */ public function getCoachesForSessionCourse(Session $session, Course $course) { $queryBuilder = $this->createQueryBuilder('u'); $queryBuilder->select('u')->innerJoin('ChamiloCoreBundle:SessionRelCourseRelUser', 'scu', Join::WITH, 'scu.user = u')->where($queryBuilder->expr()->andX($queryBuilder->expr()->eq('scu.session', $session->getId()), $queryBuilder->expr()->eq('scu.course', $course->getId()), $queryBuilder->expr()->eq('scu.status', SessionRelCourseRelUser::STATUS_COURSE_COACH))); return $queryBuilder->getQuery()->getResult(); }
/** * @param Session $session * @return $this */ public function setCurrentSession(Session $session) { // If the session is registered in the course session list. if ($this->getSessions()->contains($session->getId())) { $this->currentSession = $session; } return $this; }
/** * Get the user status for the session * @param int $userId The user ID * @param \Chamilo\CoreBundle\Entity\Session $session The session * @return string */ private function getUserStatusForSession($userId, \Chamilo\CoreBundle\Entity\Session $session) { if (empty($userId)) { return 'NO'; } $entityManager = Database::getManager(); $scuRepo = $entityManager->getRepository('ChamiloCoreBundle:SessionRelCourseRelUser'); $buySaleTable = Database::get_main_table(self::TABLE_SALE); // Check if user bought the course $sale = Database::select('COUNT(1) as qty', $buySaleTable, ['where' => ['user_id = ? AND product_type = ? AND product_id = ? AND status = ?' => [$userId, self::PRODUCT_TYPE_SESSION, $session->getId(), self::SALE_STATUS_PENDING]]], 'first'); if ($sale['qty'] > 0) { return "TMP"; } // Check if user is already subscribe to session $userSubscription = $scuRepo->findBy(['session' => $session, 'user' => $userId]); if (!empty($userSubscription)) { return 'YES'; } return 'NO'; }
/** * @param Session $session * @return $this */ public function setCurrentSession(Session $session) { // If the session is registered in the course session list. /*if ($this->getSessions()->contains($session->getId())) { $this->currentSession = $session; }*/ $list = $this->getSessions(); /** @var SessionRelCourse $item */ foreach ($list as $item) { if ($item->getSession()->getId() == $session->getId()) { $this->currentSession = $session; break; } } return $this; }