src/Controller/School/SchoolTeacherCallSheetController.php line 661

Open in your IDE?
  1. <?php
  2. namespace App\Controller\School;
  3. use App\Entity\SchoolTeacherCallSheet;
  4. use App\Entity\SchoolTeacherCallSheetLine;
  5. use App\Entity\SchoolTeacherTimeSheet;
  6. use App\Entity\SchoolWorkingTimeHourLesson;
  7. use App\Entity\User;
  8. use App\Repository\SchoolTeacherAbsenceRepository;
  9. use App\Repository\SchoolTeacherCallSheetLineRepository;
  10. use App\Repository\SchoolTeacherCallSheetRepository;
  11. use App\Repository\SchoolTeacherRepository;
  12. use App\Repository\SchoolWorkingTimeHourLessonRepository;
  13. use App\Repository\SettingClassroomRepository;
  14. use App\Repository\SettingTimeTableRepository;
  15. use App\Repository\UserRepository;
  16. use App\Service\DateIntervalManage;
  17. use App\Service\PayrollSyncService;
  18. use App\Service\SMSSender;
  19. use App\Service\ZKBioSyncService;
  20. use DateTimeImmutable;
  21. use Doctrine\Common\Collections\ArrayCollection;
  22. use Knp\Component\Pager\PaginatorInterface;
  23. use Knp\Snappy\Pdf;
  24. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  25. use Symfony\Component\HttpFoundation\Request;
  26. use Symfony\Component\HttpFoundation\Response;
  27. use Symfony\Component\Routing\Annotation\Route;
  28. /**
  29.  * @Route("/school/teacher-call-sheet")
  30.  */
  31. class SchoolTeacherCallSheetController extends AbstractController
  32. {
  33.     /**
  34.      * @Route("/index", name="school_teacher_call_sheet_index", methods={"GET"})
  35.      */
  36.     public function index(Request $requestPaginatorInterface $paginatorSchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepositorySchoolTeacherRepository $schoolTeacherRepositorySettingClassroomRepository $settingClassroomRepositoryUserRepository $userRepository): Response
  37.     {
  38.         /**@var User $user */
  39.         $user $this->getUser();
  40.         $schoolYear $user->getSchoolYear();
  41.         $establishment $user->getEstablishment();
  42.         $schoolTeacher $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear'is_disabled' => 0], []);
  43.         $school_teacher $schoolTeacherRepository->findOneBy(['id' => $request->get('school_teacher')], []);
  44.         $settingClassroom $settingClassroomRepository->findOneBy(['id' => $request->get('setting_classroom')], []);
  45.         $query $schoolTeacherCallSheetRepository->createQueryBuilder('entity')
  46.         ->innerJoin('entity.settingClassroom''settingClassroom')
  47.         ->addSelect('settingClassroom')
  48.         ->andWhere('settingClassroom.establishment = :establishment')
  49.         ->setParameter('establishment'$establishment);
  50.         if (strlen($request->get('statut')) > 0) {
  51.             $query $query
  52.             ->andWhere('entity.status = :status')
  53.             ->setParameter('status'$request->get('statut'));
  54.         }
  55.         if (strlen($request->get('etat')) > 0) {
  56.             $query $query
  57.             ->andWhere('entity.is_aproved = :is_aproved')
  58.             ->setParameter('is_aproved'intval($request->get('etat')));
  59.         }
  60.         if (null != $settingClassroom) {
  61.             $query $query
  62.             ->andWhere('entity.settingClassroom = :settingClassroom')
  63.             ->setParameter('settingClassroom'$settingClassroom);
  64.         }
  65.         if (null != $school_teacher) {
  66.             $query $query
  67.             ->andWhere('entity.schoolTeacher = :schoolTeacher')
  68.             ->setParameter('schoolTeacher'$school_teacher);
  69.         }
  70.         $query $query
  71.         ->andWhere('entity.schoolYear = :schoolYear')
  72.         ->setParameter('schoolYear'$schoolYear)
  73.         ->orderBy('entity.id''DESC')
  74.         ->getQuery();
  75.         $school_teacher_call_sheets $paginator->paginate(
  76.             $query,
  77.             $request->query->getInt('page'1),
  78.             1000
  79.         );
  80.         if (null != $schoolTeacher) {
  81.             $query $schoolTeacherCallSheetRepository->createQueryBuilder('entity')
  82.             ->innerJoin('entity.settingClassroom''settingClassroom')
  83.             ->addSelect('settingClassroom')
  84.             ->andWhere('settingClassroom.establishment = :establishment')
  85.             ->setParameter('establishment'$establishment);
  86.         if (strlen($request->get('statut')) > 0) {
  87.             $query $query
  88.             ->andWhere('entity.status = :status')
  89.             ->setParameter('status'$request->get('statut'));
  90.         }
  91.         if (strlen($request->get('etat')) > 0) {
  92.             $query $query
  93.             ->andWhere('entity.is_aproved = :is_aproved')
  94.             ->setParameter('is_aproved'intval($request->get('etat')));
  95.         }
  96.         $query $query
  97.         ->andWhere('entity.schoolYear = :schoolYear')
  98.         ->setParameter('schoolYear'$schoolYear)
  99.         ->andWhere('entity.schoolTeacher = :schoolTeacher')
  100.         ->setParameter('schoolTeacher'$schoolTeacher)
  101.         ->orderBy('entity.id''DESC')
  102.         ->getQuery();
  103.             $school_teacher_call_sheets $paginator->paginate(
  104.                 $query,
  105.                 $request->query->getInt('page'1),
  106.                 1000
  107.             );
  108.         }
  109.         $school_teachers $schoolTeacherRepository->createQueryBuilder('entity')
  110.             ->innerJoin('entity.schoolWorkingTimeHourLessons''schoolWorkingTimeHourLessons')
  111.             ->addSelect('schoolWorkingTimeHourLessons')
  112.             ->innerJoin('schoolWorkingTimeHourLessons.settingClassroom''classrooms')
  113.             ->addSelect('classrooms')
  114.             ->andWhere('classrooms.establishment = :establishment')
  115.             ->setParameter('establishment'$establishment)
  116.             ->andWhere('entity.schoolYear = :schoolYear')
  117.             ->setParameter('schoolYear'$schoolYear)
  118.             ->orderBy('entity.id''DESC')
  119.             ->getQuery()
  120.             ->getResult();
  121.         return $this->render('school/school_teacher_call_sheet/index.html.twig', [
  122.             'userRepository' => $userRepository,
  123.             'school_teacher_call_sheets' => $school_teacher_call_sheets,
  124.             'school_teachers' => $school_teachers,
  125.             'school_teacher' => $school_teacher,
  126.             'schoolTeacher' => $schoolTeacher,
  127.             'statut' => $request->get('statut'),
  128.             'etat' => $request->get('etat'),
  129.             'settingClassroom' => $settingClassroom,
  130.             'setting_classrooms' => $settingClassroomRepository->findBy(['establishment' => $establishment'schoolYear' => $schoolYear], ['label' => 'ASC']),
  131.         ]);
  132.     }
  133.     /**
  134.      * @Route("/new", name="school_teacher_call_sheet_new", methods={"GET","POST"})
  135.      */
  136.     public function new(SchoolTeacherRepository $schoolTeacherRepositoryZKBioSyncService $ZKBioSyncServicePayrollSyncService $payrollSyncServiceSchoolWorkingTimeHourLessonRepository $schoolWorkingTimeHourLessonRepository): Response
  137.     {
  138.         /**@var User $user */
  139.         $user $this->getUser();
  140.         $schoolYear $user->getSchoolYear();
  141.         $user $this->getUser();
  142.         $establishment $user->getEstablishment();
  143.         $rhSalary $user->getRhSalary();
  144.         $schoolTeacher $schoolTeacherRepository->findOneBy(['salary' => $rhSalary'schoolYear' => $schoolYear'is_disabled' => 0], []);
  145.         if (null == $schoolTeacher) {
  146.             $this->addFlash('warning'"Veuillez vous connecter avec un compte enseignant.");
  147.             return $this->redirectToRoute('school_teacher_call_sheet_index');
  148.         }
  149.         if($establishment->getIsFaceAttendanceEnabled()) {
  150.             // Vérification de pointage de l'enseignant
  151.             if (!$ZKBioSyncService->hasPointedToday($rhSalary)) {
  152.                 $this->addFlash('warning'"Vous n'avez pas encore pointé aujourd'hui, veuillez pointer pour accéder à cette fonctionnalité.");
  153.                 return $this->redirectToRoute('school_teacher_call_sheet_index');
  154.             }
  155.             
  156.             /*$records = $payrollSyncService->getRecordsByRhSalary($rhSalary, new \DateTime(), new \DateTime());
  157.             if (count($records) <= 0) {
  158.                 $this->addFlash('warning', "Cet employé a pas encore pointé: ".$rhSalary->getFirstName()." ".$rhSalary->getLastName());
  159.                 return $this->redirectToRoute('school_teacher_call_sheet_index');
  160.             }*/
  161.         }
  162.         $schoolWorkingTimeHourLessons $schoolWorkingTimeHourLessonRepository->createQueryBuilder('entity')
  163.         ->andWhere('entity.establishment = :establishment')
  164.         ->setParameter('establishment'$establishment)
  165.         ->andWhere('entity.schoolYear = :schoolYear')
  166.         ->setParameter('schoolYear'$schoolYear)
  167.         ->andWhere('entity.schoolTeacher = :schoolTeacher')
  168.         ->setParameter('schoolTeacher'$schoolTeacher)
  169.         ->andWhere('entity.day = :day')
  170.         ->setParameter('day'DateIntervalManage::FRENCH_DAY[date('D')])
  171.         ->innerJoin('entity.settingTimeTable''settingTimeTable')
  172.         ->addSelect('settingTimeTable')
  173.         ->andWhere('settingTimeTable.start <= :start')
  174.         ->setParameter('start'date('H:i'))
  175.         ->orderBy('settingTimeTable.endh''DESC')
  176.         ->getQuery()
  177.         ->getResult();
  178.         if (count($schoolWorkingTimeHourLessons) <= 0) {
  179.             $this->addFlash('warning'"Aucune page horaire correspondante trouvé dans votre emploie du temps.");
  180.             return $this->redirectToRoute('school_teacher_call_sheet_index');
  181.         }
  182.         return $this->renderForm('school/school_teacher_call_sheet/new.html.twig', [
  183.             'school_working_time_hour_lessons' => $schoolWorkingTimeHourLessons,
  184.         ]);
  185.     }
  186.     /**
  187.      * @Route("/{id}/create", name="school_teacher_call_sheet_create", methods={"GET"})
  188.      */
  189.     public function create(SchoolWorkingTimeHourLesson $schoolWorkingTimeHourLessonSchoolTeacherRepository $schoolTeacherRepositorySchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepository): Response
  190.     {
  191.         /**@var User $user */
  192.         $user $this->getUser();
  193.         $schoolYear $user->getSchoolYear();
  194.         $schoolTeacher $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear'is_disabled' => 0], []);
  195.         if (null == $schoolTeacher) {
  196.             $this->addFlash('warning'"Veuillez vous connecter avec un compte enseignant.");
  197.             return $this->redirectToRoute('school_teacher_call_sheet_index');
  198.         }
  199.         if ($schoolWorkingTimeHourLesson->getSchoolTeacher() != $schoolTeacher) {
  200.             $this->addFlash('warning'"Veuillez vous connecter avec au compte enseignant.");
  201.             return $this->redirectToRoute('school_teacher_call_sheet_index');
  202.         }
  203.         $createDate = new DateTimeImmutable();
  204.         $schoolTeacherCallSheet $schoolTeacherCallSheetRepository->findOneBy([
  205.             'establishment' => $schoolWorkingTimeHourLesson->getEstablishment(), 
  206.             'schoolYear' => $schoolWorkingTimeHourLesson->getSchoolYear(),
  207.             'schoolTeacher' => $schoolWorkingTimeHourLesson->getSchoolTeacher(),
  208.             'schoolWorkingTime' => $schoolWorkingTimeHourLesson->getSchoolWorkingTime(),
  209.             'settingClassroom' => $schoolWorkingTimeHourLesson->getSettingClassroom(),
  210.             'settingTimeTable' => $schoolWorkingTimeHourLesson->getSettingTimeTable(),
  211.             'create_date' => $createDate,
  212.             'day' => $schoolWorkingTimeHourLesson->getDay(),
  213.         ], []);
  214.         if (null != $schoolTeacherCallSheet) {
  215.             $this->addFlash('warning'"Cette fiche existe déjà.");
  216.             return $this->redirectToRoute('school_teacher_call_sheet_ree_call', ['id' => $schoolTeacherCallSheet->getId()]);
  217.         }
  218.         if ($schoolWorkingTimeHourLesson->getSettingTimeTable() != null) {
  219.             if ($schoolWorkingTimeHourLesson->getSettingTimeTable()->getEndh() < date('H:i')) {
  220.                 $this->addFlash('warning'"Impossible, le cours est terminé.");
  221.                 return $this->redirectToRoute('school_teacher_call_sheet_index');
  222.             }
  223.         }
  224.         $entityManager $this->getDoctrine()->getManager();
  225.         $schoolTeacherCallSheet = new SchoolTeacherCallSheet();
  226.         $schoolTeacherCallSheet->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
  227.         $schoolTeacherCallSheet->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
  228.         $schoolTeacherCallSheet->setSchoolMatter($schoolWorkingTimeHourLesson->getSchoolMatter());
  229.         $schoolTeacherCallSheet->setSchoolTeacher($schoolWorkingTimeHourLesson->getSchoolTeacher());
  230.         $schoolTeacherCallSheet->setSchoolWorkingTime($schoolWorkingTimeHourLesson->getSchoolWorkingTime());
  231.         $schoolTeacherCallSheet->setSettingClassroom($schoolWorkingTimeHourLesson->getSettingClassroom());
  232.         $schoolTeacherCallSheet->setSettingTimeTable($schoolWorkingTimeHourLesson->getSettingTimeTable());
  233.         $schoolTeacherCallSheet->setDay($schoolWorkingTimeHourLesson->getDay());
  234.         $schoolTeacherCallSheet->setCreateDate(new DateTimeImmutable());
  235.         $schoolTeacherCallSheet->setCreateTime(date('H:i'));
  236.         $entityManager->persist($schoolTeacherCallSheet);
  237.         if($schoolWorkingTimeHourLesson->getSchoolMatter()->getLv2() == 'AUCUN') {
  238.             if($schoolWorkingTimeHourLesson->getSchoolMatter()->getArtOrMusique() == null || $schoolWorkingTimeHourLesson->getSchoolMatter()->getArtOrMusique() == '') {
  239.             /* --- pas une langue vivante 2 --- */
  240.                 foreach ($schoolWorkingTimeHourLesson->getSettingClassroom()->getRegistereds($schoolWorkingTimeHourLesson->getSchoolYear()) as $key => $registrationStudentRegistration) {
  241.                     $schoolTeacherCallSheetLine = new SchoolTeacherCallSheetLine();
  242.                     $schoolTeacherCallSheetLine->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
  243.                     $schoolTeacherCallSheetLine->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
  244.                     $schoolTeacherCallSheetLine->setRegistrationStudentRegistration($registrationStudentRegistration);
  245.                     $schoolTeacherCallSheetLine->setCreateDate(new DateTimeImmutable());
  246.                     $schoolTeacherCallSheetLine->setCreateTime($schoolTeacherCallSheet->getCreateTime());
  247.                     $schoolTeacherCallSheetLine->setDay($schoolTeacherCallSheet->getDay());
  248.                     $schoolTeacherCallSheetLine->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
  249.                     $schoolTeacherCallSheetLine->setIsAbsent(false);
  250.                     $schoolTeacherCallSheetLine->setIsPresente(true);
  251.                     
  252.                     if ($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getAmountDueAt(new DateTimeImmutable()) > 0) {
  253.                         $schoolTeacherCallSheetLine->setIsAbsent(true);
  254.                         $schoolTeacherCallSheetLine->setIsPresente(false);
  255.                     }
  256.                     $entityManager->persist($schoolTeacherCallSheetLine);
  257.                 }
  258.             }else {
  259.                 foreach ($schoolWorkingTimeHourLesson->getSettingClassroom()->getRegistereds($schoolWorkingTimeHourLesson->getSchoolYear()) as $key => $registrationStudentRegistration) {
  260.                     if ($registrationStudentRegistration->getStudent()->getArtOrMusique() == $schoolWorkingTimeHourLesson->getSchoolMatter()->getArtOrMusique()) {
  261.                         $schoolTeacherCallSheetLine = new SchoolTeacherCallSheetLine();
  262.                         $schoolTeacherCallSheetLine->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
  263.                         $schoolTeacherCallSheetLine->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
  264.                         $schoolTeacherCallSheetLine->setRegistrationStudentRegistration($registrationStudentRegistration);
  265.                         $schoolTeacherCallSheetLine->setCreateDate(new DateTimeImmutable());
  266.                         $schoolTeacherCallSheetLine->setCreateTime($schoolTeacherCallSheet->getCreateTime());
  267.                         $schoolTeacherCallSheetLine->setDay($schoolTeacherCallSheet->getDay());
  268.                         $schoolTeacherCallSheetLine->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
  269.                         $schoolTeacherCallSheetLine->setIsAbsent(false);
  270.                         $schoolTeacherCallSheetLine->setIsPresente(true);
  271.                         
  272.                         if ($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getAmountDueAt(new DateTimeImmutable()) > 0) {
  273.                             $schoolTeacherCallSheetLine->setIsAbsent(true);
  274.                             $schoolTeacherCallSheetLine->setIsPresente(false);
  275.                         }
  276.                         $entityManager->persist($schoolTeacherCallSheetLine);
  277.                     }
  278.                 }
  279.             }
  280.         }else {
  281.             /* --- est une langue vivante 2 --- */
  282.             foreach ($schoolWorkingTimeHourLesson->getSettingClassroom()->getRegistereds($schoolWorkingTimeHourLesson->getSchoolYear()) as $key => $registrationStudentRegistration) {
  283.                 if ($registrationStudentRegistration->getStudent()->getLv2() == $schoolWorkingTimeHourLesson->getSchoolMatter()->getLv2()) {
  284.                     $schoolTeacherCallSheetLine = new SchoolTeacherCallSheetLine();
  285.                     $schoolTeacherCallSheetLine->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
  286.                     $schoolTeacherCallSheetLine->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
  287.                     $schoolTeacherCallSheetLine->setRegistrationStudentRegistration($registrationStudentRegistration);
  288.                     $schoolTeacherCallSheetLine->setCreateDate(new DateTimeImmutable());
  289.                     $schoolTeacherCallSheetLine->setCreateTime($schoolTeacherCallSheet->getCreateTime());
  290.                     $schoolTeacherCallSheetLine->setDay($schoolTeacherCallSheet->getDay());
  291.                     $schoolTeacherCallSheetLine->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
  292.                     
  293.                     $schoolTeacherCallSheetLine->setIsAbsent(false);
  294.                     $schoolTeacherCallSheetLine->setIsPresente(true);
  295.                     
  296.                     if ($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getAmountDueAt(new DateTimeImmutable()) > 0) {
  297.                         $schoolTeacherCallSheetLine->setIsAbsent(true);
  298.                         $schoolTeacherCallSheetLine->setIsPresente(false);
  299.                     }
  300.                     $entityManager->persist($schoolTeacherCallSheetLine);
  301.                 }
  302.             }
  303.         }
  304.         try {
  305.             $entityManager->flush();
  306.             return $this->redirectToRoute('school_teacher_call_sheet_ree_call', ['id' => $schoolTeacherCallSheet->getId()]);
  307.         } catch (\Throwable $th) {
  308.             $this->addFlash('warning'$th->getMessage());
  309.         }
  310.         return $this->redirectToRoute('school_teacher_call_sheet_index');
  311.     }
  312.     /**
  313.      * @Route("/{id}/call", name="school_teacher_call_sheet_call", methods={"GET","POST"})
  314.      */
  315.     public function call(SchoolTeacherCallSheet $schoolTeacherCallSheetSchoolTeacherCallSheetLineRepository $schoolTeacherCallSheetLineRepository): Response
  316.     {
  317.         /**@var User $user */
  318.         $user $this->getUser();
  319.         $schoolYear $user->getSchoolYear();
  320.         $establishment $user->getEstablishment();
  321.         $schoolTeacherCallSheetLines $schoolTeacherCallSheetLineRepository->createQueryBuilder('entity')
  322.         ->innerJoin('entity.registrationStudentRegistration''registrationStudentRegistration')
  323.         ->addSelect('registrationStudentRegistration')
  324.         
  325.         ->innerJoin('registrationStudentRegistration.student''student')
  326.         ->addSelect('student')
  327.         ->andWhere('entity.schoolTeacherCallSheet = :callSheet')
  328.         ->setParameter('callSheet'$schoolTeacherCallSheet)
  329.         ->orderBy('student.last_name''ASC')
  330.         ->getQuery()
  331.         ->getResult();
  332.         return $this->renderForm('school/school_teacher_call_sheet/re/call.html.twig', [
  333.             'recovery_put_out_amount' => $establishment->getRecoveryPutOutAmount(),
  334.             'school_teacher_call_sheet' => $schoolTeacherCallSheet,
  335.             'school_teacher_call_sheet_lines' => $schoolTeacherCallSheetLines,
  336.             'duDate' => new DateTimeImmutable(),
  337.         ]);
  338.     }
  339.     /**
  340.      * @Route("/delete-selection", name="school_teacher_call_sheets_selected_delete", methods={"GET"})
  341.     */
  342.     public function deleteSelected(Request $requestSchoolTeacherCallSheetRepository $entityRepository): Response
  343.     {
  344.         $list $request->get('entities');
  345.         $entityManager $this->getDoctrine()->getManager();
  346.         $errors 0;
  347.         foreach ($list as $key => $id) {
  348.             $entity $entityRepository->findOneBy(['id' => intval($id)], []);
  349.             if ($entity != null) {
  350.                 if ($entity->getStatus() == SchoolTeacherCallSheet::STATUS_BROUILLON) {
  351.                     foreach ($entity->getSchoolTeacherCallSheetLines() as $key => $schoolTeacherCallSheetLine) {
  352.                         $entityManager->remove($schoolTeacherCallSheetLine);
  353.                     }
  354.                     $entityManager->remove($entity);
  355.                 }
  356.             }
  357.         }
  358.         try {
  359.             $entityManager->flush();
  360.             $this->addFlash('success'"Traitement effectué");
  361.             return $this->json(['code' => 200'message' => "Traitement effectué :)"], 200);
  362.         } catch (\Throwable $th) {
  363.             //$th->getMessage()
  364.             $this->addFlash('warning'$th->getMessage());
  365.         }
  366.         
  367.         $this->addFlash('warning'"Traitement non effectué");
  368.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  369.     }
  370.     /**
  371.      * @Route("/{id}/validate", name="school_teacher_call_sheet_validate", methods={"GET"})
  372.     */
  373.     public function validate(SchoolTeacherCallSheet $schoolTeacherCallSheetSMSSender $smsSenderSchoolTeacherAbsenceRepository $schoolTeacherAbsenceRepository): Response
  374.     {
  375.         if ($schoolTeacherCallSheet->getStatus() == SchoolTeacherCallSheet::STATUS_REJETE) {
  376.             $this->addFlash('warning'"Impossible: La fiche a été rejetée, veuillez contacter votre responsable");
  377.             return $this->json(['code' => 400'message' => "Impossible: La fiche a été rejetée, veuillez contacter votre responsable"], 200);
  378.         }
  379.         /**@var User $user */
  380.         $user $this->getUser();
  381.         $schoolYear $user->getSchoolYear();
  382.         $establishment $user->getEstablishment();
  383.         $schoolTeacherAbsences $schoolTeacherAbsenceRepository->createQueryBuilder('entity')
  384.         ->innerJoin('entity.schoolWorkingTimeHourLesson''schoolWorkingTimeHourLesson')
  385.         ->addSelect('schoolWorkingTimeHourLesson')
  386.         ->andWhere('schoolWorkingTimeHourLesson.schoolTeacher = :schoolTeacher')
  387.         ->setParameter('schoolTeacher'$schoolTeacherCallSheet->getSchoolTeacher())
  388.         ->andWhere('schoolWorkingTimeHourLesson.day = :day')
  389.         ->setParameter('day'$schoolTeacherCallSheet->getDay())
  390.         ->andWhere('schoolWorkingTimeHourLesson.settingTimeTable = :settingTimeTable')
  391.         ->setParameter('settingTimeTable'$schoolTeacherCallSheet->getSettingTimeTable())
  392.         ->getQuery()
  393.         ->getResult();
  394.         if (count($schoolTeacherAbsences) > 0) {
  395.             $this->addFlash('warning'"Impossible enseignant marqué absent à cette periode");
  396.             return $this->json(['code' => 500'message' => "Tous les élèves n'ont pas été appelé"], 200);
  397.         }
  398.         foreach ($schoolTeacherCallSheet->getSchoolTeacherCallSheetLines() as $key => $schoolTeacherCallSheetLine) {
  399.             if (!$schoolTeacherCallSheetLine->getIsAbsent() && !$schoolTeacherCallSheetLine->getIsPresente()) {
  400.                 $this->addFlash('warning'"Tous les élèves n'ont pas été appelés");
  401.                 return $this->json(['code' => 500'message' => "Tous les élèves n'ont pas été appelé"], 200);
  402.             }
  403.         }
  404.         if (null != $schoolTeacherCallSheet->getSettingTimeTable()) {
  405.             if ($schoolTeacherCallSheet->getSettingTimeTable()->getDefautDuration() > 0) {
  406.                 $schoolTeacherCallSheet->setDefautDuration($schoolTeacherCallSheet->getSettingTimeTable()->getDefautDuration());
  407.             }
  408.         }
  409.         $entityManager $this->getDoctrine()->getManager();
  410.         
  411.         $schoolTeacherCallSheet->setIsValidated(true);
  412.         $schoolTeacherCallSheet->setStatus(SchoolTeacherCallSheet::STATUS_VALIDE);
  413.         try {
  414.             $entityManager->flush();
  415.             $this->addFlash('success'"Validation effectué");
  416.             return $this->json(['code' => 200'message' => "Validation effectué :)"], 200);
  417.         } catch (\Throwable $th) {
  418.             //$th->getMessage()
  419.             $this->addFlash('warning'$th->getMessage());
  420.         }
  421.         
  422.         $this->addFlash('warning'"Validation non effectué");
  423.         return $this->json(['code' => 500'message' => "Validation non effectué"], 200);
  424.     }
  425.     /**
  426.      * @Route("/{id}/cancel", name="school_teacher_call_sheet_cancel", methods={"GET"})
  427.     */
  428.     public function cancel(SchoolTeacherCallSheet $schoolTeacherCallSheet): Response
  429.     {
  430.         if ($schoolTeacherCallSheet->getIsAproved()) {
  431.             $this->addFlash('warning'"Impossible! fiche déjà approuvée");
  432.             return $this->json(['code' => 500'message' => "Impossible! fiche déjà approuvée"], 200);
  433.         }
  434.         $entityManager $this->getDoctrine()->getManager();
  435.         $schoolTeacherCallSheet->setIsValidated(false);
  436.         $schoolTeacherCallSheet->setStatus(SchoolTeacherCallSheet::STATUS_BROUILLON);
  437.         $schoolTeacherCallSheet->setRejectionReason(null);
  438.         try {
  439.             $entityManager->flush();
  440.             $this->addFlash('success'"Annulation effectué");
  441.             return $this->json(['code' => 200'message' => "Annulation effectué :)"], 200);
  442.         } catch (\Throwable $th) {
  443.             //$th->getMessage()
  444.             $this->addFlash('warning'$th->getMessage());
  445.         }
  446.         
  447.         $this->addFlash('warning'"Annulation non effectué");
  448.         return $this->json(['code' => 500'message' => "Annulation non effectué"], 200);
  449.     }
  450.     /**
  451.      * @Route("/{id}/reject", name="school_teacher_call_sheet_reject", methods={"POST"})
  452.     */
  453.     public function reject(Request $requestSchoolTeacherCallSheet $schoolTeacherCallSheet): Response
  454.     {
  455.         if ($schoolTeacherCallSheet->getIsAproved()) {
  456.             $this->addFlash('warning'"Impossible! fiche déjà approuvée");
  457.             return $this->json(['code' => 500'message' => "Impossible! fiche déjà approuvée"], 200);
  458.         }
  459.         $rejectionReason $request->get('rejection_reason');
  460.         
  461.         if (empty($rejectionReason)) {
  462.             $this->addFlash('warning'"Le motif de rejet est obligatoire");
  463.             return $this->json(['code' => 500'message' => "Le motif de rejet est obligatoire"], 200);
  464.         }
  465.         $entityManager $this->getDoctrine()->getManager();
  466.         $schoolTeacherCallSheet->setIsValidated(false);
  467.         $schoolTeacherCallSheet->setStatus(SchoolTeacherCallSheet::STATUS_REJETE);
  468.         $schoolTeacherCallSheet->setRejectionReason($rejectionReason);
  469.         try {
  470.             $entityManager->flush();
  471.             $this->addFlash('success'"Fiche rejetée avec succès");
  472.             return $this->json(['code' => 200'message' => "Fiche rejetée avec succès"], 200);
  473.         } catch (\Throwable $th) {
  474.             $this->addFlash('warning'$th->getMessage());
  475.         }
  476.         
  477.         $this->addFlash('warning'"Rejet non effectué");
  478.         return $this->json(['code' => 500'message' => "Rejet non effectué"], 200);
  479.     }
  480.     /**
  481.      * @Route("/{id}/aproved", name="school_teacher_call_sheet_aproved", methods={"GET"})
  482.     */
  483.     public function aproved(SchoolTeacherCallSheet $schoolTeacherCallSheetSchoolTeacherAbsenceRepository $schoolTeacherAbsenceRepository): Response
  484.     {
  485.         $schoolTeacherAbsences $schoolTeacherAbsenceRepository->createQueryBuilder('entity')
  486.         ->innerJoin('entity.schoolWorkingTimeHourLesson''schoolWorkingTimeHourLesson')
  487.         ->addSelect('schoolWorkingTimeHourLesson')
  488.         ->andWhere('schoolWorkingTimeHourLesson.schoolTeacher = :schoolTeacher')
  489.         ->setParameter('schoolTeacher'$schoolTeacherCallSheet->getSchoolTeacher())
  490.         ->andWhere('schoolWorkingTimeHourLesson.day = :day')
  491.         ->setParameter('day'$schoolTeacherCallSheet->getDay())
  492.         ->andWhere('schoolWorkingTimeHourLesson.settingTimeTable = :settingTimeTable')
  493.         ->setParameter('settingTimeTable'$schoolTeacherCallSheet->getSettingTimeTable())
  494.         ->getQuery()
  495.         ->getResult();
  496.         if (count($schoolTeacherAbsences) > 0) {
  497.             $this->addFlash('warning'"Impossible enseignant marqué absent à cette periode");
  498.             return $this->json(['code' => 500'message' => "Tous les élèves n'ont pas été appelé"], 200);
  499.         }
  500.         if (!$schoolTeacherCallSheet->getIsValidated() ) {
  501.             $this->addFlash('warning'"Impossible! veuillez valider la fiche");
  502.             return $this->json(['code' => 500'message' => "Impossible! veuillez valider la fiche"], 200);
  503.         }
  504.         $entityManager $this->getDoctrine()->getManager();
  505.         $schoolTeacherTimeSheet = new SchoolTeacherTimeSheet();
  506.         $schoolTeacherTimeSheet->setEstablishment($schoolTeacherCallSheet->getEstablishment());
  507.         $schoolTeacherTimeSheet->setSchoolYear($schoolTeacherCallSheet->getSchoolYear());
  508.         $schoolTeacherTimeSheet->setCreateDate($schoolTeacherCallSheet->getCreateDate());
  509.         $schoolTeacherTimeSheet->setNbHour(1);
  510.         if (null != $schoolTeacherCallSheet->getSettingTimeTable()) {
  511.             if ($schoolTeacherCallSheet->getSettingTimeTable()->getDefautDuration() > 0) {
  512.                 $schoolTeacherTimeSheet->setNbHour($schoolTeacherCallSheet->getSettingTimeTable()->getDefautDuration());
  513.             }
  514.         }
  515.         $schoolTeacherTimeSheet->setSchoolMatter($schoolTeacherCallSheet->getSchoolMatter());
  516.         $schoolTeacherTimeSheet->setSchoolTeacher($schoolTeacherCallSheet->getSchoolTeacher());
  517.         $schoolTeacherTimeSheet->setSchoolWorkingTime($schoolTeacherCallSheet->getSchoolWorkingTime());
  518.         $schoolTeacherTimeSheet->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
  519.         $schoolTeacherTimeSheet->setSettingClassroom($schoolTeacherCallSheet->getSettingClassroom());
  520.         $schoolTeacherTimeSheet->setSettingTimeTable($schoolTeacherCallSheet->getSettingTimeTable());
  521.         $entityManager->persist($schoolTeacherTimeSheet);
  522.         $schoolTeacherCallSheet->setIsAproved(true);
  523.         try {
  524.             $entityManager->flush();
  525.             $this->addFlash('success'"Approbation effectuée");
  526.             return $this->json(['code' => 200'message' => "Approbation effectuée :)"], 200);
  527.         } catch (\Throwable $th) {
  528.             //$th->getMessage()
  529.             $this->addFlash('warning'$th->getMessage());
  530.         }
  531.         
  532.         $this->addFlash('warning'"Approbation non effectuée");
  533.         return $this->json(['code' => 500'message' => "Approbation non effectuée"], 200);
  534.     }
  535.     /**
  536.      * @Route("/{id}/disaproved", name="school_teacher_call_sheet_disaproved", methods={"GET"})
  537.     */
  538.     public function disaproved(SchoolTeacherCallSheet $schoolTeacherCallSheet): Response
  539.     {
  540.         if (!$schoolTeacherCallSheet->getIsAproved() ) {
  541.             $this->addFlash('warning'"Impossible! cette fiche n'est pas encore approuvée");
  542.             return $this->json(['code' => 500'message' => "Impossible! cette fiche n'est pas encore approuvée"], 200);
  543.         }
  544.         $entityManager $this->getDoctrine()->getManager();
  545.         foreach ($schoolTeacherCallSheet->getSchoolTeacherTimeSheets() as $key => $schoolTeacherTimeSheet) {
  546.             $entityManager->remove($schoolTeacherTimeSheet);
  547.         }
  548.         
  549.         $schoolTeacherCallSheet->setIsAproved(false);
  550.         try {
  551.             $entityManager->flush();
  552.             $this->addFlash('success'"Approbation annulé");
  553.             return $this->json(['code' => 200'message' => "Approbation annulé :)"], 200);
  554.         } catch (\Throwable $th) {
  555.             //$th->getMessage()
  556.             $this->addFlash('warning'$th->getMessage());
  557.         }
  558.         
  559.         $this->addFlash('warning'"annulation non effectuée");
  560.         return $this->json(['code' => 500'message' => "annulation non effectuée"], 200);
  561.     }
  562.     /**
  563.      * @Route("/report-print", name="school_teacher_call_sheet_report_print", methods={"GET"})
  564.     */
  565.     public function report_print(Request $requestPdf $knpSnappyPdfSchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepositorySchoolTeacherRepository $schoolTeacherRepository)
  566.     {
  567.         /**@var User $user */
  568.         $user $this->getUser();
  569.         $schoolYear $user->getSchoolYear();
  570.         $establishment $user->getEstablishment();
  571.         $school_teacher $schoolTeacherRepository->findOneBy(['id' => $request->get('school_teacher')], []);
  572.         $startDate = new DateTimeImmutable($request->get('startDate'));
  573.         $endDate = new DateTimeImmutable($request->get('endDate'));
  574.         $dayDiff DateIntervalManage::myDayDiff($startDate$endDate);
  575.         $school_teacher_call_sheets $schoolTeacherCallSheetRepository->createQueryBuilder('entity')
  576.         ->innerJoin('entity.schoolTeacher''schoolTeacher')
  577.         ->addSelect('schoolTeacher')
  578.         ->innerJoin('schoolTeacher.schoolWorkingTimeHourLessons''schoolWorkingTimeHourLessons')
  579.         ->addSelect('schoolWorkingTimeHourLessons')
  580.         ->innerJoin('schoolWorkingTimeHourLessons.settingClassroom''classrooms')
  581.         ->addSelect('classrooms')
  582.         ->andWhere('classrooms.establishment = :establishment')
  583.         ->setParameter('establishment'$establishment);
  584.             if (null != $school_teacher) {
  585.                 $school_teacher_call_sheets $school_teacher_call_sheets
  586.                 ->andWhere('entity.schoolTeacher = :schoolTeacher')
  587.                 ->setParameter('schoolTeacher'$school_teacher);
  588.             }
  589.             
  590.             $school_teacher_call_sheets $school_teacher_call_sheets
  591.             ->andWhere('entity.create_date BETWEEN :startDate AND :endDate')
  592.             ->setParameter('startDate'$startDate)
  593.             ->setParameter('endDate'$endDate)
  594.             ->andWhere('entity.schoolYear = :schoolYear')
  595.             ->setParameter('schoolYear'$schoolYear)
  596.             ->orderBy('entity.id''DESC')
  597.             ->getQuery()
  598.             ->getResult();
  599.             //dd($school_teacher_call_sheets);
  600.         
  601.         $school_teachers $schoolTeacherRepository->createQueryBuilder('entity')
  602.             ->innerJoin('entity.schoolWorkingTimeHourLessons''schoolWorkingTimeHourLessons')
  603.             ->addSelect('schoolWorkingTimeHourLessons')
  604.             ->innerJoin('schoolWorkingTimeHourLessons.settingClassroom''classrooms')
  605.             ->addSelect('classrooms')
  606.             ->andWhere('classrooms.establishment = :establishment')
  607.             ->setParameter('establishment'$establishment)
  608.             ->andWhere('entity.schoolYear = :schoolYear')
  609.             ->setParameter('schoolYear'$schoolYear)
  610.             ->orderBy('entity.id''DESC')
  611.             ->getQuery()
  612.             ->getResult()
  613.             ;
  614.         $template 'school/print/school_teacher_call_sheets.html.twig';
  615.         $html $this->renderView($template, [
  616.             'school_teacher' => $school_teacher,
  617.             'school_teachers' => $school_teachers,
  618.             'startDate' => $startDate,
  619.             'endDate' => $endDate,
  620.             'dayDiff' => $dayDiff,
  621.             'school_year' => $schoolYear,
  622.             'school_teacher_call_sheets' => $school_teacher_call_sheets,
  623.             'setting' => $establishment,
  624.         ]);
  625.         $footer $this->renderView('print/footer.html.twig', ['setting' => $establishment]);
  626.         $header $this->renderView('print/header.html.twig', ['setting' => $establishment]);
  627.         $options = [
  628.             'orientation' => 'Landscape'
  629.             //'header-html' => $header
  630.             //'footer-html' => $footer
  631.         ];
  632.         $file_name "RAPPORT_APPEL_" time() . ".pdf";
  633.         try {
  634.             $knpSnappyPdf->generateFromHtml($html$this->getParameter('app.app_directory').'/downloads/report-cards/' $file_name$optionstrue);
  635.         } catch (\Throwable $th) {
  636.             $this->addFlash('info'"Effectué");
  637.         }
  638.         return $this->redirectToRoute('preview', [
  639.             'file' => $file_name,
  640.             'dir' => 'report-cards',
  641.         ]);
  642.     }
  643.     /**
  644.      * @Route("/month-report-print", name="school_teacher_call_sheet_month_report_print", methods={"GET"})
  645.     */
  646.     public function month_report_print(Request $requestPdf $knpSnappyPdfSchoolTeacherRepository $schoolTeacherRepositorySettingClassroomRepository $settingClassroomRepositorySettingTimeTableRepository $settingTimeTableRepository)
  647.     {
  648.         /**@var User $user */
  649.         $user $this->getUser();
  650.         $schoolYear $user->getSchoolYear();
  651.         $establishment $user->getEstablishment();
  652.         $schoolTeacher $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear], []);
  653.         $template 'school/print/school_teacher_call_month_sheets.html.twig';
  654.         $html $this->renderView($template, [
  655.             'school_year' => $schoolYear,
  656.             'schoolTeacher' => $schoolTeacher,
  657.             'month' => $request->get('month'),
  658.             'setting_classroom' => $settingClassroomRepository->findOneBy(['id' => $request->get('setting_classroom')]),
  659.             'setting_time_tables' => $settingTimeTableRepository->findBy(['establishment' => $establishment], ['label' => 'ASC']),
  660.             'setting' => $establishment,
  661.         ]);
  662.         $footer $this->renderView('print/footer.html.twig', ['setting' => $establishment]);
  663.         $header $this->renderView('print/header.html.twig', ['setting' => $establishment]);
  664.         $options = [
  665.             'orientation' => 'Portrait',
  666.             'page-size' => 'A4',
  667.             'footer-html' => $footer,
  668.             'header-html' => $header
  669.         ];
  670.         $file_name "RAPPORT_APPEL_.pdf";
  671.         try {
  672.             $knpSnappyPdf->generateFromHtml($html$this->getParameter('app.app_directory').'/downloads/report-cards/' $file_name$optionstrue);
  673.         } catch (\Throwable $th) {
  674.             $this->addFlash('info'"Effectué");
  675.         }
  676.         return $this->redirectToRoute('preview', [
  677.             'file' => $file_name,
  678.             'dir' => 'report-cards',
  679.         ]);
  680.     }
  681.     /**
  682.      * @Route("/teacher-present", name="school_call_sheet_teacher_present", methods={"GET"})
  683.      */
  684.     public function teacher_present(Request $requestPdf $knpSnappyPdfSchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepositorySchoolWorkingTimeHourLessonRepository $schoolWorkingTimeHourLessonRepository): Response
  685.     {
  686.         /**@var User $user */
  687.         $user $this->getUser();
  688.         $schoolYear $user->getSchoolYear();
  689.         $establishment $user->getEstablishment();
  690.         $school_working_time_hour_lessons = new ArrayCollection();
  691.         $create_date = new DateTimeImmutable($request->get('create_date'));
  692.         if ($request->get('submit') == '_submit_') {
  693.                 $school_working_time_hour_lessons $schoolWorkingTimeHourLessonRepository->createQueryBuilder('entity')
  694.                 ->andWhere('entity.day = :day')
  695.                 ->setParameter('day'DateIntervalManage::FRENCH_DAY[$create_date->format('D')]) 
  696.                 ->innerJoin('entity.establishment''establishment')
  697.                 ->addSelect('establishment')
  698.                 ->innerJoin('entity.schoolTeacher''schoolTeacher')
  699.                 ->addSelect('schoolTeacher')
  700.                 ->andWhere('establishment.establishmentGroup = :establishmentGroup')
  701.                 ->setParameter('establishmentGroup'$establishment->getEstablishmentGroup())
  702.                 ->andWhere('entity.schoolYear = :schoolYear')
  703.                 ->setParameter('schoolYear'$schoolYear)
  704.                 ->orderBy('entity.id''DESC')
  705.                 ->getQuery()
  706.                 ->getResult();
  707.             if ($request->get('resulst') == '1') {
  708.                 $html $this->renderView('school/print/teacher_present.html.twig', [
  709.                     /* 'school_teacher_call_sheets' => $school_teacher_call_sheets, */
  710.                     'school_working_time_hour_lessons' => $school_working_time_hour_lessons,
  711.                     'schoolTeacherCallSheetRepository' => $schoolTeacherCallSheetRepository,
  712.                     'create_date' => $create_date,
  713.                     'school_year' => $schoolYear,
  714.                     'setting' => $establishment,
  715.                 ]);
  716.         
  717.                 $footer $this->renderView('print/footer.html.twig', ['setting' => $establishment]);
  718.                 $header $this->renderView('print/header.html.twig', ['setting' => $establishment]);
  719.                 $options = [
  720.                     'orientation' => 'Portrait',
  721.                     'header-html' => $header,
  722.                     'footer-html' => $footer
  723.                 ];
  724.         
  725.                 $file_name "PRESENCE_ENSEIGNANT_.pdf";
  726.         
  727.                 try {
  728.                     $knpSnappyPdf->generateFromHtml($html$this->getParameter('app.app_directory').'/downloads/report-cards/' $file_name$optionstrue);
  729.                 } catch (\Throwable $th) {
  730.                     $this->addFlash('info'"Effectué");
  731.                 }
  732.         
  733.                 return $this->redirectToRoute('preview', [
  734.                     'file' => $file_name,
  735.                     'dir' => 'report-cards',
  736.                 ]);
  737.             }
  738.         }
  739.         return $this->render('school/school_teacher_call_sheet/teacher_present.html.twig', [
  740.             /* 'school_teacher_call_sheets' => $school_teacher_call_sheets, */
  741.             'school_working_time_hour_lessons' => $school_working_time_hour_lessons,
  742.             'schoolTeacherCallSheetRepository' => $schoolTeacherCallSheetRepository,
  743.             'create_date' => $create_date,
  744.         ]);
  745.     }
  746.     /**
  747.      * @Route("/{aproved-selection", name="school_teacher_call_sheet_aproved_selection", methods={"GET"})
  748.     */
  749.     public function aproved_selection(Request $requestSchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepositorySchoolTeacherAbsenceRepository $schoolTeacherAbsenceRepository): Response
  750.     {
  751.         $list $request->get('entities');
  752.         $entityManager $this->getDoctrine()->getManager();
  753.         $errors 0;
  754.         $success 0;
  755.         foreach ($list as $key => $id) {
  756.             $schoolTeacherCallSheet $schoolTeacherCallSheetRepository->findOneBy(['id' => intval($id)], []);
  757.             if ($schoolTeacherCallSheet != null) {
  758.                 $schoolTeacherAbsences $schoolTeacherAbsenceRepository->createQueryBuilder('entity')
  759.                 ->innerJoin('entity.schoolWorkingTimeHourLesson''schoolWorkingTimeHourLesson')
  760.                 ->addSelect('schoolWorkingTimeHourLesson')
  761.                 ->andWhere('schoolWorkingTimeHourLesson.schoolTeacher = :schoolTeacher')
  762.                 ->setParameter('schoolTeacher'$schoolTeacherCallSheet->getSchoolTeacher())
  763.                 ->andWhere('schoolWorkingTimeHourLesson.day = :day')
  764.                 ->setParameter('day'$schoolTeacherCallSheet->getDay())
  765.                 ->andWhere('schoolWorkingTimeHourLesson.settingTimeTable = :settingTimeTable')
  766.                 ->setParameter('settingTimeTable'$schoolTeacherCallSheet->getSettingTimeTable())
  767.                 ->getQuery()
  768.                 ->getResult();
  769.                 if (count($schoolTeacherAbsences) <= 0) {
  770.                     if ($schoolTeacherCallSheet->getIsValidated() ) {
  771.                         if (!$schoolTeacherCallSheet->getIsAproved()) {
  772.                             $entityManager $this->getDoctrine()->getManager();
  773.                             $schoolTeacherTimeSheet = new SchoolTeacherTimeSheet();
  774.                             $schoolTeacherTimeSheet->setEstablishment($schoolTeacherCallSheet->getEstablishment());
  775.                             $schoolTeacherTimeSheet->setSchoolYear($schoolTeacherCallSheet->getSchoolYear());
  776.                             $schoolTeacherTimeSheet->setCreateDate($schoolTeacherCallSheet->getCreateDate());
  777.                             $schoolTeacherTimeSheet->setNbHour(1);
  778.                             if (null != $schoolTeacherCallSheet->getSettingTimeTable()) {
  779.                                 if ($schoolTeacherCallSheet->getSettingTimeTable()->getDefautDuration() > 0) {
  780.                                     $schoolTeacherTimeSheet->setNbHour($schoolTeacherCallSheet->getSettingTimeTable()->getDefautDuration());
  781.                                 }
  782.                             }
  783.                             $schoolTeacherTimeSheet->setSchoolMatter($schoolTeacherCallSheet->getSchoolMatter());
  784.                             $schoolTeacherTimeSheet->setSchoolTeacher($schoolTeacherCallSheet->getSchoolTeacher());
  785.                             $schoolTeacherTimeSheet->setSchoolWorkingTime($schoolTeacherCallSheet->getSchoolWorkingTime());
  786.                             $schoolTeacherTimeSheet->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
  787.                             $schoolTeacherTimeSheet->setSettingClassroom($schoolTeacherCallSheet->getSettingClassroom());
  788.                             $schoolTeacherTimeSheet->setSettingTimeTable($schoolTeacherCallSheet->getSettingTimeTable());
  789.                             $entityManager->persist($schoolTeacherTimeSheet);
  790.                             $schoolTeacherCallSheet->setIsAproved(true);
  791.                             $success++;
  792.                         }
  793.                     }
  794.                 }
  795.             }
  796.         }
  797.         
  798.         try {
  799.             $entityManager->flush();
  800.             $this->addFlash('success'$success" fiche(s) approuvée(s)");
  801.             return $this->json(['code' => 200'message' => $success" fiche(s) approuvée(s)"], 200);
  802.         } catch (\Throwable $th) {
  803.             //$th->getMessage()
  804.             $this->addFlash('warning'$th->getMessage());
  805.         }
  806.         
  807.         $this->addFlash('warning'"Approbation non effectuée");
  808.         return $this->json(['code' => 500'message' => "Approbation non effectuée"], 200);
  809.     }
  810.     /**
  811.      * @Route("/disaproved-selection", name="school_teacher_call_sheet_disaproved_selection", methods={"GET"})
  812.     */
  813.     public function disaproved_selection(Request $requestSchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepositorySchoolTeacherAbsenceRepository $schoolTeacherAbsenceRepository): Response
  814.     {
  815.         $list $request->get('entities');
  816.         $entityManager $this->getDoctrine()->getManager();
  817.         $errors 0;
  818.         $success 0;
  819.         foreach ($list as $key => $id) {
  820.             $schoolTeacherCallSheet $schoolTeacherCallSheetRepository->findOneBy(['id' => intval($id)], []);
  821.             if ($schoolTeacherCallSheet != null) {
  822.                 if ($schoolTeacherCallSheet->getIsAproved()) {
  823.                     foreach ($schoolTeacherCallSheet->getSchoolTeacherTimeSheets() as $key => $schoolTeacherTimeSheet) {
  824.                         $entityManager->remove($schoolTeacherTimeSheet);
  825.                     }
  826.                     
  827.                     $schoolTeacherCallSheet->setIsAproved(false);
  828.                     $success++;
  829.                 }
  830.             }
  831.         }
  832.         
  833.         try {
  834.             $entityManager->flush();
  835.             $this->addFlash('success'$success" fiche(s) désapprouvée(s)");
  836.             return $this->json(['code' => 200'message' => $success" fiche(s) désapprouvée(s)"], 200);
  837.         } catch (\Throwable $th) {
  838.             //$th->getMessage()
  839.             $this->addFlash('warning'$th->getMessage());
  840.         }
  841.         
  842.         $this->addFlash('warning'"Traitement non effectuée");
  843.         return $this->json(['code' => 500'message' => "Traitement non effectuée"], 200);
  844.     }
  845. }