ソースを参照

Fix get coaches for session course - refs BT#9889 #TMI

Angel Fernando Quiroz Campos 9 年 前
コミット
bb7c061822

+ 2 - 2
main/session/about.php

@@ -28,7 +28,7 @@ $entityManager = Database::getManager();
 $fieldsRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraField');
 $fieldValuesRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraFieldValues');
 $fieldTagsRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraFieldRelTag');
-$sessionsRepo = $entityManager->getRepository('ChamiloCoreBundle:Session');
+$userRepo = $entityManager->getRepository('ChamiloUserBundle:User');
 
 $videoUrlField = $fieldsRepo->findOneBy([
     'extraFieldType' => ExtraField::COURSE_FIELD_TYPE,
@@ -60,7 +60,7 @@ foreach ($sessionCourses as $sessionCourse) {
         $courseTags = $fieldTagsRepo->getTags($tagField, $sessionCourse->getId());
     }
 
-    $courseCoaches = $sessionsRepo->getCourseCoachesForCoach($session, $sessionCourse);
+    $courseCoaches = $userRepo->getCoachesForSessionCourse($session, $sessionCourse);
     $coachesData = [];
 
     foreach ($courseCoaches as $courseCoach) {

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

@@ -47,38 +47,4 @@ class SessionRepository extends EntityRepository
         return $queryBuilder->getQuery()->getResult();
     }
 
-    /**
-     * Get the coach for a course in session
-     * @param Session $session The session
-     * @param Course $course The course
-     * @return \Doctrine\ORM\QueryBuilder
-     */
-    public function getCourseCoachesForCoach(Session $session, Course $course)
-    {
-        $queryBuilder = $this->createQueryBuilder('s');
-
-        $queryBuilder->select('u')
-            ->innerJoin('s.courses', 'session_courses')
-            ->innerJoin(
-                'ChamiloCoreBundle:SessionRelCourseRelUser',
-                'scu',
-                Join::WITH,
-                'session_courses.course = scu.course'
-            )
-            ->innerJoin(
-                'ChamiloUserBundle:User',
-                'u',
-                Join::WITH,
-                'scu.user = u.id'
-            )
-            ->where(
-                $queryBuilder->expr()->andX(
-                    $queryBuilder->expr()->eq('s.id', $session->getId()),
-                    $queryBuilder->expr()->eq('scu.course', $course->getId())
-                )
-            );
-
-        return $queryBuilder->getQuery()->getResult();
-    }
-
 }

+ 3 - 0
src/Chamilo/CoreBundle/Entity/SessionRelCourseRelUser.php

@@ -20,6 +20,9 @@ use Doctrine\ORM\Mapping as ORM;
  */
 class SessionRelCourseRelUser
 {
+    const STATUS_STUDENT = 0;
+    const STATUS_COURSE_COACH = 2;
+
     public $statusList = array(
         0 => 'student',
         2 => 'course_coach'

+ 32 - 0
src/Chamilo/UserBundle/Entity/Repository/UserRepository.php

@@ -5,6 +5,10 @@ namespace Chamilo\UserBundle\Entity\Repository;
 
 use Doctrine\ORM\EntityRepository;
 use \Doctrine\Common\Collections\Criteria;
+use \Chamilo\CoreBundle\Entity\Session;
+use \Chamilo\CoreBundle\Entity\Course;
+use \Doctrine\ORM\Query\Expr\Join;
+use \Chamilo\CoreBundle\Entity\SessionRelCourseRelUser;
 
 //use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
 //use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
@@ -142,4 +146,32 @@ class UserRepository extends EntityRepository
         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();
+    }
+
 }