src/Controller/App/ChildController.php line 43

  1. <?php
  2. namespace App\Controller\App;
  3. use App\Entity\User;
  4. use App\Form\PostType;
  5. use DateTime;
  6. use App\Entity\Child;
  7. use App\Entity\Post;
  8. use App\Form\ChildType;
  9. use App\Entity\Location;
  10. use App\Entity\Pointing;
  11. use App\Entity\Classroom;
  12. use App\Entity\FamilyMember;
  13. use App\Entity\Subscription;
  14. use App\Form\ChildTypeBasic;
  15. use App\Service\FileUploader;
  16. use App\Form\ChildOverviewType;
  17. use App\Form\PointingEditNoteType;
  18. use App\Form\SubscriptionTypeBasic;
  19. use App\Repository\ChildRepository;
  20. use App\Repository\PointingRepository;
  21. use Doctrine\ORM\EntityManagerInterface;
  22. use Endroid\QrCode\Builder\BuilderInterface;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\Response;
  25. use Symfony\Component\Routing\Annotation\Route;
  26. use Symfony\Component\HttpFoundation\JsonResponse;
  27. use Symfony\Component\Serializer\SerializerInterface;
  28. use Symfony\Contracts\Translation\TranslatorInterface;
  29. use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
  30. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  31. #[Route('/app/child')]
  32. class ChildController extends AbstractController
  33. {
  34.     public function __construct(private TranslatorInterface $translator)
  35.     {
  36.     }
  37.     #[Route('/'name'app_child_index'methods: ['GET''POST'])]
  38.     public function index(Request $requestChildRepository $childRepositoryFileUploader $fileUploader): Response
  39.     {
  40.         if ($request->isXmlHttpRequest()) {
  41.             if ($this->isCsrfTokenValid('child_type_basic'$_POST['child_type_basic']['_token'])) {
  42.                 $child = new Child();
  43.                 $form $this->createForm(ChildTypeBasic::class, $child);
  44.                 $address = new Location();
  45.                 $address->setCountry('DZ');
  46.                 $address->setWilaya('Boumerdès');
  47.                 $child->setAddress($address);
  48.                 $child
  49.                     ->setFirstName($_POST['child_type_basic']['first_name'])
  50.                     ->setLastName($_POST['child_type_basic']['last_name'])
  51.                     ->setGender($_POST['child_type_basic']['gender'])
  52.                     ->setBirthDate(new DateTime($_POST['child_type_basic']['birth_date']))
  53.                     ->setBirthPlace($_POST['child_type_basic']['birth_place'])
  54.                     ->setBlood($_POST['child_type_basic']['blood']);
  55.                 $form->handleRequest($request);
  56.                 $photo $form->get('photo')->getData();
  57.                 if ($photo) {
  58.                     $uploadedFileName $fileUploader->upload($photo'children_dir');
  59.                     $child->setPhoto($uploadedFileName);
  60.                 }
  61.                 $childRepository->add($childtrue);
  62.                 return new JsonResponse(['status' => 'ok''data' => $child->getId(), 'msg' => $this->translator->trans('Enfant crée !')]);
  63.             } else {
  64.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  65.             }
  66.         }
  67.         $child = new Child();
  68.         $address = new Location();
  69.         $address->setCountry('DZ');
  70.         $address->setWilaya('Boumerdès');
  71.         $child->setAddress($address);
  72.         $form $this->createForm(ChildTypeBasic::class, $child);
  73.         $edit_form $this->createForm(ChildTypeBasic::class, $child, [
  74.             'action' => $this->generateUrl('app_child_edit_ajax', ['id' => '1']),
  75.             'method' => 'POST',
  76.             'attr' => ['name' => 'child_type_basic_edit']
  77.         ]);
  78.         return $this->render('app/child/index.html.twig', [
  79.             'children' => $childRepository->findAll(),
  80.             'form' => $form->createView(),
  81.             'edit_form' => $edit_form->createView(),
  82.         ]);
  83.     }
  84.     #[Route('/new'name'app_child_new'methods: ['GET''POST'])]
  85.     public function new(Request $requestChildRepository $childRepositoryFileUploader $fileUploader): Response
  86.     {
  87.         return $this->redirectToRoute('app_child_index', [], Response::HTTP_SEE_OTHER);
  88.         // $child = new Child();
  89.         // $address = new Location();
  90.         // $address->setCountry('DZ');
  91.         // $address->setWilaya('Boumerdès');
  92.         // $child->setAddress($address);
  93.         // $form = $this->createForm(ChildType::class, $child);
  94.         // $form->handleRequest($request);
  95.         // if ($form->isSubmitted() && $form->isValid()) {
  96.         //     $photo = $form->get('photo')->getData();
  97.         //     if ($photo) {
  98.         //         $uploadedFileName = $fileUploader->upload($photo, 'children_dir');
  99.         //         $child->setPhoto($uploadedFileName);
  100.         //     }
  101.         //     $childRepository->add($child, true);
  102.         //     $this->addFlash('success', $this->translator->trans('Succès !!'));
  103.         //     return $this->redirectToRoute('app_child_index', [], Response::HTTP_SEE_OTHER);
  104.         // }
  105.         // return $this->renderForm('app/child/new.html.twig', [
  106.         //     'child' => $child,
  107.         //     'form' => $form,
  108.         // ]);
  109.     }
  110.     #[Route('/search'name'app_child_search'methods: ['GET'])]
  111.     public function search(Request $requestSerializerInterface $serializerChildRepository $childRepository): Response
  112.     {
  113.         $query $request->query->get('term');
  114.         $children $childRepository->search($query);
  115.         $result = [
  116.             'children' => $children,
  117.         ];
  118.         $json $serializer->serialize($result'json', []);
  119.         return $this->json(json_decode($json));
  120.     }
  121.     #[Route('/{id}'name'app_child_show'methods: ['GET'])]
  122.     public function qrcode(Child $childEntityManagerInterface $manager): Response
  123.     {
  124.         $subscription = new Subscription();
  125.         $subscription->setChild($child);
  126.         $form_new_subscription $this->createForm(SubscriptionTypeBasic::class, $subscription, [
  127.             'action' => $this->generateUrl('app_subscription_index', []),
  128.             'method' => 'POST'
  129.         ]);
  130.         $pointing = new Pointing();
  131.         // $pointing->setChild($child);
  132.         // $form_new_pointing = $this->createForm(PointingType::class, $pointing, [
  133.         //     'action' => $this->generateUrl('app_pointing_index', []),
  134.         //     'method' => 'POST'
  135.         // ]);
  136.         $edit_poiting_note_form $this->createForm(PointingEditNoteType::class, $pointing, [
  137.             'action' => $this->generateUrl('app_pointing_index', []),
  138.             'method' => 'POST'
  139.         ]);
  140.         $all_classrooms $manager->getRepository(Classroom::class)->findAll();
  141.         $all_familymembers $manager->getRepository(FamilyMember::class)->findAll();
  142.         $overview_form $this->createForm(ChildOverviewType::class, $child, [
  143.             'action' => $this->generateUrl('app_child_edit', ['id' => $child->getId()]),
  144.             'method' => 'POST',
  145.             'attr' => ['name' => 'child_overview_type_edit']
  146.         ]);
  147.         $activity_form $this->createForm(PostType::class);
  148.         return $this->render('app/child/show.html.twig', [
  149.             'child' => $child,
  150.             'form_new_subscription' => $form_new_subscription->createView(),
  151.             'edit_poiting_note_form' => $edit_poiting_note_form->createView(),
  152.             'all_classrooms' => $all_classrooms,
  153.             'all_familymembers' => $all_familymembers,
  154.             'overview_form' => $overview_form->createView(),
  155.             'activity_form' => $activity_form->createView(),
  156.         ]);
  157.     }
  158.     #[Route('/{id}/qrcode'name'app_child_show_qrcode'methods: ['GET'])]
  159.     public function show(Child $childBuilderInterface $customQrCodeBuilder): Response
  160.     {
  161.         $result $customQrCodeBuilder
  162.             ->data($child->getId())
  163.             ->labelText('AMGHAR')
  164.             ->size(512)
  165.             ->margin(20)
  166.             ->build();
  167.         $response = new Response();
  168.         $filename $child->getLastName() . ' ' $child->getFirstName() . '.svg';
  169.         $response->headers->set('Cache-Control''private');
  170.         $response->headers->set('Content-type''image/svg+xml');
  171.         $response->headers->set('Content-Disposition''attachment; filename="' $filename '";');
  172.         // $response->headers->set('Content-length', strlen($result->getString()));
  173.         $response->sendHeaders();
  174.         $response->setContent($result->getString());
  175.         return $response;
  176.     }
  177.     #[Route('/ajax/{id}'name'app_child_show_ajax'methods: ['GET'])]
  178.     public function show_ajax(Child $childSerializerInterface $serializer): Response
  179.     {
  180.         $json $serializer->serialize($child'json', ['groups' => ['read:child:basic''read:section:basic']]);
  181.         return $this->json(json_decode($json));
  182.         // return $this->redirectToRoute('app_child_index', [], Response::HTTP_SEE_OTHER);
  183.     }
  184.     #[Route('/{id}/edit'name'app_child_edit'methods: ['GET''POST'])]
  185.     public function edit(Request $requestChild $childChildRepository $childRepositoryFileUploader $fileUploader): Response
  186.     {
  187.         $form $this->createForm(ChildType::class, $child);
  188.         $form->handleRequest($request);
  189.         $overview_form $this->createForm(ChildOverviewType::class, $child);
  190.         $overview_form->handleRequest($request);
  191.         if ($overview_form->isSubmitted() && $overview_form->isValid()) {
  192.             $childRepository->add($childtrue);
  193.             $this->addFlash('success'$this->translator->trans('Succès !!'));
  194.             return $this->redirectToRoute('app_child_show', ['id' => $child->getId()], Response::HTTP_SEE_OTHER);
  195.         }
  196.         if ($form->isSubmitted() && $form->isValid()) {
  197.             $photo $form->get('photo')->getData();
  198.             if ($photo) {
  199.                 $uploadedFileName $fileUploader->upload($photo'children_dir');
  200.                 $child->setPhoto($uploadedFileName);
  201.             }
  202.             $childRepository->add($childtrue);
  203.             $this->addFlash('success'$this->translator->trans('Succès'));
  204.             return $this->redirectToRoute('app_child_index', [], Response::HTTP_SEE_OTHER);
  205.         }
  206.         return $this->renderForm('app/child/edit.html.twig', [
  207.             'child' => $child,
  208.             'form' => $form,
  209.         ]);
  210.     }
  211.     #[Route('/{id?}/edit/ajax'name'app_child_edit_ajax'methods: ['GET''POST'])]
  212.     public function edit_ajax(Request $requestChild $childChildRepository $childRepositoryFileUploader $fileUploaderEntityManagerInterface $manager): Response
  213.     {
  214.         if ($request->isXmlHttpRequest()) {
  215.             if ($this->isCsrfTokenValid('edit_child'$_POST['child_type_basic']['_token'])) {
  216.                 $form $this->createForm(ChildTypeBasic::class, $child);
  217.                 $child
  218.                     ->setFirstName($_POST['child_type_basic']['first_name'])
  219.                     ->setLastName($_POST['child_type_basic']['last_name'])
  220.                     ->setGender($_POST['child_type_basic']['gender'])
  221.                     ->setBirthDate(new DateTime($_POST['child_type_basic']['birth_date']))
  222.                     ->setBirthPlace($_POST['child_type_basic']['birth_place'])
  223.                     ->setBlood($_POST['child_type_basic']['blood']);
  224.                 $form->handleRequest($request);
  225.                 $photo $form->get('photo')->getData();
  226.                 if ($photo) {
  227.                     $uploadedFileName $fileUploader->upload($photo'children_dir');
  228.                     $child->setPhoto($uploadedFileName);
  229.                 }
  230.                 $childRepository->add($childtrue);
  231.                 return new JsonResponse(['status' => 'ok''data' => $child->getId(), 'msg' => $this->translator->trans('Enfant mis à jour !')]);
  232.             } else {
  233.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  234.             }
  235.         }
  236.     }
  237.     #[Route('/{id}'name'app_child_delete'methods: ['POST'])]
  238.     public function delete(Request $requestChild $childChildRepository $childRepository): Response
  239.     {
  240.         if ($this->isCsrfTokenValid('delete' $child->getId(), $request->request->get('_token'))) {
  241.             try {
  242.                 $childRepository->remove($childtrue);
  243.                 $this->addFlash('success'$this->translator->trans('Succès!!'));
  244.             } catch (\Exception $e) {
  245.                 $errorMessage $e->getMessage();
  246.                 $result explode(':'$errorMessage);
  247.                 $this->addFlash('error'$result[0]);
  248.             }
  249.         }
  250.         return $this->redirectToRoute('app_child_index', [], Response::HTTP_SEE_OTHER);
  251.     }
  252.     #[Route('/assign/classroom/{classroom}/{child}'name'app_child_assign_classroom'methods: ['GET'])]
  253.     public function assign_classroom(Child $childClassroom $classroomChildRepository $childRepository): Response
  254.     {
  255.         $child->addClassroom($classroom);
  256.         $childRepository->add($childtrue);
  257.         $this->addFlash('success'$this->translator->trans('Succès !!'));
  258.         return $this->redirectToRoute('app_child_show', ['id' => $child->getId()], Response::HTTP_SEE_OTHER);
  259.     }
  260.     #[Route('/unassign/classroom/{classroom}/{child}'name'app_child_unassign_classroom'methods: ['GET'])]
  261.     public function unassign_classroom(Child $childClassroom $classroomChildRepository $childRepository): Response
  262.     {
  263.         $child->removeClassroom($classroom);
  264.         $childRepository->add($childtrue);
  265.         $this->addFlash('success'$this->translator->trans('Succès !!'));
  266.         return $this->redirectToRoute('app_child_show', ['id' => $child->getId()], Response::HTTP_SEE_OTHER);
  267.     }
  268.     #[Route('/assign/family/member/{member}/{child}'name'app_child_assign_member'methods: ['GET'])]
  269.     public function assign_member(Child $childFamilyMember $memberChildRepository $childRepository): Response
  270.     {
  271.         $child->addFamily($member);
  272.         $childRepository->add($childtrue);
  273.         $this->addFlash('success'$this->translator->trans('Succès !!'));
  274.         return $this->redirectToRoute('app_child_show', ['id' => $child->getId()], Response::HTTP_SEE_OTHER);
  275.     }
  276.     #[Route('/unassign/family/member/{member}/{child}'name'app_child_unassign_member'methods: ['GET'])]
  277.     public function unassign_member(Child $childFamilyMember $memberChildRepository $childRepository): Response
  278.     {
  279.         $child->removeFamily($member);
  280.         $childRepository->add($childtrue);
  281.         $this->addFlash('success'$this->translator->trans('Succès !!'));
  282.         return $this->redirectToRoute('app_child_show', ['id' => $child->getId()], Response::HTTP_SEE_OTHER);
  283.     }
  284.     #[Route('/export/csv'name'app_child_export_csv'methods: ['GET'])]
  285.     public function export_csv(ChildRepository $childRepositoryNormalizerInterface $normalizerSerializerInterface $serializer): Response
  286.     {
  287.         $children $childRepository->findAll();
  288.         $csv $serializer->serialize($children'csv', ['groups' => ['read:child:export''read:section:export']]);
  289.         $csv str_replace('first_name''Prénom'$csv);
  290.         $csv str_replace('last_name''Nom'$csv);
  291.         $csv str_replace('gender''Genre'$csv);
  292.         $csv str_replace('birth_date''Date de naissance'$csv);
  293.         $csv str_replace('birth_place''Lieu de naissance'$csv);
  294.         $csv str_replace('blood''Groupe sanguin'$csv);
  295.         // id,,,,,,,diseases,allergies,food_habit,behavior,fears,interests,description,section,section.id,section.name,section.description,section.age_range ◀
  296.         header('Content-Type: text/csv; charset=utf-8');
  297.         header('Content-Disposition: attachment; filename="e-rawdha-children-' date('m-d-Y') . '.csv"');
  298.         header("Pragma: no-cache");
  299.         header("Expires: 0");
  300.         return new Response($csv);
  301.     }
  302.     #[Route('/{id}/check_in'name'app_child_check_in'methods: ['GET'])]
  303.     public function check_in(Child $childChildRepository $childRepositoryPointingRepository $pointingRepository): Response
  304.     {
  305.         $pointings $pointingRepository->findToday();
  306.         if (count($pointings) > 0) {
  307.             $pointing $pointings[count($pointings) - 1];
  308.             if (!$pointing->getCheckOut()) {
  309.                 $pointing->setCheckIn(new DateTime())
  310.                     ->setCreatedBy($this->getUser());
  311.             } else {
  312.                 $pointing = new Pointing();
  313.                 $pointing->setCheckIn(new DateTime())
  314.                     ->setCreatedBy($this->getUser());
  315.             }
  316.         } else {
  317.             $pointing = new Pointing();
  318.             $pointing->setCheckIn(new DateTime())
  319.                 ->setCreatedBy($this->getUser());
  320.         }
  321.         $child->addPointing($pointing);
  322.         $childRepository->add($childtrue);
  323.         $this->addFlash('success'$this->translator->trans('Succès !!'));
  324.         return $this->redirectToRoute('app_child_index', [], Response::HTTP_SEE_OTHER);
  325.     }
  326.     #[Route('/{id}/check_out'name'app_child_check_out'methods: ['GET'])]
  327.     public function check_out(Child $childChildRepository $childRepositoryPointingRepository $pointingRepository): Response
  328.     {
  329.         $pointings $pointingRepository->findToday();
  330.         if (count($pointings) > 0) {
  331.             $pointing $pointings[count($pointings) - 1];
  332.             $pointing->setCheckOut(new DateTime())
  333.                 ->setCreatedBy($this->getUser());
  334.         } else {
  335.             $pointing = new Pointing();
  336.             $pointing->setCheckIn(new DateTime())
  337.                 ->setCheckOut(new DateTime())
  338.                 ->setCreatedBy($this->getUser());
  339.         }
  340.         $childRepository->add($childtrue);
  341.         $this->addFlash('success'$this->translator->trans('Succès !!'));
  342.         return $this->redirectToRoute('app_child_index', [], Response::HTTP_SEE_OTHER);
  343.     }
  344.     #[Route('/registration/certificate'name'app_child_registration_certificate'methods: ['GET''POST'])]
  345.     public function certificate_of_subscription(ChildRepository $childRepository): Response
  346.     {
  347.         /** @var User */
  348.         $user $this->getUser();
  349.         $child $childRepository->find($_POST['child_registration_certificate']['id']);
  350.         $company $user->getCompany();
  351.         try {
  352.             $path_logo 'uploads/companies/' $company->getLogo();
  353.             $type pathinfo($path_logoPATHINFO_EXTENSION);
  354.             $data file_get_contents($path_logo);
  355.             $logo 'data:image/' $type ';base64,' base64_encode($data);
  356.         } catch (\Throwable $th) {
  357.             $logo 'data:image/png;base64,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';
  358.         }
  359.         $child_place_of_birth $_POST['child_registration_certificate']['child_place_of_birth'] !== '' $_POST['child_registration_certificate']['child_place_of_birth'] : $child->getBirthPlace();
  360.         $child_start_date DateTime::createFromFormat('d/m/Y'$_POST['child_registration_certificate']['child_start_date']);
  361.         $child_end_date null;
  362.         if (!array_key_exists('to_this_day'$_POST['child_registration_certificate'])) {
  363.             $child_end_date DateTime::createFromFormat('Y-m-d'$_POST['child_registration_certificate']['child_end_date']);
  364.         }
  365.         return $this->render('app/child/pdf-registration-certificat.html.twig', [
  366.             'company' => $company,
  367.             'manager' => $_POST['child_registration_certificate']['manager'],
  368.             'child' => $child,
  369.             'child_name' => $child->getFirstName() . ' ' $child->getLastName(),
  370.             'start_date' => new DateTime(),
  371.             'child_place_of_birth' => $child_place_of_birth,
  372.             'child_start_date' => $child_start_date,
  373.             'child_end_date' => $child_end_date,
  374.             'qrcode' => $child->getId(),
  375.             'logo' => $logo,
  376.         ]);
  377.     }
  378. }