src/Controller/App/PaymentController.php line 29

  1. <?php
  2. namespace App\Controller\App;
  3. use DateTime;
  4. use App\Entity\Payment;
  5. use App\Form\PaymentType;
  6. use App\Entity\FamilyMember;
  7. use App\Entity\Subscription;
  8. use App\Repository\PaymentRepository;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Component\Form\FormFactoryInterface;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\Serializer\SerializerInterface;
  16. use Symfony\Contracts\Translation\TranslatorInterface;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. #[Route('/app/payment')]
  19. class PaymentController extends AbstractController
  20. {
  21.     public function __construct(private TranslatorInterface $translator)
  22.     {
  23.     }
  24.     #[Route('/'name'app_payment_index'methods: ['GET''POST'])]
  25.     public function index(Request $requestPaymentRepository $paymentRepositoryEntityManagerInterface $managerFormFactoryInterface $formFactory): Response
  26.     {
  27.         if ($request->isXmlHttpRequest()) {
  28.             if ($this->isCsrfTokenValid('payment'$_POST['payment']['_token'])) {
  29.                 $payment = new Payment();
  30.                 $form $this->createForm(PaymentType::class, $payment);
  31.                 $subscription $manager->getRepository(Subscription::class)->find($_POST['payment']['subscription']);
  32.                 $familymember $manager->getRepository(FamilyMember::class)->find($_POST['payment']['payed_by']);
  33.                 $payment
  34.                     ->setCreatedBy($this->getUser());
  35.                 $payment
  36.                     ->setPayedBy($familymember)
  37.                     ->setSubscription($subscription)
  38.                     ->setAmount($_POST['payment']['amount'])
  39.                     ->setDescription($_POST['payment']['description'])
  40.                     ->setDate(new DateTime($_POST['payment']['date']));
  41.                 $paymentRepository->add($paymenttrue);
  42.                 return new JsonResponse(['status' => 'ok''data' => $payment->getId(), 'msg' => $this->translator->trans('Paiment crée !')]);
  43.             } else {
  44.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  45.             }
  46.         }
  47.         $payment = new Payment();
  48.         $form $this->createForm(PaymentType::class, $payment);
  49.         $edit_form $formFactory->createNamed('payment_type_edit'PaymentType::class, $payment);
  50.         return $this->render('app/payment/index.html.twig', [
  51.             'payments' => $paymentRepository->findAll(),
  52.             'form' => $form->createView(),
  53.             'edit_form' => $edit_form->createView()
  54.         ]);
  55.     }
  56.     #[Route('/new'name'app_payment_new'methods: ['GET''POST'])]
  57.     public function new(Request $requestPaymentRepository $paymentRepository): Response
  58.     {
  59.         return $this->redirectToRoute('app_payment_index', [], Response::HTTP_SEE_OTHER);
  60.         // $payment = new Payment();
  61.         // $form = $this->createForm(PaymentType::class, $payment);
  62.         // $form->handleRequest($request);
  63.         // if ($form->isSubmitted() && $form->isValid()) {
  64.         //     /** @var $user App\Entity\User */
  65.         //     $user = $this->getUser();
  66.         //     $payment
  67.         //         ->setCreatedBy($this->getUser());
  68.         //     $paymentRepository->add($payment, true);
  69.         //     $this->addFlash('success', $this->translator->trans('Succès !!'));
  70.         //     return $this->redirectToRoute('app_payment_index', [], Response::HTTP_SEE_OTHER);
  71.         // }
  72.         // return $this->renderForm('app/payment/new.html.twig', [
  73.         //     'payment' => $payment,
  74.         //     'form' => $form,
  75.         // ]);
  76.     }
  77.     #[Route('/{id}'name'app_payment_show'methods: ['GET'])]
  78.     public function show(Payment $payment): Response
  79.     {
  80.         return $this->redirectToRoute('app_payment_index', [], Response::HTTP_SEE_OTHER);
  81.         // return $this->render('app/payment/show.html.twig', [
  82.         //     'payment' => $payment,
  83.         // ]);
  84.     }
  85.     #[Route('/ajax/{id}'name'app_payment_show_ajax'methods: ['GET'])]
  86.     public function show_ajax(Payment $paymentSerializerInterface $serializer): Response
  87.     {
  88.         $json $serializer->serialize($payment'json', ['groups' => ['read:payment:basic''read:familymember:basic''read:subscription:basic']]);
  89.         return $this->json(json_decode($json));
  90.     }
  91.     #[Route('/{id}/edit'name'app_payment_edit'methods: ['GET''POST'])]
  92.     public function edit(Request $requestPayment $paymentPaymentRepository $paymentRepository): Response
  93.     {
  94.         return $this->redirectToRoute('app_payment_index', [], Response::HTTP_SEE_OTHER);
  95.         // $form = $this->createForm(PaymentType::class, $payment);
  96.         // $form->handleRequest($request);
  97.         // if ($form->isSubmitted() && $form->isValid()) {
  98.         //     $paymentRepository->add($payment, true);
  99.         //     $this->addFlash('success', $this->translator->trans('Succès !!'));
  100.         //     return $this->redirectToRoute('app_payment_index', [], Response::HTTP_SEE_OTHER);
  101.         // }
  102.         // return $this->renderForm('app/payment/edit.html.twig', [
  103.         //     'payment' => $payment,
  104.         //     'form' => $form,
  105.         // ]);
  106.     }
  107.     #[Route('/{id?}/edit/ajax'name'app_payment_edit_ajax'methods: ['GET''POST'])]
  108.     public function edit_ajax(Request $requestPayment $paymentPaymentRepository $paymentRepositoryEntityManagerInterface $manager): Response
  109.     {
  110.         if ($request->isXmlHttpRequest()) {
  111.             if ($this->isCsrfTokenValid('payment_type_edit'$_POST['payment_type_edit']['_token'])) {
  112.                 $subscription $manager->getRepository(Subscription::class)->find($_POST['payment_type_edit']['subscription']);
  113.                 $familymember $manager->getRepository(FamilyMember::class)->find($_POST['payment_type_edit']['payed_by']);
  114.                 $date DateTime::createFromFormat('d/m/Y'$_POST['payment_type_edit']['date']);
  115.                 $payment
  116.                     ->setPayedBy($familymember)
  117.                     ->setSubscription($subscription)
  118.                     ->setAmount($_POST['payment_type_edit']['amount'])
  119.                     ->setDescription($_POST['payment_type_edit']['description'])
  120.                     ->setDate($date);
  121.                 $paymentRepository->add($paymenttrue);
  122.                 return new JsonResponse(['status' => 'ok''data' => $payment->getId(), 'msg' => $this->translator->trans('Paiment mis à jour !')]);
  123.             } else {
  124.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  125.             }
  126.         }
  127.     }
  128.     #[Route('/{id}'name'app_payment_delete'methods: ['POST'])]
  129.     public function delete(Request $requestPayment $paymentPaymentRepository $paymentRepository): Response
  130.     {
  131.         if ($this->isCsrfTokenValid('delete' $payment->getId(), $request->request->get('_token'))) {
  132.             try {
  133.                 $paymentRepository->remove($paymenttrue);
  134.                 $this->addFlash('success'$this->translator->trans('Succès !!'));
  135.             } catch (\Exception $e) {
  136.                 $errorMessage $e->getMessage();
  137.                 $result explode(':'$errorMessage);
  138.                 $this->addFlash('error'$result[0]);
  139.             }
  140.         }
  141.         return $this->redirectToRoute('app_payment_index', [], Response::HTTP_SEE_OTHER);
  142.     }
  143.     #[Route('/{id}/delete/ajax'name'app_payment_delete_ajax'methods: ['POST'])]
  144.     public function delete_ajax(Request $requestPayment $paymentPaymentRepository $paymentRepository): Response
  145.     {
  146.         if ($this->isCsrfTokenValid('delete' $payment->getId(), $request->request->get('_token'))) {
  147.             try {
  148.                 $paymentRepository->remove($paymenttrue);
  149.                 return new JsonResponse(['status' => 'ok''data' => $payment->getId(), 'msg' => $this->translator->trans('Paiment supprimé !')]);
  150.             } catch (\Exception $e) {
  151.                 $errorMessage $e->getMessage();
  152.                 $result explode(':'$errorMessage);
  153.                 // $this->addFlash('error', $result[0]);
  154.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $result[0]]);
  155.             }
  156.         }
  157.         return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('Error !')]);
  158.     }
  159. }