src/Controller/Admin/CartFinishedCrudController.php line 71

  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\CartFinished;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  5. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  6. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  7. use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
  8. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  9. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\DateField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
  13. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  14. use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
  15. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  16. use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
  17. use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
  18. use Doctrine\ORM\QueryBuilder;
  19. use Doctrine\ORM\EntityManagerInterface;
  20. class CartFinishedCrudController extends AbstractCrudController
  21. {
  22.     private EntityManagerInterface $entityManager;
  23.     public function __construct(EntityManagerInterface $entityManager)
  24.     {
  25.         $this->entityManager $entityManager;
  26.     }
  27.     public static function getEntityFqcn(): string
  28.     {
  29.         return CartFinished::class;
  30.     }
  31.     public function configureActions(Actions $actions): Actions
  32.     {
  33.         return $actions
  34.             ->remove(Crud::PAGE_INDEXAction::NEW);
  35.     }
  36.     public function configureFilters(Filters $filters): Filters
  37.     {
  38.         return $filters
  39.             ->add('user')
  40.             ->add('commandId')
  41.             ->add('commandDate')
  42.             ->add('deliveryBillingAddress')
  43.             ->add('deliveryAddress')
  44.             ->add('totalPaid')
  45.             ->add('pourcentRebate');
  46.     }
  47.     public function configureCrud(Crud $crud): Crud
  48.     {
  49.         return $crud
  50.             ->setPageTitle('index''Commandes passées')
  51.             ->setEntityLabelInSingular('Commande')
  52.             ->setDefaultSort(['commandDate' => 'DESC']);
  53.     }
  54.     public function configureFields(string $pageName): iterable
  55.     {
  56.         yield AssociationField::new('user''Client')
  57.             ->formatValue(function ($value$entity) {
  58.                 return $entity->getUser() ? $entity->getUser()->getEmail() : 'Aucun client';
  59.             })
  60.             ->hideOnForm();
  61.         yield AssociationField::new('user''Entreprise')
  62.             ->formatValue(function ($value$entity) {
  63.                 return $entity->getUser() ? $entity->getUser()->getCompanyNameFromAdditionalInfo() : '';
  64.             })
  65.             ->hideOnForm();
  66.         yield IntegerField::new('commandId''ID de la commande')->hideOnIndex();
  67.         yield DateField::new('commandDate''Date commande')->setTimezone('Europe/Brussels');
  68.         yield AssociationField::new('deliveryBillingAddress''Facturation')->hideOnForm();
  69.         yield AssociationField::new('deliveryAddress''Livraison')->hideOnForm();
  70.         yield NumberField::new('totalPaid''Prix total commande');
  71.         yield NumberField::new('pourcentRebate''remise quantité');
  72.     }
  73.     public function createIndexQueryBuilder(SearchDto $searchDtoEntityDto $entityDtoFieldCollection $fieldsFilterCollection $filters): QueryBuilder
  74.     {
  75.         $queryBuilder parent::createIndexQueryBuilder($searchDto$entityDto$fields$filters);
  76.         
  77.         // Force le chargement de la relation user avec JOIN
  78.         $queryBuilder->leftJoin('entity.user''u')->addSelect('u');
  79.         
  80.         return $queryBuilder;
  81.     }
  82. }