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

1.10.x
Angel Fernando Quiroz Campos 11 years ago
parent ed3149769c
commit bb7c061822
  1. 4
      main/session/about.php
  2. 34
      src/Chamilo/CoreBundle/Entity/Repository/SessionRepository.php
  3. 3
      src/Chamilo/CoreBundle/Entity/SessionRelCourseRelUser.php
  4. 32
      src/Chamilo/UserBundle/Entity/Repository/UserRepository.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) {

@ -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();
}
}

@ -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'

@ -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();
}
}

Loading…
Cancel
Save