src/Controller/App/ColleagueController.php line 27
<?php
namespace App\Controller\App;
use App\Entity\Colleague;
use App\Form\ColleagueBasicType;
use App\Form\ColleagueSocialMediasType;
use App\Service\FileUploader;
use App\Repository\ColleagueRepository;
use Doctrine\ORM\EntityManagerInterface;
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/colleague')]
class ColleagueController extends AbstractController
{
public function __construct(private TranslatorInterface $translator)
{
}
#[Route('/', name: 'app_colleague_index', methods: ['GET', 'POST'])]
public function index(Request $request, ColleagueRepository $colleagueRepository, FileUploader $fileUploader): Response
{
if ($request->isXmlHttpRequest()) {
if ($this->isCsrfTokenValid('colleague_basic', $_POST['colleague_basic']['_token'])) {
$colleague = new Colleague();
$form = $this->createForm(ColleagueBasicType::class, $colleague);
$colleague
->setFirstName($_POST['colleague_basic']['first_name'])
->setLastName($_POST['colleague_basic']['last_name'])
->setEmail($_POST['colleague_basic']['email'])
->setJob($_POST['colleague_basic']['job'])
->setPhone($_POST['colleague_basic']['phone'])
->setMobile($_POST['colleague_basic']['mobile']);
$form->handleRequest($request);
$photo = $form->get('photo')->getData();
if ($photo) {
$uploadedFileName = $fileUploader->upload($photo, 'colleagues_dir');
$colleague->setPhoto($uploadedFileName);
}
$colleagueRepository->add($colleague, true);
return new JsonResponse(['status' => 'ok', 'data' => $colleague->getId(), 'msg' => $this->translator->trans('Collègue créé !')]);
} else {
return new JsonResponse(['status' => 'no', 'data' => null, 'msg' => $this->translator->trans('token invalid !')]);
}
}
$colleague = new Colleague();
$form = $this->createForm(ColleagueBasicType::class, $colleague);
$edit_form = $this->createForm(ColleagueBasicType::class, $colleague, [
'action' => $this->generateUrl('app_colleague_edit_ajax', ['id' => '1']),
'method' => 'POST',
'attr' => ['name' => 'colleague_type_edit']
]);
return $this->render('app/colleague/index.html.twig', [
'colleagues' => $colleagueRepository->findAll(),
'form' => $form->createView(),
'edit_form' => $edit_form->createView()
]);
}
#[Route('/new', name: 'app_colleague_new', methods: ['GET', 'POST'])]
public function new(Request $request, ColleagueRepository $colleagueRepository, FileUploader $fileUploader): Response
{
return $this->redirectToRoute('app_colleague_index', [], Response::HTTP_SEE_OTHER);
// $colleague = new Colleague();
// $form = $this->createForm(ColleagueBasicType::class, $colleague);
// $form->handleRequest($request);
// if ($form->isSubmitted() && $form->isValid()) {
// $photo = $form->get('photo')->getData();
// if ($photo) {
// $uploadedFileName = $fileUploader->upload($photo, 'colleagues_dir');
// $colleague->setPhoto($uploadedFileName);
// }
// $colleagueRepository->add($colleague, true);
// $this->addFlash('success', $this->translator->trans('Succès !!'));
// return $this->redirectToRoute('app_colleague_index', [], Response::HTTP_SEE_OTHER);
// }
// return $this->renderForm('app/colleague/new.html.twig', [
// 'colleague' => $colleague,
// 'form' => $form,
// ]);
}
#[Route('/{id}', name: 'app_colleague_show', methods: ['GET'])]
public function show(Colleague $colleague): Response
{
return $this->redirectToRoute('app_colleague_index', [], Response::HTTP_SEE_OTHER);
// return $this->render('app/colleague/show.html.twig', [
// 'colleague' => $colleague,
// ]);
}
#[Route('/ajax/{id}', name: 'app_colleague_show_ajax', methods: ['GET'])]
public function show_ajax(Colleague $colleague, SerializerInterface $serializer): Response
{
$json = $serializer->serialize($colleague, 'json', ['groups' => ['read:colleague:basic']]);
return $this->json(json_decode($json));
}
#[Route('/{id}/edit', name: 'app_colleague_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Colleague $colleague, ColleagueRepository $colleagueRepository, FileUploader $fileUploader): Response
{
$form = $this->createForm(ColleagueBasicType::class, $colleague);
$form->handleRequest($request);
$formsm = $this->createForm(ColleagueSocialMediasType::class, $colleague);
$formsm->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$photo = $form->get('photo')->getData();
if ($photo) {
$uploadedFileName = $fileUploader->upload($photo, 'colleagues_dir');
$colleague->setPhoto($uploadedFileName);
}
$colleagueRepository->add($colleague, true);
$this->addFlash('success', $this->translator->trans('Succès !!'));
return $this->redirectToRoute('app_colleague_edit', ['id' => $colleague->getId()], Response::HTTP_SEE_OTHER);
}
if ($formsm->isSubmitted() && $formsm->isValid()) {
$colleagueRepository->add($colleague, true);
$this->addFlash('success', $this->translator->trans('Succès !!'));
return $this->redirectToRoute('app_colleague_edit', ['id' => $colleague->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('app/colleague/edit.html.twig', [
'colleague' => $colleague,
'form' => $form,
'formsm' => $formsm,
]);
}
#[Route('/{id?}/edit/ajax', name: 'app_colleague_edit_ajax', methods: ['GET', 'POST'])]
public function edit_ajax(Request $request, Colleague $colleague, ColleagueRepository $colleagueRepository, FileUploader $fileUploader, EntityManagerInterface $manager): Response
{
if ($request->isXmlHttpRequest()) {
if ($this->isCsrfTokenValid('edit_colleague_basic', $_POST['colleague_basic']['_token'])) {
$form = $this->createForm(ColleagueBasicType::class, $colleague);
$colleague
->setFirstName($_POST['colleague_basic']['first_name'])
->setLastName($_POST['colleague_basic']['last_name'])
->setJob($_POST['colleague_basic']['job'])
->setEmail($_POST['colleague_basic']['email'])
->setPhone($_POST['colleague_basic']['phone'])
->setMobile($_POST['colleague_basic']['mobile'])
;
$form->handleRequest($request);
$photo = $form->get('photo')->getData();
if ($photo) {
$uploadedFileName = $fileUploader->upload($photo, 'colleagues_dir');
$colleague->setPhoto($uploadedFileName);
}
$colleagueRepository->add($colleague, true);
return new JsonResponse(['status' => 'ok', 'data' => $colleague->getId(), 'msg' => $this->translator->trans('Collègue mis à jour !')]);
} else {
return new JsonResponse(['status' => 'no', 'data' => null, 'msg' => $this->translator->trans('token invalid !')]);
}
}
}
#[Route('/{id}', name: 'app_colleague_delete', methods: ['POST'])]
public function delete(Request $request, Colleague $colleague, ColleagueRepository $colleagueRepository): Response
{
if ($this->isCsrfTokenValid('delete' . $colleague->getId(), $request->request->get('_token'))) {
try {
$colleagueRepository->remove($colleague, 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_colleague_index', [], Response::HTTP_SEE_OTHER);
}
}