src/Controller/App/FamilyMemberController.php line 31
<?php
namespace App\Controller\App;
use App\Entity\Child;
use App\Entity\Cardid;
use App\Entity\Location;
use App\Entity\FamilyMember;
use App\Service\FileUploader;
use App\Form\FamilyMemberType;
use App\Form\FamilyMemberTypeBasic;
use App\Repository\CardidRepository;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\FamilyMemberRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
#[Route('/app/family/member')]
class FamilyMemberController extends AbstractController
{
public function __construct(private TranslatorInterface $translator)
{
}
#[Route('/', name: 'app_family_member_index', methods: ['GET', 'POST'])]
public function index(Request $request, FamilyMemberRepository $familyMemberRepository, FileUploader $fileUploader): Response
{
if ($request->isXmlHttpRequest()) {
if ($this->isCsrfTokenValid('family_member_type_basic', $_POST['family_member_type_basic']['_token'])) {
$familyMember = new FamilyMember();
$form = $this->createForm(FamilyMemberTypeBasic::class, $familyMember);
$cardid = new Cardid();
$cardid->setName('Carte d\'identity');
$familyMember->getIdentity()->add($cardid);
$address = new Location();
$address->setCountry('DZ');
$address->setWilaya('Boumerdès');
$familyMember->setAddress($address);
$familyMember
->setFirstName($_POST['family_member_type_basic']['first_name'])
->setLastName($_POST['family_member_type_basic']['last_name'])
// ->settype($_POST['family_member_type_basic']['type'])
->setEmail($_POST['family_member_type_basic']['email'])
->setPhone($_POST['family_member_type_basic']['phone'])
->setMobile($_POST['family_member_type_basic']['mobile'])
->setJob($_POST['family_member_type_basic']['job']);
$form->handleRequest($request);
$photo = $form->get('photo')->getData();
if ($photo) {
$uploadedFileName = $fileUploader->upload($photo, 'family_members_dir');
$familyMember->setPhoto($uploadedFileName);
}
$familyMemberRepository->add($familyMember, true);
return new JsonResponse(['status' => 'ok', 'data' => $familyMember->getId(), 'msg' => $this->translator->trans('Parent crée !')]);
} else {
return new JsonResponse(['status' => 'no', 'data' => null, 'msg' => $this->translator->trans('token invalid !')]);
}
}
$familyMember = new FamilyMember();
$form = $this->createForm(FamilyMemberTypeBasic::class, $familyMember);
$cardid = new Cardid();
$cardid->setName('Carte d\'identity');
$familyMember->getIdentity()->add($cardid);
$address = new Location();
$address->setCountry('DZ');
$address->setWilaya('Boumerdès');
$familyMember->setAddress($address);
$edit_form = $this->createForm(FamilyMemberTypeBasic::class, $familyMember, [
'action' => $this->generateUrl('app_family_member_edit_ajax', ['id' => '1']),
'method' => 'POST',
'attr' => ['name' => 'family_member_type_basic_edit']
]);
return $this->render('app/family_member/index.html.twig', [
'family_members' => $familyMemberRepository->findAll(),
'form' => $form->createView(),
'edit_form' => $edit_form->createView()
]);
}
#[Route('/new', name: 'app_family_member_new', methods: ['GET', 'POST'])]
public function new(Request $request, FamilyMemberRepository $familyMemberRepository, CardidRepository $cradidRepository, FileUploader $fileUploader): Response
{
return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
// $familyMember = new FamilyMember();
// $cardid = new Cardid();
// $cardid->setName('Carte d\'identity');
// $familyMember->getIdentity()->add($cardid);
// $address = new Location();
// $address->setCountry('DZ');
// $address->setWilaya('Boumerdès');
// $familyMember->setAddress($address);
// $form = $this->createForm(FamilyMemberType::class, $familyMember);
// $form->handleRequest($request);
// if ($form->isSubmitted() && $form->isValid()) {
// $photo = $form->get('photo')->getData();
// if ($photo) {
// $uploadedFileName = $fileUploader->upload($photo, 'family_members_dir');
// $familyMember->setPhoto($uploadedFileName);
// }
// $identities = $familyMember->getIdentity();
// foreach ($identities as $key => $ident) {
// $ident->setFamilyMember($familyMember);
// $cradidRepository->add($ident);
// }
// $familyMemberRepository->add($familyMember, true);
// $this->addFlash('success', $this->translator->trans('Succès !!'));
// return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
// }
// return $this->renderForm('app/family_member/new.html.twig', [
// 'family_member' => $familyMember,
// 'form' => $form,
// ]);
}
#[Route('/search/{child}', name: 'app_family_member_search', methods: ['GET'])]
public function search(Request $request, Child $child, SerializerInterface $serializer, FamilyMemberRepository $familyMemberRepository): Response
{
$query = $request->query->get('term');
$members = $familyMemberRepository->search($query);
// dd($members);
$result = [
'members' => $members,
'child' => $child->getId()
];
$json = $serializer->serialize($result, 'json', []);
return $this->json(json_decode($json));
}
#[Route('/{id}', name: 'app_family_member_show', methods: ['GET'])]
public function show(FamilyMember $familyMember): Response
{
return $this->render('app/family_member/show.html.twig', [
'family_member' => $familyMember,
]);
}
#[Route('/ajax/{id}', name: 'app_family_member_show_ajax', methods: ['GET'])]
public function show_ajax(FamilyMember $family_member, SerializerInterface $serializer): Response
{
$json = $serializer->serialize($family_member, 'json', ['groups' => ['read:familymember:basic']]);
return $this->json(json_decode($json));
}
#[Route('/{id}/edit', name: 'app_family_member_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, FamilyMember $familyMember, FamilyMemberRepository $familyMemberRepository, FileUploader $fileUploader, CardidRepository $cradidRepository): Response
{
return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
// if (count($familyMember->getIdentity()) === 0) {
// $cardid = new Cardid();
// $cardid->setName('Carte d\'identity');
// $familyMember->getIdentity()->add($cardid);
// }
// $form = $this->createForm(FamilyMemberType::class, $familyMember);
// $form->handleRequest($request);
// if ($form->isSubmitted() && $form->isValid()) {
// $photo = $form->get('photo')->getData();
// if ($photo) {
// $uploadedFileName = $fileUploader->upload($photo, 'family_members_dir');
// $familyMember->setPhoto($uploadedFileName);
// }
// $identities = $familyMember->getIdentity();
// foreach ($identities as $key => $ident) {
// $ident->setFamilyMember($familyMember);
// $cradidRepository->add($ident);
// }
// $familyMemberRepository->add($familyMember, true);
// $this->addFlash('success', $this->translator->trans('Succès !!'));
// return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
// }
// return $this->renderForm('app/family_member/edit.html.twig', [
// 'family_member' => $familyMember,
// 'form' => $form,
// ]);
}
#[Route('/{id?}/edit/ajax', name: 'app_family_member_edit_ajax', methods: ['GET', 'POST'])]
public function edit_ajax(Request $request, FamilyMember $familyMember, FamilyMemberRepository $familyMemberRepository, FileUploader $fileUploader, EntityManagerInterface $manager): Response
{
if ($request->isXmlHttpRequest()) {
if ($this->isCsrfTokenValid('edit_family_member', $_POST['family_member_type_basic']['_token'])) {
$form = $this->createForm(FamilyMemberTypeBasic::class, $familyMember);
$familyMember
->setFirstName($_POST['family_member_type_basic']['first_name'])
->setLastName($_POST['family_member_type_basic']['last_name'])
->setEmail($_POST['family_member_type_basic']['email'])
// ->setEmail($_POST['family_member_type_basic']['type'])
->setJob($_POST['family_member_type_basic']['job'])
->setPhone($_POST['family_member_type_basic']['phone'])
->setMobile($_POST['family_member_type_basic']['mobile'])
;
$form->handleRequest($request);
$photo = $form->get('photo')->getData();
if ($photo) {
$uploadedFileName = $fileUploader->upload($photo, 'family_members_dir');
$familyMember->setPhoto($uploadedFileName);
}
$familyMemberRepository->add($familyMember, true);
return new JsonResponse(['status' => 'ok', 'data' => $familyMember->getId(), 'msg' => $this->translator->trans('Parent mis à jour !')]);
} else {
return new JsonResponse(['status' => 'no', 'data' => null, 'msg' => $this->translator->trans('token invalid !')]);
}
}
}
#[Route('/{id}', name: 'app_family_member_delete', methods: ['POST'])]
public function delete(Request $request, FamilyMember $familyMember, FamilyMemberRepository $familyMemberRepository): Response
{
if ($this->isCsrfTokenValid('delete' . $familyMember->getId(), $request->request->get('_token'))) {
try {
$familyMemberRepository->remove($familyMember, true);
$this->addFlash('success', $this->translator->trans('Succès !!'));
} catch (\Exception $e) {
$errorMessage = $e->getMessage();
$result = explode(':', $errorMessage);
$this->addFlash('error', $result[0]);
}
}
return $this->redirectToRoute('app_family_member_index', [], Response::HTTP_SEE_OTHER);
}
}