src/Controller/App/FamilyMemberController.php line 31

  1. <?php
  2. namespace App\Controller\App;
  3. use App\Entity\Child;
  4. use App\Entity\Cardid;
  5. use App\Entity\Location;
  6. use App\Entity\FamilyMember;
  7. use App\Service\FileUploader;
  8. use App\Form\FamilyMemberType;
  9. use App\Form\FamilyMemberTypeBasic;
  10. use App\Repository\CardidRepository;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use App\Repository\FamilyMemberRepository;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\Serializer\SerializerInterface;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. #[Route('/app/family/member')]
  21. class FamilyMemberController extends AbstractController
  22. {
  23.     public function __construct(private TranslatorInterface $translator)
  24.     {
  25.     }
  26.     #[Route('/'name'app_family_member_index'methods: ['GET''POST'])]
  27.     public function index(Request $requestFamilyMemberRepository $familyMemberRepositoryFileUploader $fileUploader): Response
  28.     {
  29.         if ($request->isXmlHttpRequest()) {
  30.             if ($this->isCsrfTokenValid('family_member_type_basic'$_POST['family_member_type_basic']['_token'])) {
  31.                 $familyMember = new FamilyMember();
  32.                 $form $this->createForm(FamilyMemberTypeBasic::class, $familyMember);
  33.                 $cardid = new Cardid();
  34.                 $cardid->setName('Carte d\'identity');
  35.                 $familyMember->getIdentity()->add($cardid);
  36.                 $address = new Location();
  37.                 $address->setCountry('DZ');
  38.                 $address->setWilaya('Boumerdès');
  39.                 $familyMember->setAddress($address);
  40.                 $familyMember
  41.                     ->setFirstName($_POST['family_member_type_basic']['first_name'])
  42.                     ->setLastName($_POST['family_member_type_basic']['last_name'])
  43.                     // ->settype($_POST['family_member_type_basic']['type'])
  44.                     ->setEmail($_POST['family_member_type_basic']['email'])
  45.                     ->setPhone($_POST['family_member_type_basic']['phone'])
  46.                     ->setMobile($_POST['family_member_type_basic']['mobile'])
  47.                     ->setJob($_POST['family_member_type_basic']['job']);
  48.                 $form->handleRequest($request);
  49.                 $photo $form->get('photo')->getData();
  50.                 if ($photo) {
  51.                     $uploadedFileName $fileUploader->upload($photo'family_members_dir');
  52.                     $familyMember->setPhoto($uploadedFileName);
  53.                 }
  54.                 $familyMemberRepository->add($familyMembertrue);
  55.                 return new JsonResponse(['status' => 'ok''data' => $familyMember->getId(), 'msg' => $this->translator->trans('Parent crée !')]);
  56.             } else {
  57.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  58.             }
  59.         }
  60.         $familyMember = new FamilyMember();
  61.         $form $this->createForm(FamilyMemberTypeBasic::class, $familyMember);
  62.         $cardid = new Cardid();
  63.         $cardid->setName('Carte d\'identity');
  64.         $familyMember->getIdentity()->add($cardid);
  65.         $address = new Location();
  66.         $address->setCountry('DZ');
  67.         $address->setWilaya('Boumerdès');
  68.         $familyMember->setAddress($address);
  69.         $edit_form $this->createForm(FamilyMemberTypeBasic::class, $familyMember, [
  70.             'action' => $this->generateUrl('app_family_member_edit_ajax', ['id' => '1']),
  71.             'method' => 'POST',
  72.             'attr' => ['name' => 'family_member_type_basic_edit']
  73.         ]);
  74.         return $this->render('app/family_member/index.html.twig', [
  75.             'family_members' => $familyMemberRepository->findAll(),
  76.             'form' => $form->createView(),
  77.             'edit_form' => $edit_form->createView()
  78.         ]);
  79.     }
  80.     #[Route('/new'name'app_family_member_new'methods: ['GET''POST'])]
  81.     public function new(Request $requestFamilyMemberRepository $familyMemberRepositoryCardidRepository $cradidRepositoryFileUploader $fileUploader): Response
  82.     {
  83.         return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
  84.         // $familyMember = new FamilyMember();
  85.         // $cardid = new Cardid();
  86.         // $cardid->setName('Carte d\'identity');
  87.         // $familyMember->getIdentity()->add($cardid);
  88.         // $address = new Location();
  89.         // $address->setCountry('DZ');
  90.         // $address->setWilaya('Boumerdès');
  91.         // $familyMember->setAddress($address);
  92.         // $form = $this->createForm(FamilyMemberType::class, $familyMember);
  93.         // $form->handleRequest($request);
  94.         // if ($form->isSubmitted() && $form->isValid()) {
  95.         //     $photo = $form->get('photo')->getData();
  96.         //     if ($photo) {
  97.         //         $uploadedFileName = $fileUploader->upload($photo, 'family_members_dir');
  98.         //         $familyMember->setPhoto($uploadedFileName);
  99.         //     }
  100.         //     $identities = $familyMember->getIdentity();
  101.         //     foreach ($identities as $key => $ident) {
  102.         //         $ident->setFamilyMember($familyMember);
  103.         //         $cradidRepository->add($ident);
  104.         //     }
  105.         //     $familyMemberRepository->add($familyMember, true);
  106.         //     $this->addFlash('success', $this->translator->trans('Succès !!'));
  107.         //     return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
  108.         // }
  109.         // return $this->renderForm('app/family_member/new.html.twig', [
  110.         //     'family_member' => $familyMember,
  111.         //     'form' => $form,
  112.         // ]);
  113.     }
  114.     #[Route('/search/{child}'name'app_family_member_search'methods: ['GET'])]
  115.     public function search(Request $requestChild $childSerializerInterface $serializerFamilyMemberRepository $familyMemberRepository): Response
  116.     {
  117.         $query $request->query->get('term');
  118.         $members $familyMemberRepository->search($query);
  119.         // dd($members);
  120.         $result = [
  121.             'members' => $members,
  122.             'child' => $child->getId()
  123.         ];
  124.         $json $serializer->serialize($result'json', []);
  125.         return $this->json(json_decode($json));
  126.     }
  127.     #[Route('/{id}'name'app_family_member_show'methods: ['GET'])]
  128.     public function show(FamilyMember $familyMember): Response
  129.     {
  130.         return $this->render('app/family_member/show.html.twig', [
  131.             'family_member' => $familyMember,
  132.         ]);
  133.     }
  134.     #[Route('/ajax/{id}'name'app_family_member_show_ajax'methods: ['GET'])]
  135.     public function show_ajax(FamilyMember $family_memberSerializerInterface $serializer): Response
  136.     {
  137.         $json $serializer->serialize($family_member'json', ['groups' => ['read:familymember:basic']]);
  138.         return $this->json(json_decode($json));
  139.     }
  140.     #[Route('/{id}/edit'name'app_family_member_edit'methods: ['GET''POST'])]
  141.     public function edit(Request $requestFamilyMember $familyMemberFamilyMemberRepository $familyMemberRepositoryFileUploader $fileUploaderCardidRepository $cradidRepository): Response
  142.     {
  143.         return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
  144.         // if (count($familyMember->getIdentity()) === 0) {
  145.         //     $cardid = new Cardid();
  146.         //     $cardid->setName('Carte d\'identity');
  147.         //     $familyMember->getIdentity()->add($cardid);
  148.         // }
  149.         // $form = $this->createForm(FamilyMemberType::class, $familyMember);
  150.         // $form->handleRequest($request);
  151.         // if ($form->isSubmitted() && $form->isValid()) {
  152.         //     $photo = $form->get('photo')->getData();
  153.         //     if ($photo) {
  154.         //         $uploadedFileName = $fileUploader->upload($photo, 'family_members_dir');
  155.         //         $familyMember->setPhoto($uploadedFileName);
  156.         //     }
  157.         //     $identities = $familyMember->getIdentity();
  158.         //     foreach ($identities as $key => $ident) {
  159.         //         $ident->setFamilyMember($familyMember);
  160.         //         $cradidRepository->add($ident);
  161.         //     }
  162.         //     $familyMemberRepository->add($familyMember, true);
  163.         //     $this->addFlash('success', $this->translator->trans('Succès !!'));
  164.         //     return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
  165.         // }
  166.         // return $this->renderForm('app/family_member/edit.html.twig', [
  167.         //     'family_member' => $familyMember,
  168.         //     'form' => $form,
  169.         // ]);
  170.     }
  171.     #[Route('/{id?}/edit/ajax'name'app_family_member_edit_ajax'methods: ['GET''POST'])]
  172.     public function edit_ajax(Request $requestFamilyMember $familyMemberFamilyMemberRepository $familyMemberRepositoryFileUploader $fileUploaderEntityManagerInterface $manager): Response
  173.     {
  174.         if ($request->isXmlHttpRequest()) {
  175.             if ($this->isCsrfTokenValid('edit_family_member'$_POST['family_member_type_basic']['_token'])) {
  176.                 $form $this->createForm(FamilyMemberTypeBasic::class, $familyMember);
  177.                 $familyMember
  178.                     ->setFirstName($_POST['family_member_type_basic']['first_name'])
  179.                     ->setLastName($_POST['family_member_type_basic']['last_name'])
  180.                     ->setEmail($_POST['family_member_type_basic']['email'])
  181.                     // ->setEmail($_POST['family_member_type_basic']['type'])
  182.                     ->setJob($_POST['family_member_type_basic']['job'])
  183.                     ->setPhone($_POST['family_member_type_basic']['phone'])
  184.                     ->setMobile($_POST['family_member_type_basic']['mobile'])
  185.                 ;
  186.                 $form->handleRequest($request);
  187.                 $photo $form->get('photo')->getData();
  188.                 if ($photo) {
  189.                     $uploadedFileName $fileUploader->upload($photo'family_members_dir');
  190.                     $familyMember->setPhoto($uploadedFileName);
  191.                 }
  192.                 $familyMemberRepository->add($familyMembertrue);
  193.                 return new JsonResponse(['status' => 'ok''data' => $familyMember->getId(), 'msg' => $this->translator->trans('Parent mis à jour !')]);
  194.             } else {
  195.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  196.             }
  197.         }
  198.     }
  199.     #[Route('/{id}'name'app_family_member_delete'methods: ['POST'])]
  200.     public function delete(Request $requestFamilyMember $familyMemberFamilyMemberRepository $familyMemberRepository): Response
  201.     {
  202.         if ($this->isCsrfTokenValid('delete' $familyMember->getId(), $request->request->get('_token'))) {
  203.             try {
  204.                 $familyMemberRepository->remove($familyMembertrue);
  205.                 $this->addFlash('success'$this->translator->trans('Succès !!'));
  206.             } catch (\Exception $e) {
  207.                 $errorMessage $e->getMessage();
  208.                 $result explode(':'$errorMessage);
  209.                 $this->addFlash('error'$result[0]);
  210.             }
  211.         }
  212.         return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
  213.     }
  214. }