src/Controller/School/SchoolTeacherCallSheetLineController.php line 27

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\Service\SMSSender;
  7. use Informagenie\OrangeSDK;
  8. use App\Entity\CommunicationMessage;
  9. use App\Entity\SchoolTeacherCallSheetLine;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use App\Repository\SettingClassroomRepository;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use App\Repository\SchoolTeacherCallSheetLineRepository;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. /**
  17.  * @Route("/school/teacher-call-sheet-line")
  18.  */
  19. class SchoolTeacherCallSheetLineController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/{id}/set-to-present", name="school_teacher_call_sheet_line_set_to_present", methods={"GET"})
  23.     */
  24.     public function setToPresent(SchoolTeacherCallSheetLine $schoolTeacherCallSheetLine): Response
  25.     {
  26.         $entityManager $this->getDoctrine()->getManager();
  27.         $schoolTeacherCallSheetLine->setIsPresente(true);
  28.         $schoolTeacherCallSheetLine->setIsAbsent(false);
  29.         try {
  30.             $entityManager->flush();
  31.             //$this->addFlash('success', "Traitement effectué");
  32.             return $this->json([
  33.                 'code' => 200
  34.                 'message' => "Présent(e)",
  35.                 'tr' => "#tr-".$schoolTeacherCallSheetLine->getId(),
  36.                 'td' => "#td-".$schoolTeacherCallSheetLine->getId(),
  37.                 'btnPresent' => "#btn-present-".$schoolTeacherCallSheetLine->getId(),
  38.                 'isCanBeSaved' => $schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->isCanBeSaved()
  39.             ], 200);
  40.         } catch (\Throwable $th) {
  41.             //$th->getMessage()
  42.             $this->addFlash('warning'$th->getMessage());
  43.         }
  44.         
  45.         $this->addFlash('warning'"Traitement non effectué");
  46.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  47.     }
  48.     /**
  49.      * @Route("/{id}/set-to-absent", name="school_teacher_call_sheet_line_set_to_absent", methods={"GET"})
  50.     */
  51.     public function setToAbsent(SchoolTeacherCallSheetLine $schoolTeacherCallSheetLine): Response
  52.     {
  53.         $entityManager $this->getDoctrine()->getManager();
  54.         $schoolTeacherCallSheetLine->setIsPresente(false);
  55.         $schoolTeacherCallSheetLine->setIsAbsent(true);
  56.         try {
  57.             $entityManager->flush();
  58.             //$this->addFlash('success', "Traitement effectué");
  59.             return $this->json([
  60.                 'code' => 200
  61.                 'message' => "Absent(e)",
  62.                 'tr' => "#tr-".$schoolTeacherCallSheetLine->getId(),
  63.                 'td' => "#td-".$schoolTeacherCallSheetLine->getId(),
  64.                 'btnAbsent' => "#btn-absent-".$schoolTeacherCallSheetLine->getId(),
  65.                 'isCanBeSaved' => $schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->isCanBeSaved()
  66.             ], 200);
  67.         } catch (\Throwable $th) {
  68.             //$th->getMessage()
  69.             $this->addFlash('warning'$th->getMessage());
  70.         }
  71.         
  72.         $this->addFlash('warning'"Traitement non effectué");
  73.         return $this->json(['code' => 500'message' => "Traitement non effectué"], 200);
  74.     }
  75.     /**
  76.      * @Route("/student-present-ns", name="school_call_sheet_line_student_present_ns", methods={"GET"})
  77.      */
  78.     public function student_present_ns(Request $requestPdf $knpSnappyPdfSchoolTeacherCallSheetLineRepository $schoolTeacherCallSheetLineRepositorySettingClassroomRepository $settingClassroomRepository): Response
  79.     {
  80.         /**@var User $user */
  81.         $user $this->getUser();
  82.         $schoolYear $user->getSchoolYear();
  83.         $establishment $this->getUser()->getEstablishment();
  84.         
  85.         $create_date = new DateTimeImmutable($request->get('create_date'));
  86.         $settingClassroom $settingClassroomRepository->findOneBy(['id' => $request->get('setting_classroom')], []);
  87.         $school_teacher_call_sheet_lines $schoolTeacherCallSheetLineRepository->createQueryBuilder('entity')
  88.             ->innerJoin('entity.schoolTeacherCallSheet''schoolTeacherCallSheet')
  89.             ->addSelect('schoolTeacherCallSheet')
  90.             ->andWhere('schoolTeacherCallSheet.create_date = :create_date')
  91.             ->setParameter('create_date'$create_date);
  92.             if (null != $settingClassroom) {
  93.                 $school_teacher_call_sheet_lines $school_teacher_call_sheet_lines
  94.                 ->andWhere('schoolTeacherCallSheet.settingClassroom = :settingClassroom')
  95.                 ->setParameter('settingClassroom'$settingClassroom);
  96.             }
  97.             $school_teacher_call_sheet_lines $school_teacher_call_sheet_lines
  98.             ->andWhere('entity.establishment = :establishment')
  99.             ->setParameter('establishment'$establishment)
  100.             ->andWhere('entity.schoolYear = :schoolYear')
  101.             ->setParameter('schoolYear'$schoolYear)
  102.             ->andWhere('entity.is_presente = :is_presente')
  103.             ->setParameter('is_presente'1)
  104.             ->orderBy('entity.id''DESC')
  105.             ->getQuery()
  106.             ->getResult();
  107.         if ($request->get('resulst') == '1') {
  108.             $html $this->renderView('school/print/student_present_ns.html.twig', [
  109.                 'school_teacher_call_sheet_lines' => $school_teacher_call_sheet_lines,
  110.                 'setting_classroom' => $settingClassroom,
  111.                 'create_date' => $create_date,
  112.                 'school_year' => $schoolYear,
  113.                 'setting' => $establishment,
  114.             ]);
  115.     
  116.             $footer $this->renderView('print/footer.html.twig', ['setting' => $establishment]);
  117.             $header $this->renderView('print/header.html.twig', ['setting' => $establishment]);
  118.             $options = [
  119.                 'orientation' => 'Portrait',
  120.                 'header-html' => $header,
  121.                 'footer-html' => $footer
  122.             ];
  123.     
  124.             $file_name "ELEVES_PRES_NON_AJOUR_.pdf";
  125.     
  126.             try {
  127.                 $knpSnappyPdf->generateFromHtml($html$this->getParameter('app.app_directory').'/downloads/report-cards/' $file_name$optionstrue);
  128.             } catch (\Throwable $th) {
  129.                 $this->addFlash('info'"Effectué");
  130.             }
  131.     
  132.             return $this->redirectToRoute('preview', [
  133.                 'file' => $file_name,
  134.                 'dir' => 'report-cards',
  135.             ]);
  136.         }
  137.         return $this->render('school/school_teacher_call_sheet_line/student_present_ns.html.twig', [
  138.             'school_teacher_call_sheet_lines' => $school_teacher_call_sheet_lines,
  139.             'setting_classroom' => $settingClassroom,
  140.             'create_date' => $create_date,
  141.             'setting_classrooms' => $settingClassroomRepository->findBy(['establishment' => $establishment'schoolYear' => $schoolYear], ['label' => 'ASC']),
  142.         ]);
  143.     }
  144.     /**
  145.      * @Route("/set-presents", name="school_teacher_call_sheet_line_set_to_presents", methods={"GET"})
  146.     */
  147.     public function set_to_presents(Request $requestSchoolTeacherCallSheetLineRepository $schoolTeacherCallSheetLineRepository): Response
  148.     {
  149.         $list $request->get('entities');
  150.         $entityManager $this->getDoctrine()->getManager();
  151.         $errors 0;
  152.         $success 0;
  153.         foreach ($list as $key => $id) {
  154.             $schoolTeacherCallSheetLine $schoolTeacherCallSheetLineRepository->findOneBy(['id' => intval($id)], []);
  155.             if ($schoolTeacherCallSheetLine != null) {
  156.                 if (!$schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->getIsAproved()) { 
  157.                     $schoolTeacherCallSheetLine->setIsAbsent(false);
  158.                     $schoolTeacherCallSheetLine->setIsPresente(true);
  159.                     $success++;
  160.                 }
  161.             }
  162.         }
  163.         
  164.         try {
  165.             $entityManager->flush();
  166.             $this->addFlash('success'$success" élève(s) marqué(s) présent(s)");
  167.             return $this->json(['code' => 200'message' => $success" élève(s) marqué(s) présent(s)"], 200);
  168.         } catch (\Throwable $th) {
  169.             $this->addFlash('warning'$th->getMessage());
  170.         }
  171.         
  172.         $this->addFlash('warning'"Traitement non effectuée");
  173.         return $this->json(['code' => 500'message' => "Traitement non effectuée"], 200);
  174.     }
  175.     /**
  176.      * @Route("/set-absents", name="school_teacher_call_sheet_line_set_to_absents", methods={"GET"})
  177.     */
  178.     public function set_to_absents(Request $requestSchoolTeacherCallSheetLineRepository $schoolTeacherCallSheetLineRepository): Response
  179.     {
  180.         $list $request->get('entities');
  181.         $entityManager $this->getDoctrine()->getManager();
  182.         $errors 0;
  183.         $success 0;
  184.         
  185.         foreach ($list as $key => $id) {
  186.             $schoolTeacherCallSheetLine $schoolTeacherCallSheetLineRepository->findOneBy(['id' => intval($id)], []);
  187.             if ($schoolTeacherCallSheetLine != null) {
  188.                 if (!$schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->getIsAproved()) { 
  189.                     $schoolTeacherCallSheetLine->setIsAbsent(true);
  190.                     $schoolTeacherCallSheetLine->setIsPresente(false);
  191.                     $success++;
  192.                 }
  193.             }
  194.         }
  195.         try {
  196.             $entityManager->flush();
  197.             $this->addFlash('success'$success" élève(s) marqué(es) absent(es)");
  198.             return $this->json(['code' => 200'message' => $success" élève(s) marqué(es) absent(es)"], 200);
  199.         } catch (\Throwable $th) {
  200.             $this->addFlash('warning'$th->getMessage());
  201.         }
  202.         
  203.         $this->addFlash('warning'"Traitement non effectuée");
  204.         return $this->json(['code' => 500'message' => "Traitement non effectuée"], 200);
  205.     }
  206.     /**
  207.      * @Route("/send-adsense-sms", name="school_teacher_call_sheet_line_send_adsense_sms", methods={"GET"})
  208.     */
  209.     public function send_adsense_sms(Request $requestSchoolTeacherCallSheetLineRepository $schoolTeacherCallSheetLineRepositorySMSSender $smsSender): Response
  210.     {
  211.         /**@var User $user */
  212.         $user $this->getUser();
  213.         $schoolYear $user->getSchoolYear();
  214.         $establishment $user->getEstablishment();
  215.         
  216.         $list $request->get('entities');
  217.         $entityManager $this->getDoctrine()->getManager();
  218.         $errors 0;
  219.         $success 0;
  220.         
  221.         foreach ($list as $key => $id) {
  222.             $schoolTeacherCallSheetLine $schoolTeacherCallSheetLineRepository->findOneBy(['id' => intval($id)], []);
  223.             if ($schoolTeacherCallSheetLine != null) {
  224.                 $schoolTeacherCallSheet $schoolTeacherCallSheetLine->getSchoolTeacherCallSheet();
  225.                 if (!$schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->getIsAproved()) { 
  226.                     if ($establishment->getIsSendAbsenceSms()){
  227.                         $sms = new OrangeSDK(CommunicationMessage::SENDER_ID);
  228.                         //foreach ($schoolTeacherCallSheet->getSchoolTeacherCallSheetLines() as $key => $schoolTeacherCallSheetLine) {
  229.                             if ($schoolTeacherCallSheetLine->getIsAbsent()) {
  230.                                 $message "";
  231.                                 $contacts = [];
  232.                                 $contacts[] = '225'.str_replace(' ''',trim($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getNotificationPhoneNumber()));
  233.                                 $contact '225'.str_replace(' ''',trim($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getNotificationPhoneNumber()));
  234.                                 
  235.                                 $message $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getName()." A ETE ABSENT ";
  236.                                 $message $message " de ".$schoolTeacherCallSheet->getSettingTimeTable()->getLabel() ;
  237.                                 $message $message " AU COURS DE " $schoolTeacherCallSheet->getSchoolMatter()->getLabel();
  238.                                 $message $message " CE " $schoolTeacherCallSheet->getCreateDate()->format('d-m-Y');
  239.                                 
  240.             
  241.                                 if ($establishment->getSmsGateway() == 'OCI') {
  242.                                     $oci_response $sms->message($message)
  243.                                     ->as($establishment->getOciSmsSender())
  244.                                     ->from($establishment->getOciSmsPhone())
  245.                                     ->to(intval($contact));
  246.             
  247.                                     try {
  248.                                         $oci_response->send();
  249.                                     } catch (\Throwable $th) {
  250.                                         $this->addFlash('warning'$th->getMessage());
  251.                                     }
  252.             
  253.                                     $communicationMessage = new CommunicationMessage();
  254.                                     $communicationMessage->setCode($contact.$schoolTeacherCallSheetLine->getId());
  255.                                     $communicationMessage->setContacts($contacts);
  256.                                     $communicationMessage->setContent($message);
  257.                                     $communicationMessage->setEstablishment($establishment);
  258.                                     $communicationMessage->setType($smsSender::UNICODE_CHARSET);
  259.                                     $entityManager->persist($communicationMessage);
  260.                                 }else {
  261.                                     
  262.                                     $response $smsSender->sendSmsByEstablishment($establishment$message$contacts$smsSender::UNICODE_CHARSET);
  263.                                     $responses explode(':'$response);
  264.                                     $code trim($responses[1]);
  265.             
  266.                                     $communicationMessage = new CommunicationMessage();
  267.                                     $communicationMessage->setCode($code);
  268.                                     $communicationMessage->setContacts($contacts);
  269.                                     $communicationMessage->setContent($message);
  270.                                     $communicationMessage->setEstablishment($establishment);
  271.                                     $communicationMessage->setType($smsSender::UNICODE_CHARSET);
  272.                                     $entityManager->persist($communicationMessage);
  273.                                 }
  274.                             }
  275.                         //}
  276.                         
  277.                     }
  278.                     $success++;
  279.                 }
  280.             }
  281.         }
  282.         try {
  283.             $entityManager->flush();
  284.             $this->addFlash('success'$success" SMS envoyé(s)");
  285.             return $this->json(['code' => 200'message' => $success" SMS envoyé(s)"], 200);
  286.         } catch (\Throwable $th) {
  287.             $this->addFlash('warning'$th->getMessage());
  288.         }
  289.         
  290.         $this->addFlash('warning'"Traitement non effectuée");
  291.         return $this->json(['code' => 500'message' => "Traitement non effectuée"], 200);
  292.     }
  293. }