src/Controller/School/SchoolAverageController.php line 422

Open in your IDE?
  1. <?php
  2. namespace App\Controller\School;
  3. use Knp\Snappy\Pdf;
  4. use App\Entity\User;
  5. use DateTimeImmutable;
  6. use App\Entity\SchoolAverage;
  7. use App\Entity\SchoolTeacher;
  8. use App\Entity\SchoolYearPeriode;
  9. use App\Repository\UserRepository;
  10. use App\Entity\SchoolStudentAverage;
  11. use App\Form\School\SchoolAverageType;
  12. use App\Repository\SchoolMatterRepository;
  13. use App\Repository\SchoolAverageRepository;
  14. use App\Repository\SchoolTeacherRepository;
  15. use Knp\Component\Pager\PaginatorInterface;
  16. use App\Entity\SchoolTeacherMatterClassroom;
  17. use App\Form\School\SchoolStudentAverageType;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use App\Repository\SettingClassroomRepository;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use App\Entity\RegistrationStudentRegistration;
  22. use App\Repository\SchoolYearPeriodeRepository;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Doctrine\Common\Collections\ArrayCollection;
  25. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  26. use App\Repository\SchoolStudentAverageRepository;
  27. use App\Repository\SchoolTeacherMatterClassroomRepository;
  28. use App\Repository\RegistrationStudentRegistrationRepository;
  29. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  30. /**
  31.  * @Route("/school/average")
  32.  */
  33. class SchoolAverageController extends AbstractController
  34. {
  35.     /**
  36.      * @Route("/index", name="school_average_index", methods={"GET"})
  37.      */
  38.     public function index(
  39.         Request $request
  40.         PaginatorInterface $paginator
  41.         SchoolAverageRepository $schoolAverageRepository
  42.         SchoolTeacherRepository $schoolTeacherRepository,
  43.         SchoolYearPeriodeRepository $schoolYearPeriodeRepository
  44.         SchoolMatterRepository $schoolMatterRepository
  45.         SettingClassroomRepository $settingClassroomRepository,
  46.         UserRepository $userRepository
  47.         ): Response
  48.     {
  49.         /**@var User $user */
  50.         $user $this->getUser();
  51.         $schoolYear $user->getSchoolYear();
  52.         $establishment $this->getUser()->getEstablishment();
  53.         $schoolTeacher $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear'is_disabled' => 0], []);
  54.         $_schoolTeacher $schoolTeacherRepository->findOneBy(['id' => $request->get('teacher')], []);
  55.         $schoolYearPeriode $schoolYearPeriodeRepository->findOneBy(['id' => $request->get('school_year_periode')], []);
  56.         $schoolMatter $schoolMatterRepository->findOneBy(['id' => $request->get('matter')], []);
  57.         $settingClassroom $settingClassroomRepository->findOneBy(['id' => $request->get('classroom')], []);
  58.         $query $schoolAverageRepository->createQueryBuilder('entity')
  59.             ->innerJoin('entity.classroom''classroom')
  60.             ->addSelect('classroom')
  61.             ->andWhere('classroom.establishment = :establishment')
  62.             ->setParameter('establishment'$establishment)
  63.             ->andWhere('entity.schoolYear = :schoolYear')
  64.             ->setParameter('schoolYear'$schoolYear);
  65.             if ($_schoolTeacher != null) {
  66.                 $query $query
  67.                 ->andWhere('entity.schoolTeacher = :schoolTeacher')
  68.                 ->setParameter('schoolTeacher'$_schoolTeacher);
  69.             }
  70.             if ($schoolYearPeriode != null) {
  71.                 $query $query
  72.                 ->andWhere('entity.schoolYearPeriode = :schoolYearPeriode')
  73.                 ->setParameter('schoolYearPeriode'$schoolYearPeriode);
  74.             }
  75.             if ($schoolMatter != null) {
  76.                 $query $query
  77.                 ->andWhere('entity.matter = :matter')
  78.                 ->setParameter('matter'$schoolMatter);
  79.             }
  80.             if ($settingClassroom != null) {
  81.                 $query $query
  82.                 ->andWhere('entity.classroom = :classroom')
  83.                 ->setParameter('classroom'$settingClassroom);
  84.             }
  85.             $query $query
  86.             ->orderBy('entity.id''DESC')
  87.             ->getQuery();
  88.         $school_averages $paginator->paginate(
  89.             $query,
  90.             $request->query->getInt('page'1),
  91.             1000
  92.         );
  93.         if (null != $schoolTeacher && !$this->isGranted("ROLE_ADMIN")) {
  94.             $query2 $schoolAverageRepository->createQueryBuilder('entity')
  95.             ->innerJoin('entity.classroom''classroom')
  96.             ->addSelect('classroom')
  97.             ->andWhere('classroom.establishment = :establishment')
  98.             ->setParameter('establishment'$establishment)
  99.             ->andWhere('entity.schoolYear = :schoolYear')
  100.             ->setParameter('schoolYear'$schoolYear);
  101.             if ($_schoolTeacher != null) {
  102.                 $query2 $query2
  103.                 ->andWhere('entity.schoolTeacher = :schoolTeacher')
  104.                 ->setParameter('schoolTeacher'$_schoolTeacher);
  105.             }
  106.             if ($schoolYearPeriode != null) {
  107.                 $query2 $query2
  108.                 ->andWhere('entity.schoolYearPeriode = :schoolYearPeriode')
  109.                 ->setParameter('schoolYearPeriode'$schoolYearPeriode);
  110.             }
  111.             if ($schoolMatter != null) {
  112.                 $query2 $query2
  113.                 ->andWhere('entity.matter = :matter')
  114.                 ->setParameter('matter'$schoolMatter);
  115.             }
  116.             if ($settingClassroom != null) {
  117.                 $query2 $query2
  118.                 ->andWhere('entity.classroom = :classroom')
  119.                 ->setParameter('classroom'$settingClassroom);
  120.             }
  121.             $query2 $query2
  122.             ->andWhere('entity.schoolTeacher = :schoolTeacher')
  123.             ->setParameter('schoolTeacher'$schoolTeacher)
  124.             ->orderBy('entity.id''DESC')
  125.             ->getQuery();
  126.             $school_averages $paginator->paginate(
  127.                 $query2,
  128.                 $request->query->getInt('page'1),
  129.                 1000
  130.             ); 
  131.         }
  132.         return $this->render('school/school_average/index.html.twig', [
  133.             'school_averages' => $school_averages,
  134.             'schoolTeacher' => $schoolTeacher,
  135.             'school_year_periodes' => $schoolYearPeriodeRepository->findBy(['establishment' => $user->getEstablishment(), 'schoolYear' => $schoolYear], ['begin_at' => 'ASC']),
  136.             'setting_slassrooms' => $settingClassroomRepository->findBy(['establishment' => $user->getEstablishment(), 'schoolYear' => $schoolYear], ['label' => 'ASC']),
  137.             'school_matters' => $schoolMatterRepository->findBy(['establishment' => $user->getEstablishment(), 'is_test_matter' => 0], ['label' => 'ASC']),
  138.             'school_teachers' => $schoolTeacherRepository->findBy(['establishment' => $user->getEstablishment(), 'schoolYear' => $schoolYear], ['id' => 'DESC']),
  139.             'schoolYearPeriode' => $schoolYearPeriode,
  140.             'settingClassroom' => $settingClassroom,
  141.             'schoolMatter' => $schoolMatter,
  142.             '_schoolTeacher' => $_schoolTeacher,
  143.             'userRepository' => $userRepository,
  144.         ]);
  145.     }
  146.     /**
  147.      * @Route("/new", name="school_average_new", methods={"GET","POST"})
  148.      */
  149.     public function new(Request $requestSchoolYearPeriodeRepository $schoolYearPeriodeRepositorySchoolTeacherRepository $schoolTeacherRepositorySchoolAverageRepository $schoolAverageRepositorySchoolTeacherMatterClassroomRepository $schoolTeacherMatterClassroomRepository): Response
  150.     {
  151.         /**@var User $user */
  152.         $user $this->getUser();
  153.         $schoolYear $user->getSchoolYear();
  154.         $user $this->getUser();
  155.         $establishment $user->getEstablishment();
  156.         $_date = new DateTimeImmutable();
  157.         $schoolYearPeriodes $schoolYearPeriodeRepository->createQueryBuilder('entity')
  158.         ->andWhere('entity.establishment = :establishment')
  159.         ->setParameter('establishment'$establishment)
  160.         ->andWhere('entity.schoolYear = :schoolYear')
  161.         ->setParameter('schoolYear'$schoolYear)
  162.         ->andWhere('entity.is_average_closed = :is_average_closed')
  163.         ->setParameter('is_average_closed'0)
  164.         ->getQuery()
  165.         ->getResult();
  166.         $schoolTeacher $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear'is_disabled' => 0], []);
  167.         $schoolTeachers = new ArrayCollection();
  168.         if (null != $schoolTeacher) {
  169.             $schoolTeachers->add($schoolTeacher);
  170.         }else {
  171.             $schoolTeachers $schoolTeacherRepository->createQueryBuilder('entity')
  172.     
  173.                 ->innerJoin('entity.establishment''establishment')
  174.                 ->addSelect('establishment')
  175.     
  176.                 ->andWhere('establishment.establishmentGroup = :establishmentGroup')
  177.                 ->setParameter('establishmentGroup'$establishment->getEstablishmentGroup())
  178.                 ->andWhere('entity.schoolYear = :schoolYear')
  179.                 ->setParameter('schoolYear'$schoolYear)
  180.     
  181.                 ->andWhere('entity.is_disabled = :is_disabled')
  182.                 ->setParameter('is_disabled'0)
  183.     
  184.                 ->orderBy('entity.id''DESC')
  185.                 ->getQuery()
  186.                 ->getResult();
  187.             //$schoolTeachers = $schoolTeacherRepository->findBy(['establishment' => $establishment], []);
  188.         }
  189.         if (!$this->isGranted("ROLE_OPERATEUR_SAISIE"$user)) {
  190.             if (null == $schoolTeacher) {
  191.                 $this->addFlash('warning'"Impossible: Vous devez êtes enseignant ou opérateur de saisie pour pouvoir créer des notes.");
  192.                 return $this->redirectToRoute('school_average_index');
  193.             }
  194.         }
  195.         $schoolTeacherMatterClassrooms = new ArrayCollection();
  196.         if (null == $schoolTeacher) {
  197.             if ($this->isGranted("ROLE_OPERATEUR_SAISIE"$user)) {
  198.                 $schoolTeacherMatterClassrooms $schoolTeacherMatterClassroomRepository->findBy(['establishment' => $establishment], []);
  199.             }
  200.         }else {
  201.             $schoolTeacherMatterClassrooms $schoolTeacher->getSchoolTeacherMatterClassrooms();
  202.         }
  203.         $schoolAverage = new SchoolAverage();
  204.         $form $this->createForm(SchoolAverageType::class, $schoolAverage)
  205.         ->add('schoolTeacherMatterClassroom'EntityType::class, [
  206.             'class' => SchoolTeacherMatterClassroom::class,
  207.             'choices' => $schoolTeacherMatterClassrooms,
  208.             'required' => true
  209.         ])
  210.         ->add('schoolTeacher'EntityType::class, [
  211.             'class' => SchoolTeacher::class,
  212.             'choices' => $schoolTeachers,
  213.             'required' => true
  214.         ])
  215.         ->add('schoolYearPeriode'EntityType::class, [
  216.             'class' => SchoolYearPeriode::class,
  217.             'choices' => $schoolYearPeriodes,
  218.             'required' => true
  219.         ]);
  220.         $form->handleRequest($request);
  221.         if ($form->isSubmitted() && $form->isValid()) {
  222.             $entityManager $this->getDoctrine()->getManager();
  223.             $schoolAverage->setEstablishment($establishment);
  224.             $schoolAverage->setSchoolYear($schoolYear);
  225.             $schoolAverage->setClassroom($schoolAverage->getSchoolTeacherMatterClassroom()->getClassroom());
  226.             $schoolAverage->setMatter($schoolAverage->getSchoolTeacherMatterClassroom()->getMatter());
  227.             //$schoolAverage->setNoteOn($schoolAverage->getMatter()->getNoteOnReportCard());
  228.             $schoolAverage->setLabel('Note '.(count($schoolAverageRepository->findBy(['matter' => $schoolAverage->getMatter(), 'classroom' => $schoolAverage->getClassroom(), 'schoolYearPeriode' => $schoolAverage->getSchoolYearPeriode()], [])) + 1));
  229.             $schoolAverage->setCode(rand(100000999999).$schoolAverage->getSchoolYearPeriode()->getId().$schoolAverage->getMatter()->getId().$schoolAverage->getClassroom()->getId());
  230.             $registrationStudentRegistrations $schoolAverage->getClassroom()->getRegistereds($schoolYear);
  231.             if($schoolAverage->getMatter()->getLv2() == 'AUCUN') {
  232.                 if($schoolAverage->getMatter()->getArtOrMusique() == null || $schoolAverage->getMatter()->getArtOrMusique() == '') {
  233.                 /* --- pas une langue vivante 2 --- */
  234.                     foreach ($registrationStudentRegistrations as $key => $registrationStudentRegistration) {
  235.                         $schoolStudentAverage = new SchoolStudentAverage();
  236.                         $schoolStudentAverage->setEstablishment($establishment);
  237.                         $schoolStudentAverage->setSchoolYear($schoolYear);
  238.                         $schoolStudentAverage->setSchoolAverage($schoolAverage);
  239.                         $schoolStudentAverage->setRegistrationStudentRegistration($registrationStudentRegistration);
  240.                         $schoolStudentAverage->setCode('sa-'.rand(100000999999).$schoolAverage->getMatter()->getId().$registrationStudentRegistration->getId().$schoolAverage->getSchoolYearPeriode()->getId());
  241.                         $schoolStudentAverage->setCoefficient(1);
  242.                         $schoolStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  243.                         $schoolStudentAverage->setNote(999);
  244.                         $schoolStudentAverage->setMatter($schoolAverage->getMatter());
  245.                         $schoolStudentAverage->setIsMatterConduct($schoolAverage->getMatter()->getIsMatterConduct());
  246.                         $schoolStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  247.                         $countSubMatters 0;
  248.                         foreach ($schoolAverage->getMatter()->getSchoolSubMatters() as $key => $schoolSubMatter) {
  249.                             $schoolStudentAverage->setAsSubmatter(true);
  250.                             $countSubMatters++;
  251.                             $schoolSubStudentAverage = new SchoolStudentAverage();
  252.                             $schoolSubStudentAverage->setEstablishment($establishment);
  253.                             $schoolSubStudentAverage->setSchoolYear($schoolYear);
  254.                             $schoolSubStudentAverage->setSchoolAverage($schoolAverage);
  255.                             $schoolSubStudentAverage->setRegistrationStudentRegistration($registrationStudentRegistration);
  256.                             $schoolSubStudentAverage->setCode('sa-'.rand(100000999999).$schoolSubMatter->getId().$registrationStudentRegistration->getId().$schoolAverage->getSchoolYearPeriode()->getId());
  257.                             $schoolSubStudentAverage->setCoefficient(1);
  258.                             $schoolSubStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  259.                             $schoolSubStudentAverage->setNote(999);
  260.                             $schoolSubStudentAverage->setMatter($schoolAverage->getMatter());
  261.                             $schoolSubStudentAverage->setIsMatterConduct($schoolAverage->getMatter()->getIsMatterConduct());
  262.                             $schoolSubStudentAverage->setSubMatter($schoolSubMatter);
  263.                             $schoolSubStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  264.                             $entityManager->persist($schoolSubStudentAverage);
  265.                         }
  266.                         
  267.                         if ($countSubMatters <= 0) {
  268.                             $entityManager->persist($schoolStudentAverage);
  269.                         }
  270.                     }
  271.                 }else {
  272.                     foreach ($registrationStudentRegistrations as $key => $registrationStudentRegistration) {
  273.                         if ($registrationStudentRegistration->getStudent()->getArtOrMusique() == $schoolAverage->getMatter()->getArtOrMusique()) {
  274.                             $schoolStudentAverage = new SchoolStudentAverage();
  275.                             $schoolStudentAverage->setEstablishment($establishment);
  276.                             $schoolStudentAverage->setSchoolYear($schoolYear);
  277.                             $schoolStudentAverage->setSchoolAverage($schoolAverage);
  278.                             $schoolStudentAverage->setRegistrationStudentRegistration($registrationStudentRegistration);
  279.                             $schoolStudentAverage->setCode('sa-'.rand(100000999999).$schoolAverage->getMatter()->getId().$registrationStudentRegistration->getId().$schoolAverage->getSchoolYearPeriode()->getId());
  280.                             $schoolStudentAverage->setCoefficient(1);
  281.                             $schoolStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  282.                             $schoolStudentAverage->setNote(999);
  283.                             $schoolStudentAverage->setMatter($schoolAverage->getMatter());
  284.                             $schoolStudentAverage->setIsMatterConduct($schoolAverage->getMatter()->getIsMatterConduct());
  285.                             $schoolStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  286.                             $countSubMatters 0;
  287.                             foreach ($schoolAverage->getMatter()->getSchoolSubMatters() as $key => $schoolSubMatter) {
  288.                                 $schoolStudentAverage->setAsSubmatter(true);
  289.                                 $countSubMatters++;
  290.                                 $schoolSubStudentAverage = new SchoolStudentAverage();
  291.                                 $schoolSubStudentAverage->setEstablishment($establishment);
  292.                                 $schoolSubStudentAverage->setSchoolYear($schoolYear);
  293.                                 $schoolSubStudentAverage->setSchoolAverage($schoolAverage);
  294.                                 $schoolSubStudentAverage->setRegistrationStudentRegistration($registrationStudentRegistration);
  295.                                 $schoolSubStudentAverage->setCode('sa-'.rand(100000999999).$schoolSubMatter->getId().$registrationStudentRegistration->getId().$schoolAverage->getSchoolYearPeriode()->getId());
  296.                                 $schoolSubStudentAverage->setCoefficient(1);
  297.                                 $schoolSubStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  298.                                 $schoolSubStudentAverage->setNote(999);
  299.                                 $schoolSubStudentAverage->setMatter($schoolAverage->getMatter());
  300.                                 $schoolSubStudentAverage->setIsMatterConduct($schoolAverage->getMatter()->getIsMatterConduct());
  301.                                 $schoolSubStudentAverage->setSubMatter($schoolSubMatter);
  302.                                 $schoolSubStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  303.                                 $entityManager->persist($schoolSubStudentAverage);
  304.                             }
  305.                             
  306.                             if ($countSubMatters <= 0) {
  307.                                 $entityManager->persist($schoolStudentAverage);
  308.                             }
  309.                         }
  310.                     }
  311.                 }
  312.             }else {
  313.                 /* --- est une langue vivante 2 --- */
  314.                 foreach ($registrationStudentRegistrations as $key => $registrationStudentRegistration) {
  315.                     if (!$registrationStudentRegistration->getIsAbandonned()) {
  316.                         if ($registrationStudentRegistration->getStudent()->getLv2() == $schoolAverage->getMatter()->getLv2()) {
  317.                             $schoolStudentAverage = new SchoolStudentAverage();
  318.                             $schoolStudentAverage->setEstablishment($establishment);
  319.                             $schoolStudentAverage->setSchoolYear($schoolYear);
  320.                             $schoolStudentAverage->setSchoolAverage($schoolAverage);
  321.                             $schoolStudentAverage->setRegistrationStudentRegistration($registrationStudentRegistration);
  322.                             $schoolStudentAverage->setCode('sa-'.rand(100000999999).$schoolAverage->getMatter()->getId().$registrationStudentRegistration->getId().$schoolAverage->getSchoolYearPeriode()->getId());
  323.                             $schoolStudentAverage->setCoefficient(1);
  324.                             $schoolStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  325.                             $schoolStudentAverage->setNote(999);
  326.                             $schoolStudentAverage->setMatter($schoolAverage->getMatter());
  327.                             $schoolStudentAverage->setIsMatterConduct($schoolAverage->getMatter()->getIsMatterConduct());
  328.                             $schoolStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  329.                             $countSubMatters 0;
  330.                             foreach ($schoolAverage->getMatter()->getSchoolSubMatters() as $key => $schoolSubMatter) {
  331.                                 $schoolStudentAverage->setAsSubmatter(true);
  332.                                 $countSubMatters++;
  333.                                 $schoolSubStudentAverage = new SchoolStudentAverage();
  334.                                 $schoolSubStudentAverage->setEstablishment($establishment);
  335.                                 $schoolSubStudentAverage->setSchoolYear($schoolYear);
  336.                                 $schoolSubStudentAverage->setSchoolAverage($schoolAverage);
  337.                                 $schoolSubStudentAverage->setRegistrationStudentRegistration($registrationStudentRegistration);
  338.                                 $schoolSubStudentAverage->setCode('sa-'.rand(100000999999).$schoolSubMatter->getId().$registrationStudentRegistration->getId().$schoolAverage->getSchoolYearPeriode()->getId());
  339.                                 $schoolSubStudentAverage->setCoefficient(1);
  340.                                 $schoolSubStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  341.                                 $schoolSubStudentAverage->setNote(999);
  342.                                 $schoolSubStudentAverage->setMatter($schoolAverage->getMatter());
  343.                                 $schoolSubStudentAverage->setIsMatterConduct($schoolAverage->getMatter()->getIsMatterConduct());
  344.                                 $schoolSubStudentAverage->setSubMatter($schoolSubMatter);
  345.                                 $schoolSubStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  346.                                 $entityManager->persist($schoolSubStudentAverage);
  347.                             }
  348.                             
  349.                             if ($countSubMatters <= 0) {
  350.                                 $entityManager->persist($schoolStudentAverage);
  351.                             }
  352.                         }
  353.                     }
  354.                 }
  355.             }
  356.             $entityManager->persist($schoolAverage);
  357.             try {
  358.                 $entityManager->flush();
  359.                 $this->addFlash('success'"Une note à été ajoutée.");
  360.             } catch (\Throwable $th) {
  361.                 $this->addFlash('warning'"Une erreure est survenue lors de l'ajout de la note.");
  362.                 $this->addFlash('info'$th->getMessage());
  363.                 return $this->redirectToRoute('school_average_new');
  364.             }
  365.             return $this->redirectToRoute('school_average_edit', ['id' => $schoolAverage->getId()]);
  366.         }
  367.         return $this->renderForm('school/school_average/new.html.twig', [
  368.             'school_average' => $schoolAverage,
  369.             'schoolTeacher' => $schoolTeacher,
  370.             'form' => $form,
  371.         ]);
  372.     }
  373.     /**
  374.      * @Route("/{id}/edit", name="school_average_edit", methods={"GET","POST"})
  375.      */
  376.     public function edit(Request $requestSchoolAverage $schoolAverageUserRepository $userRepositorySchoolStudentAverageRepository $schoolStudentAverageRepositoryRegistrationStudentRegistrationRepository $registrationStudentRegistrationRepository): Response
  377.     {
  378.         /**@var User $user */
  379.         $user $this->getUser();
  380.         $schoolYear $user->getSchoolYear();
  381.         $user $this->getUser();
  382.         $establishment $user->getEstablishment();
  383.         foreach ($schoolAverage->getSchoolStudentAverages() as $key => $schoolStudentAverage) {
  384.             $schoolStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  385.         }
  386.         $entityManager $this->getDoctrine()->getManager();
  387.         
  388.         try {
  389.             $entityManager->flush();
  390.         } catch (\Throwable $th) {
  391.             $this->addFlash('info'$th->getMessage());
  392.         }
  393.         
  394.         $form $this->createForm(SchoolAverageType::class, $schoolAverage)
  395.         ->remove('classroom')
  396.         ->remove('matter')
  397.         ->remove('schoolYearPeriode');
  398.         $form->handleRequest($request);
  399.         
  400.         if ($form->isSubmitted() && $form->isValid()) {
  401.             try {
  402.                 $entityManager->flush();
  403.                 $this->addFlash('success'"Une classe à été ajoutée.");
  404.             } catch (\Throwable $th) {
  405.                 $this->addFlash('warning'"Une erreure est survenue lors de l'ajout de la classe.");
  406.                 $this->addFlash('info'$th->getMessage());
  407.             }
  408.             return $this->redirectToRoute('school_average_edit', ['id' => $schoolAverage->getId()]);
  409.         }
  410.         $schoolStudentAverages $schoolStudentAverageRepository->createQueryBuilder('entity')
  411.         ->innerJoin('entity.registrationStudentRegistration''registrationStudentRegistration')
  412.         ->addSelect('registrationStudentRegistration')
  413.         ->innerJoin('registrationStudentRegistration.student''student')
  414.         ->addSelect('student')
  415.         ->andWhere('entity.schoolAverage = :schoolAverage')
  416.         ->setParameter('schoolAverage'$schoolAverage)
  417.         
  418.         ->getQuery()
  419.         ->getResult();
  420.         $school_student_averages = new ArrayCollection();
  421.         foreach ($schoolStudentAverages as $key => $schoolStudentAverage) {
  422.             $school_student_averages->add([
  423.                 'id' => $schoolStudentAverage->getId(),
  424.                 'code' => $schoolStudentAverage->getRegistrationStudentRegistration()->getStudent()->getRegistrationNumber(),
  425.                 'name' => $schoolStudentAverage->getRegistrationStudentRegistration()->getStudent()->getName(),
  426.                 'classroom' => $schoolStudentAverage->getRegistrationStudentRegistration()->getClassroom()->getLabel(),
  427.                 'note' => $schoolStudentAverage->getNote(),
  428.                 'noteOn' => $schoolStudentAverage->getNoteOn(),
  429.                 'asSubmatter' => $schoolStudentAverage->getAsSubmatter(),
  430.                 'subMatter' => $schoolStudentAverage->getSubMatter() ? $schoolStudentAverage->getSubMatter()->getLabel() : null,
  431.                 'entity' => $schoolStudentAverage,
  432.                 
  433.             ]);
  434.         }
  435.         $iterator $school_student_averages->getIterator();
  436.         $iterator->uasort(function ($first$second) {
  437.             if ($first === $second) {
  438.                 return 0;
  439.             }
  440.             return $first['name'] < $second['name'] ? -1;
  441.         });
  442.         $school_student_averages = new ArrayCollection(iterator_to_array($iterator));
  443.         $registrationStudentRegistrations $registrationStudentRegistrationRepository->createQueryBuilder('entity')
  444.         ->innerJoin('entity.student''student')
  445.         ->addSelect('student')
  446.         ->andWhere('entity.establishment = :establishment')
  447.         ->setParameter('establishment'$establishment)
  448.         ->andWhere('entity.schoolYear = :schoolYear')
  449.         ->setParameter('schoolYear'$schoolYear)
  450.         ->andWhere('entity.classroom = :classroom')
  451.         ->setParameter('classroom'$schoolAverage->getClassroom())
  452.         ->orderBy('student.last_name''ASC')
  453.         ->getQuery()
  454.         ->getResult();
  455.         $registration_student_registrations = new ArrayCollection();
  456.         foreach ($registrationStudentRegistrations as $key => $registrationStudentRegistration) {
  457.             if (!$registrationStudentRegistration->getIsAbandonned()) {
  458.                 if (null == $schoolStudentAverageRepository->findOneBy(['registrationStudentRegistration' => $registrationStudentRegistration'schoolAverage' => $schoolAverage], [])) {
  459.                     if($schoolAverage->getMatter()->getLv2() == 'AUCUN' || $registrationStudentRegistration->getStudent()->getLv2() == $schoolAverage->getMatter()->getLv2()){
  460.                         if ($schoolAverage->getMatter()->getArtOrMusique() == null || $schoolAverage->getMatter()->getArtOrMusique() == '' || $registrationStudentRegistration->getStudent()->getArtOrMusique() == $schoolAverage->getMatter()->getArtOrMusique()) {
  461.                             $registration_student_registrations->add($registrationStudentRegistration);
  462.                         }
  463.                         
  464.                     }
  465.                     
  466.                 }
  467.             }
  468.         }
  469.         
  470.         $schoolStudentAverage = new SchoolStudentAverage();
  471.         $schoolStudentAverage->setNote(999);
  472.         $school_student_average_form $this->createForm(SchoolStudentAverageType::class, $schoolStudentAverage)
  473.         ->add('registrationStudentRegistration'EntityType::class, [
  474.             'class' => RegistrationStudentRegistration::class,
  475.             'choices' => $registration_student_registrations,
  476.             'required' => true
  477.         ]);
  478.         $school_student_average_form->handleRequest($request);
  479.         if ($school_student_average_form->isSubmitted() && $school_student_average_form->isValid()) {
  480.             $schoolStudentAverage->setSchoolAverage($schoolAverage);
  481.             $schoolStudentAverage->setCoefficient($schoolAverage->getCoefficient());
  482.             $schoolStudentAverage->setEstablishment($schoolAverage->getEstablishment());
  483.             $schoolStudentAverage->setSchoolYear($schoolAverage->getSchoolYear());
  484.             $schoolStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  485.             $schoolStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  486.             $schoolStudentAverage->setMatter($schoolAverage->getMatter());
  487.             $schoolStudentAverage->setCode('sa-'.time().$schoolAverage->getId().$schoolStudentAverage->getRegistrationStudentRegistration()->getId());
  488.             $registrationStudentRegistration $schoolStudentAverage->getRegistrationStudentRegistration();
  489.             if (null != $schoolStudentAverageRepository->findOneBy(['registrationStudentRegistration' => $registrationStudentRegistration'schoolAverage' => $schoolAverage], [])) {
  490.                 $this->addFlash('warning'"Cette note existe déjà.");
  491.                 return $this->redirectToRoute('school_average_edit', ['id' => $schoolAverage->getId()]);
  492.             }
  493.             if ($schoolStudentAverage->getNote() > $schoolStudentAverage->getNoteOn() && $schoolStudentAverage->getNote() != 999) {
  494.                 $this->addFlash('warning'"Note invalide");
  495.                 return $this->redirectToRoute('school_average_edit', ['id' => $schoolAverage->getId()]);
  496.             }
  497.             if ($schoolStudentAverage->getNote()) {
  498.                 $this->addFlash('warning'"Note invalide");
  499.                 return $this->redirectToRoute('school_average_edit', ['id' => $schoolAverage->getId()]);
  500.             }
  501.             
  502.             $countSubMatters 0;
  503.             foreach ($schoolAverage->getMatter()->getSchoolSubMatters() as $key => $schoolSubMatter) {
  504.                 $schoolStudentAverage->setAsSubmatter(true);
  505.                 $countSubMatters++;
  506.                 $schoolSubStudentAverage = new SchoolStudentAverage();
  507.                 $schoolSubStudentAverage->setEstablishment($establishment);
  508.                 $schoolSubStudentAverage->setSchoolYear($schoolYear);
  509.                 $schoolSubStudentAverage->setSchoolAverage($schoolAverage);
  510.                 $schoolSubStudentAverage->setRegistrationStudentRegistration($registrationStudentRegistration);
  511.                 $schoolSubStudentAverage->setCode('sa-'.time().$schoolSubMatter->getId().$schoolAverage->getId().$registrationStudentRegistration->getId());
  512.                 $schoolSubStudentAverage->setCoefficient(1);
  513.                 $schoolSubStudentAverage->setNoteOn($schoolAverage->getNoteOn());
  514.                 $schoolSubStudentAverage->setNote(999);
  515.                 $schoolSubStudentAverage->setMatter($schoolAverage->getMatter());
  516.                 $schoolSubStudentAverage->setIsMatterConduct($schoolAverage->getMatter()->getIsMatterConduct());
  517.                 $schoolSubStudentAverage->setSubMatter($schoolSubMatter);
  518.                 $schoolSubStudentAverage->setSchoolYearPeriode($schoolAverage->getSchoolYearPeriode());
  519.                 $entityManager->persist($schoolSubStudentAverage);
  520.             }
  521.             if (count($schoolAverage->getMatter()->getSchoolSubMatters()) <= 0) {
  522.                 $entityManager->persist($schoolStudentAverage);
  523.             }
  524.             
  525.             try {
  526.                 $entityManager->flush();
  527.                 $this->addFlash('success'"Une note à été ajoutée.");
  528.             } catch (\Throwable $th) {
  529.                 $this->addFlash('warning'"Une erreure est survenue lors de l'ajout de la noteg.");
  530.                 $this->addFlash('info'$th->getMessage());
  531.             }
  532.             return $this->redirectToRoute('school_average_edit', ['id' => $schoolAverage->getId()]);
  533.         }
  534.         return $this->renderForm('school/school_average/edit.html.twig', [
  535.             'school_average' => $schoolAverage,
  536.             'form' => $form,
  537.             'schoolStudentAverage' => $schoolStudentAverage,
  538.             'school_student_average_form' => $school_student_average_form,
  539.             'school_student_averages' => $school_student_averages,
  540.             'userRepository' => $userRepository,
  541.         ]);
  542.     }
  543.     /**
  544.      * @Route("/delete-selection", name="school_averages_selected_delete", methods={"GET"})
  545.     */
  546.     public function deleteSelected(Request $requestSchoolAverageRepository $entityRepository): Response
  547.     {
  548.         $list $request->get('entities');
  549.         $entityManager $this->getDoctrine()->getManager();
  550.         $errors 0;
  551.         foreach ($list as $key => $id) {
  552.             $entity $entityRepository->findOneBy(['id' => intval($id)], []);
  553.             if ($entity != null) {
  554.                 if (!$entity->getIsValidated()) {
  555.                     foreach ($entity->getSchoolStudentAverages() as $key => $schoolStudentAverage) {
  556.                         $entityManager->remove($schoolStudentAverage);
  557.                     }
  558.                     $entityManager->remove($entity);
  559.                 }
  560.             }
  561.         }
  562.         try {
  563.             $entityManager->flush();
  564.             $this->addFlash('success'"Traitement effectué");
  565.             return $this->json(['code' => 200'message' => "Traitement effectué :)"], 200);
  566.         } catch (\Throwable $th) {
  567.             //$th->getMessage()
  568.             $this->addFlash('warning'$th->getMessage());
  569.         }
  570.         
  571.         $this->addFlash('warning'"Traitement non effectué");
  572.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  573.     }
  574.     /**
  575.      * @Route("/{id}/validate", name="school_average_validate", methods={"GET"})
  576.     */
  577.     public function validate(SchoolAverage $entity): Response
  578.     {
  579.         $entityManager $this->getDoctrine()->getManager();
  580.         foreach ($entity->getSchoolStudentAverages() as $key => $schoolStudentAverage) {
  581.             if (intval($schoolStudentAverage->getNote()) > $schoolStudentAverage->getNoteOn() && intval($schoolStudentAverage->getNote()) != 999) {
  582.                 return $this->json(['code' => 500'message' => "Veuillez verifier que toutes les notes sont valides ou 999 si l'élève est non classé."], 200);
  583.             }
  584.         }
  585.         
  586.         $entity->setIsValidated(true);
  587.         try {
  588.             $entityManager->flush();
  589.             $this->addFlash('success'"Traitement effectué");
  590.             return $this->json(['code' => 200'message' => "Traitement effectué :)"], 200);
  591.         } catch (\Throwable $th) {
  592.             //$th->getMessage()
  593.             $this->addFlash('warning'$th->getMessage());
  594.         }
  595.         
  596.         $this->addFlash('warning'"Traitement non effectué");
  597.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  598.     }
  599.     /**
  600.      * @Route("/{id}/cancel", name="school_average_cancel", methods={"GET"})
  601.     */
  602.     public function cancel(SchoolAverage $entity): Response
  603.     {
  604.         $entityManager $this->getDoctrine()->getManager();
  605.         $entity->setIsValidated(false);
  606.             
  607.         try {
  608.             $entityManager->flush();
  609.             $this->addFlash('success'"Traitement effectué");
  610.             return $this->json(['code' => 200'message' => "Traitement effectué :)"], 200);
  611.         } catch (\Throwable $th) {
  612.             //$th->getMessage()
  613.             $this->addFlash('warning'$th->getMessage());
  614.         }
  615.         
  616.         $this->addFlash('warning'"Traitement non effectué");
  617.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  618.     }
  619.     /**
  620.      * @Route("/api/teacher-matter", name="api_school_average_teacher_matter", methods={"GET"})
  621.     */
  622.     public function apiGetTeacherMatter(Request $requestSchoolTeacherRepository $schoolTeacherRepository): Response
  623.     {
  624.         /**@var User $user */
  625.         $user $this->getUser();
  626.         $establishment $user->getEstablishment();
  627.         $schoolYear $user->getSchoolYear();
  628.         $teacherId intval($request->get('api_teacherId'));
  629.         $teacher $schoolTeacherRepository->findOneBy(['id' => $teacherId'is_disabled' => 0], []);
  630.         $schoolTeacherMatterClassrooms = new ArrayCollection();
  631.             if ($teacher != null) {
  632.                 foreach ($teacher->getSchoolTeacherMatterClassrooms() as $key => $schoolTeacherMatterClassroom) {
  633.                     if (!$schoolTeacherMatterClassroom->getMatter()->getIsTestMatter() && !$schoolTeacherMatterClassroom->getIsDisabled()) {
  634.                         if ($schoolTeacherMatterClassroom->getClassroom()->getEstablishment() == $establishment) {
  635.                             if ($schoolTeacherMatterClassroom->getClassroom()->getSchoolYear() == $schoolYear) {
  636.                                 $schoolTeacherMatterClassrooms->add([
  637.                                     'id' => $schoolTeacherMatterClassroom->getId(),
  638.                                     'label' => '['.$schoolTeacherMatterClassroom->getClassroom()->getLabel().' - '.$schoolTeacherMatterClassroom->getClassroom()->getSchoolYear()->getCode().'] '.$schoolTeacherMatterClassroom->getMatter()->getLabel() 
  639.                                 ]);
  640.                             }
  641.                         }
  642.                     }
  643.                 }
  644.             }else{
  645.                 return $this->json(['code' => 500'message' => "not found :)"], 200);
  646.             }
  647.             
  648.             return $this->json([
  649.                 'code' => 200'message' => "found :)"
  650.                 'schoolTeacherMatterClassrooms' => $schoolTeacherMatterClassrooms
  651.             ], 200);
  652.     }
  653.     /**
  654.      * @Route("/api/get-teacher-classrooms", name="api_school_average_get_teacher_classrooms", methods={"GET"})
  655.     */
  656.     public function apiGetTeacherClassrooms(Request $requestSchoolTeacherRepository $schoolTeacherRepository): Response
  657.     {
  658.         $teacherId $request->get('api_teacherId');
  659.         $classrooms  = new ArrayCollection();
  660.         $matters  = new ArrayCollection();
  661.         $teacher $schoolTeacherRepository->findOneBy(['id' => intval($teacherId), 'is_disabled' => 0], []);
  662.         foreach ($teacher->getClassrooms() as $key => $settingClassroom) {
  663.             $classrooms->add([
  664.                 'id' => $settingClassroom->getId(),
  665.                 'label' => $settingClassroom->getLabel(),
  666.             ]);
  667.         }
  668.         return $this->json([
  669.             'code' => 200
  670.             'message' => "found :)"
  671.             'classrooms' => $classrooms 
  672.         ], 
  673.         200);
  674.         
  675.     }
  676.     /**
  677.      * @Route("/transcript-grades", name="school_average_transcript_grades", methods={"GET"})
  678.     */
  679.     public function transcript_grades(Pdf $knpSnappyPdfRequest $requestSchoolMatterRepository $schoolMatterRepositoryRegistrationStudentRegistrationRepository $registrationStudentRegistrationRepositorySettingClassroomRepository $settingClassroomRepositorySchoolYearPeriodeRepository $schoolYearPeriodeRepositorySchoolAverageRepository $schoolAverageRepository){
  680.         /**@var User $user */
  681.         $user $this->getUser();
  682.         $schoolYear $user->getSchoolYear();
  683.         $establishment $this->getUser()->getEstablishment();
  684.         $settingClassroom $settingClassroomRepository->findOneBy(['id' => $request->get('classroom')], []);
  685.         $schoolYearPeriode $schoolYearPeriodeRepository->findOneBy(['id' => $request->get('school_year_periode')], []);
  686.         $schoolMatter $schoolMatterRepository->findOneBy(['id' => $request->get('matter')], []);
  687.         $schoolAverages $schoolAverageRepository->createQueryBuilder('entity')
  688.         ->andWhere('entity.schoolYearPeriode = :schoolYearPeriode')
  689.         ->setParameter('schoolYearPeriode'$schoolYearPeriode)
  690.         ->andWhere('entity.establishment = :establishment')
  691.         ->setParameter('establishment'$establishment)
  692.         ->andWhere('entity.classroom = :classroom')
  693.         ->setParameter('classroom'$settingClassroom)
  694.         ->andWhere('entity.matter = :matter')
  695.         ->setParameter('matter'$schoolMatter)
  696.         ->orderBy('entity.label''ASC')
  697.         ->getQuery()
  698.         ->getResult();
  699.         $registrationStudentRegistrations $registrationStudentRegistrationRepository->createQueryBuilder('entity')
  700.         ->andWhere('entity.schoolYear = :schoolYear')
  701.         ->setParameter('schoolYear'$schoolYear)
  702.         ->andWhere('entity.establishment = :establishment')
  703.         ->setParameter('establishment'$establishment)
  704.         ->andWhere('entity.classroom = :classroom')
  705.         ->setParameter('classroom'$settingClassroom)
  706.         ->innerJoin('entity.student''student')
  707.         ->addSelect('student')
  708.         
  709.         ->andWhere('student.is_archived = :is_archived')
  710.         ->setParameter('is_archived'0)
  711.         ->orderBy('student.last_name''ASC')
  712.         ->getQuery()
  713.         ->getResult();
  714.         $html $this->renderView('school/school_average/print/transcript_grades.html.twig', [
  715.             'school_averages' => $schoolAverages,
  716.             'registration_student_registrations' => $registrationStudentRegistrations,
  717.             'settingClassroom' => $settingClassroom,
  718.             'schoolYearPeriode' => $schoolYearPeriode,
  719.             'schoolMatter' => $schoolMatter,
  720.             'school_year' => $schoolYear,
  721.             'setting' => $establishment,
  722.         ]);
  723.         $file_name "RELEVE_NOTE_.pdf";
  724.         $footer $this->renderView('print/footer.html.twig', ['setting' => $establishment]);
  725.         $header $this->renderView('print/header.html.twig', ['setting' => $establishment]);
  726.         
  727.         $options = [
  728.             'orientation' => 'Portrait',
  729.             'header-html' => $header,
  730.             'footer-html' => $footer
  731.         ];
  732.         
  733.         try {
  734.             $knpSnappyPdf->generateFromHtml($html$this->getParameter('app.app_directory').'/downloads/recovery/' $file_name$optionstrue);
  735.         } catch (\Throwable $th) {
  736.             $this->addFlash('info'"Une erreur c'est produite");
  737.         }
  738.         
  739.         return $this->redirectToRoute('preview', [
  740.             'file' => $file_name,
  741.             'dir' => 'recovery',
  742.         ]);
  743.     }
  744.     /**
  745.      * @Route("/{id}/folow", name="school_average_folow", methods={"GET","POST"})
  746.      */
  747.     public function folow(SchoolTeacherRepository $schoolTeacherRepositorySchoolYearPeriode $schoolYearPeriode): Response
  748.     {
  749.         /**@var User $user */
  750.         $user $this->getUser();
  751.         $schoolYear $user->getSchoolYear();
  752.         $establishment $user->getEstablishment();
  753.         $schoolTeachers $schoolTeacherRepository->createQueryBuilder('entity')
  754.             ->innerJoin('entity.establishment''establishment')
  755.             ->addSelect('establishment')
  756.             ->andWhere('establishment.establishmentGroup = :establishmentGroup')
  757.             ->setParameter('establishmentGroup'$establishment->getEstablishmentGroup())
  758.             ->andWhere('entity.schoolYear = :schoolYear')
  759.             ->setParameter('schoolYear'$schoolYear)
  760.             ->andWhere('entity.is_disabled = :is_disabled')
  761.             ->setParameter('is_disabled'0)
  762.             ->orderBy('entity.id''DESC')
  763.             ->getQuery()
  764.             ->getResult();
  765.         return $this->renderForm('school/school_average/folow.html.twig', [
  766.             'school_year_periode' => $schoolYearPeriode,
  767.             'school_teachers' => $schoolTeachers,
  768.         ]);
  769.     }
  770. }