Browse Source

Create session repository - refs BT#9884 #TMI

Angel Fernando Quiroz Campos 9 years ago
parent
commit
3ce0f0e6dd

+ 48 - 0
src/Chamilo/CoreBundle/Entity/Repository/SessionRepository.php

@@ -0,0 +1,48 @@
+<?php
+/* For licensing terms, see /license.txt */
+namespace Chamilo\CoreBundle\Entity\Repository;
+
+use Doctrine\ORM\EntityRepository;
+use Chamilo\CoreBundle\Entity\Session;
+use \Doctrine\ORM\Query\Expr\Join;
+
+/**
+ * SessionRepository
+ *
+ * @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
+ */
+class SessionRepository extends EntityRepository
+{
+
+    /**
+     * 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('c')
+            ->innerJoin('s.courses', 'session_courses')
+            ->innerJoin(
+                'ChamiloCoreBundle:SessionRelCourse',
+                'src',
+                Join::WITH,
+                'session_courses.course = src.course'
+            )
+            ->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();
+    }
+
+}

+ 1 - 1
src/Chamilo/CoreBundle/Entity/Session.php

@@ -22,7 +22,7 @@ use Doctrine\ORM\Mapping as ORM;
  *          @ORM\Index(name="idx_id_session_admin_id", columns={"session_admin_id"})
  *      }
  * )
- * @ORM\Entity
+ * @ORM\Entity(repositoryClass="Chamilo\CoreBundle\Entity\Repository\SessionRepository")
  */
 class Session
 {