src/Controller/App/ExpenseCategoryController.php line 28

  1. <?php
  2. namespace App\Controller\App;
  3. use DateTime;
  4. use App\Entity\ExpenseCategory;
  5. use App\Form\ExpenseCategoryType;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use App\Repository\ExpenseCategoryRepository;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\Serializer\SerializerInterface;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. #[Route('/app/expensecategory')]
  17. #[IsGranted('IS_AUTHENTICATED_FULLY')]
  18. class ExpenseCategoryController extends AbstractController
  19. {
  20.     public function __construct(private TranslatorInterface $translator)
  21.     {
  22.     }
  23.     #[Route('/'name'app_expense_category_index'methods: ['GET''POST'])]
  24.     public function index(Request $requestExpenseCategoryRepository $expenseCategoryRepository): Response
  25.     {
  26.         if ($request->isXmlHttpRequest()) {
  27.             if ($this->isCsrfTokenValid('expense_category'$_POST['expense_category']['_token'])) {
  28.                 $category = new ExpenseCategory();
  29.                 $form $this->createForm(ExpenseCategoryType::class, $category);
  30.                 $category
  31.                     ->setName($_POST['expense_category']['name'])
  32.                     ->setDescription($_POST['expense_category']['description'])
  33.                     ->setColor($_POST['expense_category']['color']);
  34.                 // /** @var $user App\Entity\User */
  35.                 // $user = $this->getUser();
  36.                 // $category->setOwner($user->getCompany());
  37.                 $expenseCategoryRepository->add($categorytrue);
  38.                 return new JsonResponse(['status' => 'ok''data' => $category->getId(), 'msg' => $this->translator->trans('Dépense catégorie crée !')]);
  39.             } else {
  40.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  41.             }
  42.         }
  43.         $category = new ExpenseCategory();
  44.         $form $this->createForm(ExpenseCategoryType::class, $category);
  45.         $edit_form $this->createForm(ExpenseCategoryType::class, $category, [
  46.             'action' => $this->generateUrl('app_expense_category_edit_ajax', ['id' => '1']),
  47.             'method' => 'POST',
  48.             'attr' => ['name' => 'expense_category_type_edit']
  49.         ]);
  50.         return $this->render('app/expense_category/index.html.twig', [
  51.             'expense_categories' => $expenseCategoryRepository->findAll(),
  52.             'form' => $form->createView(),
  53.             'edit_form' => $edit_form->createView()
  54.         ]);
  55.     }
  56.     #[Route('/new'name'app_expense_category_new'methods: ['GET''POST'])]
  57.     public function new(Request $requestExpenseCategoryRepository $expenseCategoryRepository): Response
  58.     {
  59.         $expenseCategory = new ExpenseCategory();
  60.         $form $this->createForm(ExpenseCategoryType::class, $expenseCategory);
  61.         $form->handleRequest($request);
  62.         if ($form->isSubmitted() && $form->isValid()) {
  63.             $expenseCategoryRepository->add($expenseCategorytrue);
  64.             $this->addFlash('success'$this->translator->trans('Succès !!'));
  65.             return $this->redirectToRoute('app_expense_category_index', [], Response::HTTP_SEE_OTHER);
  66.         }
  67.         return $this->renderForm('app/expense_category/new.html.twig', [
  68.             'expense_category' => $expenseCategory,
  69.             'form' => $form,
  70.         ]);
  71.     }
  72.     #[Route('/{id}'name'app_expense_category_show'methods: ['GET'])]
  73.     public function show(ExpenseCategory $expenseCategory): Response
  74.     {
  75.         return $this->render('app/expense_category/show.html.twig', [
  76.             'expense_category' => $expenseCategory,
  77.         ]);
  78.     }
  79.     #[Route('/ajax/{id}'name'app_expense_category_show_ajax'methods: ['GET'])]
  80.     public function show_ajax(ExpenseCategory $expense_categorySerializerInterface $serializer): Response
  81.     {
  82.         $json $serializer->serialize($expense_category'json', ['groups' => ['read:expensecategory:basic']]);
  83.         return $this->json(json_decode($json));
  84.     }
  85.     #[Route('/{id}/edit'name'app_expense_category_edit'methods: ['GET''POST'])]
  86.     public function edit(Request $requestExpenseCategory $expenseCategoryExpenseCategoryRepository $expenseCategoryRepository): Response
  87.     {
  88.         $form $this->createForm(ExpenseCategoryType::class, $expenseCategory);
  89.         $form->handleRequest($request);
  90.         if ($form->isSubmitted() && $form->isValid()) {
  91.             $expenseCategoryRepository->add($expenseCategorytrue);
  92.             $this->addFlash('success'$this->translator->trans('Succès !!'));
  93.             return $this->redirectToRoute('app_expense_category_index', [], Response::HTTP_SEE_OTHER);
  94.         }
  95.         return $this->renderForm('app/expense_category/edit.html.twig', [
  96.             'expense_category' => $expenseCategory,
  97.             'form' => $form,
  98.         ]);
  99.     }
  100.     #[Route('/{id?}/edit/ajax'name'app_expense_category_edit_ajax'methods: ['GET''POST'])]
  101.     public function edit_ajax(Request $requestExpenseCategory $expense_categoryExpenseCategoryRepository $expenseCategoryRepositoryEntityManagerInterface $manager): Response
  102.     {
  103.         if ($request->isXmlHttpRequest()) {
  104.             if ($this->isCsrfTokenValid('edit_expense_category'$_POST['expense_category']['_token'])) {
  105.                 $expense_category
  106.                     ->setName($_POST['expense_category']['name'])
  107.                     ->setDescription($_POST['expense_category']['description'])
  108.                     ->setColor($_POST['expense_category']['color'])
  109.                 ;
  110.                 $expenseCategoryRepository->add($expense_categorytrue);
  111.                 return new JsonResponse(['status' => 'ok''data' => $expense_category->getId(), 'msg' => $this->translator->trans('Dépense catégorie mis à jour !')]);
  112.             } else {
  113.                 return new JsonResponse(['status' => 'no''data' => null'msg' => $this->translator->trans('token invalid !')]);
  114.             }
  115.         }
  116.     }
  117.     #[Route('/{id}'name'app_expense_category_delete'methods: ['POST'])]
  118.     public function delete(Request $requestExpenseCategory $expenseCategoryExpenseCategoryRepository $expenseCategoryRepository): Response
  119.     {
  120.         if ($this->isCsrfTokenValid('delete' $expenseCategory->getId(), $request->request->get('_token'))) {
  121.             try {
  122.                 $expenseCategoryRepository->remove($expenseCategorytrue);
  123.                 $this->addFlash('success'$this->translator->trans('Succès !!'));
  124.             } catch (\Exception $e) {
  125.                 $errorMessage $e->getMessage();
  126.                 $result explode(':'$errorMessage);
  127.                 $this->addFlash('error'$result[0]);
  128.             }
  129.         }
  130.         return $this->redirectToRoute('app_expense_category_index', [], Response::HTTP_SEE_OTHER);
  131.     }
  132. }