예제 #1
0
 /**
  * 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();
 }
예제 #2
0
 /**
  * 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();
 }
예제 #3
0
 /**
  * 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();
 }
예제 #4
0
 /**
  * @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';
 }
예제 #6
0
 /**
  * @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;
 }