src/Controller/AdminFinance/DashboardController.php line 46

  1. <?php
  2. namespace App\Controller\AdminFinance;
  3. use App\Controller\AdminFinance\AutoEntreprise\AeFactureCrudController;
  4. use App\Controller\AdminFinance\AutoEntreprise\AeTiersCrudController;
  5. use App\Controller\AdminFinance\Bank\BankBudgetCrudController;
  6. use App\Controller\AdminFinance\Bank\BankMouvementCategorieCrudController;
  7. use App\Controller\AdminFinance\Bank\BankPrelevementCrudController;
  8. use App\Controller\AdminFinance\Vehicule\VehiculeMouvementCrudController;
  9. use App\Entity\AdminFinance\Bank\BankBudget;
  10. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  11. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  12. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Doctrine\Persistence\ManagerRegistry;
  17. use App\Entity\AdminFinance\Bank\BankCompte;
  18. use App\Repository\AdminFinance\Bank\BankCompteRepository;
  19. use App\Entity\AdminFinance\Bank\BankMouvement;
  20. use App\Repository\AdminFinance\Bank\BankMouvementRepository;
  21. use App\Entity\AdminFinance\Bank\BankPrelevement;
  22. use App\Entity\AdminFinance\Vehicule\VehiculeMouvement;
  23. use App\Repository\AdminFinance\Vehicule\VehiculeMouvementRepository;
  24. use App\Controller\AdminFinance\Bank\BankMouvementCrudController;
  25. use App\Controller\AdminFinance\Sci\SciBankMouvementCrudController;
  26. use App\Entity\AutoEntreprise\Facture;
  27. /**
  28.  * Classe permettant d'afficher le tableau de bord dans la partie BackOffice
  29.  */
  30. class DashboardController extends AbstractDashboardController
  31. {
  32.     public function __construct(
  33.         private BankCompteRepository $compteRepository
  34.         private BankMouvementRepository $mvtRepository
  35.         private VehiculeMouvementRepository $vehiculeMvtRepository
  36.     )
  37.     {
  38.     }
  39.     #[Route('/admin'name'easyadmin_default')]
  40.     #[Route('/admin/dashboard'name'easyadmin_finance')]
  41.     public function index(): Response
  42.     {
  43.         //return parent::index();
  44.         // Option 1. You can make your dashboard redirect to some common page of your backend
  45.         //
  46.         // $adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);
  47.         // return $this->redirect($adminUrlGenerator->setController(OneOfYourCrudController::class)->generateUrl());
  48.         // Option 2. You can make your dashboard redirect to different pages depending on the user
  49.         //
  50.         // if ('jane' === $this->getUser()->getUsername()) {
  51.         //     return $this->redirect('...');
  52.         // }
  53.         // Option 3. You can render some custom template to display a proper dashboard with widgets, etc.
  54.         // (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig)
  55.         //
  56.         // return $this->render('some/path/my-dashboard.html.twig');
  57.         $mvts $this->mvtRepository->findLastDebit(25);
  58.         $cbts $this->vehiculeMvtRepository->findLastDebit(5);
  59.         $comptes_courant $this->compteRepository->findBy(['type'=> BankCompte::COMPTE_COURANT]);
  60.         $comptes_livret $this->compteRepository->findBy(['type'=> BankCompte::COMPTE_LIVRET]);
  61.         $comptes_professionnel $this->compteRepository->findBy(['type'=> BankCompte::COMPTE_PROFESSIONNEL]);
  62.         $comptes_credit $this->compteRepository->findBy(['type'=> BankCompte::COMPTE_CREDIT]);
  63.         $typeDepenses $this->mvtRepository->sommeDepensesByCategories(date('Y'), BankCompte::COMPTE_COURANT);
  64.         return $this->render('adminfinance/dashboard.html.twig', [
  65.             'comptes_courant' => array_merge($comptes_courant$comptes_professionnel), 
  66.             //'mvts' => $listing,
  67.             'livrets' => $comptes_livret
  68.             'credits' => $comptes_credit,
  69.             // Prochains mouvements
  70.             //'url_template' => $url_template,
  71.             'mvts' => array_merge($mvts$cbts),
  72.             // Pour l'histogramme
  73.             'annee' => date('Y'),
  74.             'typeDepenses' => $typeDepenses,
  75.             /*
  76.             // Partie Budget
  77.             'year' => $year, 'nbre_mois' => $nbreMois, 'start_mois' => ($nbreMois>6)?$nbreMois-6:1,
  78.             'budgets'=> $budgets, 
  79.             'categories' =>$categories, 'depenses' => $depenses, 'recettes' => $recettes,
  80.             // Formulaire Upload
  81.             'form' => $this->createForm(UploadFileType::class)->createView()*/
  82.         ]);
  83.     }
  84.     public function configureDashboard(): Dashboard
  85.     {
  86.         return Dashboard::new()
  87.             ->setTitle('BackOffice Finance');
  88.     }
  89.     public function configureMenuItems(): iterable
  90.     {
  91.         
  92.         // Partie Bancaire
  93.         yield MenuItem::section('Banque''fa fa-home')->setCssClass('section');
  94.         yield MenuItem::linkToCrud('Budget''fa fa-chart-pie'BankBudget::class)->setController(BankBudgetCrudController::class);
  95.         yield MenuItem::linkToCrud('CatĂ©gorie''fa fa-book'BankMouvementCategorie::class)->setController(BankMouvementCategorieCrudController::class);
  96.         yield MenuItem::linkToCrud('Mouvement''fa fa-cash-register'BankMouvement::class)->setController(BankMouvementCrudController::class);;
  97.         yield MenuItem::linkToCrud('Prelevement''fa fa-comments-dollar'BankPrelevement::class)->setController(BankPrelevementCrudController::class);;
  98.         yield MenuItem::section('VĂ©hicule''fa fa-car')->setCssClass('section');
  99.         yield MenuItem::linkToCrud('Carburant''fa fa-gas-pump'VehiculeMouvement::class)->setController(VehiculeMouvementCrudController::class);
  100.         yield MenuItem::section('SCI')->setCssClass('section');
  101.         yield MenuItem::linkToUrl('Tableau de bord''fa fa-landmark fa-2x'$this->generateUrl('easyadmin_sci', []) );
  102.         yield MenuItem::linkToCrud('Mouvement''fa fa-money-bill-transfer'BankMouvement::class)->setController(SciBankMouvementCrudController::class);;
  103.         yield MenuItem::linkToCrud('Tiers''fa fa-person'Tiers::class )->setController(SciTiersCrudController::class);
  104.         yield MenuItem::linkToUrl('Bilan Cmpt. '.(date('Y')-1), 'fa fa-scale-balanced'$this->generateUrl('easyadmin_sci_bilan_comptable', ['year' => date('Y')-1]) );
  105.         yield MenuItem::section('AutoEntreprise')->setCssClass('section');
  106.         yield MenuItem::linkToUrl('Tableau de bord''fa fa-house-laptop fa-2x'$this->generateUrl('easyadmin_ae_dashboard', []) );
  107.         yield MenuItem::linkToCrud('Tiers''fa fa-person'Tiers::class )->setController(AeTiersCrudController::class);
  108.         yield MenuItem::linkToCrud('Factures''fa fa-file-invoice'Facture::class )->setController(AeFactureCrudController::class);
  109.         //yield MenuItem::section('')->setCssClass('section');
  110.         //yield MenuItem::linkToUrl('EasyAdmin', 'fa fa-tools', 'https://github.com/EasyCorp/EasyAdminBundle')->setLinkTarget('_blank')->setLinkRel('noreferrer');
  111.         //yield MenuItem::linkToUrl('Retour Synt.', 'fa fa-backward', $this->generateUrl('dashboard'))->setCssClass('synthese');
  112.     }
  113.     #[Route('/admin/ajax/mvt-check-uncheck'name'ajax_mvt_checked')]
  114.     public function checkUnCheckMvt(Request $requestManagerRegistry $doctrine): Response
  115.     {
  116.         $mvt null;
  117.         if($request->get('type') == BankMouvement::class) {
  118.             $mvt $this->mvtRepository->findOneBy(['id' => $request->get('mvt')]);
  119.         } elseif($request->get('type') == VehiculeMouvement::class) {
  120.             $mvt $this->vehiculeMvtRepository->findOneBy(['id' => $request->get('mvt')]);
  121.         }
  122.         if($mvt !== null) {
  123.             $mvt->setChecked($request->get('etat') == 'O' true false);
  124.             $em $doctrine->getManager();
  125.             $em->persist($mvt);
  126.             $em->flush();
  127.             return new Response('OK'200);
  128.         } else {
  129.             return new Response('KO'404);
  130.         }
  131.     }
  132. }