EducationStudentRepository.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. namespace AppBundle\Entity\Education\Repository;
  3. use AppBundle\Entity\Education\EducationStudent;
  4. use Doctrine\ORM\EntityRepository;
  5. /**
  6. * Description of EducationStudentRepository
  7. *
  8. */
  9. class EducationStudentRepository extends EntityRepository
  10. {
  11. public function findTeacherByEducationWithoutDateFilter($educationStudent, $education, $teacher)
  12. {
  13. $filter = $this->_em->getFilters()->enable('activity_year');
  14. $filter->setParameter('disabledFilter', 1);
  15. $queryBuilder =
  16. $this->createQueryBuilder('a');
  17. $queryBuilder->innerJoin('a.educationCurriculum','eduC')
  18. ->addSelect('eduC')
  19. ->andWhere('eduC.education=:education')
  20. ->innerJoin('a.teachers','tea')
  21. ->addSelect('tea')
  22. ->andWhere('tea.id = :teacher')
  23. ->andWhere('a.id != :educationStudent')
  24. ->setParameter('education', $education)
  25. ->setParameter('educationStudent', $educationStudent)
  26. ->setParameter('teacher', $teacher)
  27. ;
  28. $query = $queryBuilder->getQuery();
  29. $results = $query->getResult();
  30. $filter->setParameter('disabledFilter', 0);
  31. return $results;
  32. }
  33. /**
  34. * @param EducationStudent $educationStudent
  35. * @return mixed
  36. * @throws \Doctrine\ORM\NonUniqueResultException
  37. */
  38. public function findEducationStudentByYear($educationStudent, $year)
  39. {
  40. $queryBuilder = $this->createQueryBuilder('education_student');
  41. $queryBuilder->innerJoin('education_student.educationCurriculum','eduC')
  42. ->andWhere('eduC.education=:education')
  43. ->andWhere('education_student.access=:access')
  44. ->andWhere('education_student.startYear=:year')
  45. ->setParameter('education', $educationStudent->getEducationCurriculum()->getEducation())
  46. ->setParameter('access', $educationStudent->getAccess())
  47. ->setParameter('year', $year)
  48. ;
  49. $query = $queryBuilder->getQuery();
  50. $results = $query->getResult();
  51. if(count($results) > 0) return $results[0];
  52. else return null;
  53. }
  54. /**
  55. * @param $startYear
  56. * @param $organizationId
  57. * @return array|int|string
  58. */
  59. public function getEducationStudentByStartYearAndORganization($startYear, $organizationId){
  60. $filter = $this->_em->getFilters()->enable('activity_year');
  61. $filter->setParameter('disabledFilter', 1);
  62. $queryBuilder = $this->createQueryBuilder('education_student');
  63. $queryBuilder
  64. ->innerJoin('education_student.access','access')
  65. ->innerJoin('access.organization','organization')
  66. ->andWhere('organization.id=:organization')
  67. ->andWhere('education_student.startYear=:year')
  68. ->setParameter('organization', $organizationId)
  69. ->setParameter('year', $startYear)
  70. ;
  71. $filter->setParameter('disabledFilter', 0);
  72. return $queryBuilder->getQuery()->getResult();
  73. }
  74. /**
  75. * @param $pastYear
  76. * @param $currentYear
  77. * @param $eucationCurriculum
  78. * @param $organization
  79. * @param null $accessesToExclude
  80. * @return array|int|string
  81. */
  82. public function getEducationStudentByEducationCurriculumNextYear($pastYear,$currentYear,$eucationCurriculum,$organization, $accessesToExclude = null){
  83. $filter = $this->_em->getFilters()->enable('activity_year');
  84. $filter->setParameter('disabledFilter', 1);
  85. $queryBuilderNotIn = $this->createQueryBuilder('es2');
  86. $queryBuilderNotIn
  87. ->select('esly.id')
  88. ->innerJoin('es2.access', 'acc2')
  89. ->innerJoin('es2.educationStudentLastYear', 'esly')
  90. ->andWhere('acc2.id=access.id')
  91. ->andWhere('es2.startYear=:currentYear');
  92. $queryBuilder = $this->createQueryBuilder('education_student');
  93. $queryBuilder
  94. ->innerJoin('education_student.access','access')
  95. ->innerJoin('access.organization','organization')
  96. ->innerJoin('education_student.educationCurriculum','educationCurriculum')
  97. ->andWhere('educationCurriculum.id=:educationCurriculum')
  98. ->andWhere('organization.id=:organization')
  99. ->andWhere(
  100. $queryBuilder->expr()->orX(
  101. $queryBuilder->expr()->andX(
  102. $queryBuilder->expr()->eq('education_student.startYear', ':currentYear')
  103. ),
  104. $queryBuilder->expr()->andX(
  105. $queryBuilder->expr()->eq('education_student.startYear', ':pastYear'),
  106. $queryBuilder->expr()->eq('education_student.registeredFollowingYear', ':yes'),
  107. $queryBuilder->expr()->notIn('education_student.id', $queryBuilderNotIn->getDQL())
  108. )
  109. )
  110. )
  111. ->setParameter(':pastYear', $pastYear)
  112. ->setParameter(':currentYear', $currentYear)
  113. ->setParameter(':yes', 1)
  114. ->setParameter('organization', $organization)
  115. ->setParameter('educationCurriculum', $eucationCurriculum)
  116. ->groupBy('access.id')
  117. ;
  118. if(!empty($accessesToExclude)){
  119. $queryBuilder->andWhere($queryBuilder->expr()->notIn('access.id', $accessesToExclude));
  120. }
  121. $result = $queryBuilder->getQuery()->getResult();
  122. $filter->setParameter('disabledFilter', 0);
  123. return $result;
  124. }
  125. /**
  126. * @param $currentYear
  127. * @param $eucationCurriculum
  128. * @param $organization
  129. * @param null $accessesToExclude
  130. * @return array|int|string
  131. */
  132. public function getEducationStudentByEducationCurriculumCurrentYear($currentYear,$eucationCurriculum,$organization, $accessesToExclude = null){
  133. $queryBuilder = $this->createQueryBuilder('education_student');
  134. $queryBuilder
  135. ->innerJoin('education_student.access','access')
  136. ->innerJoin('access.organizationFunction', 'organization_function')
  137. ->innerJoin('access.organization','organization')
  138. ->innerJoin('education_student.educationCurriculum','educationCurriculum')
  139. ->andWhere('educationCurriculum.id=:educationCurriculum')
  140. ->andWhere('organization.id=:organization')
  141. ->andWhere('education_student.startYear=:currentYear')
  142. ->setParameter(':currentYear', $currentYear)
  143. ->setParameter('organization', $organization)
  144. ->setParameter('educationCurriculum', $eucationCurriculum);
  145. if(!empty($accessesToExclude)){
  146. $queryBuilder->andWhere($queryBuilder->expr()->notIn('access.id', $accessesToExclude));
  147. }
  148. $queryBuilder->groupBy('access.id');
  149. return $queryBuilder->getQuery()->getResult();
  150. }
  151. }
  152. ?>