src/Controller/Admin/AppointmentCrudController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Appointment;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
  6. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  7. use EasyCorp\Bundle\EasyAdminBundle\Config\Filters;
  8. use EasyCorp\Bundle\EasyAdminBundle\Filter\ChoiceFilter;
  9. use EasyCorp\Bundle\EasyAdminBundle\Config\Actions;
  10. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  13. use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField;
  14. use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
  15. use EasyCorp\Bundle\EasyAdminBundle\Field\TelephoneField;
  16. use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
  17. class AppointmentCrudController extends AbstractCrudController
  18. {
  19.     private $states = array(
  20.         Appointment::APPOINTMENT_PENDING => 'En attente',
  21.         Appointment::APPOINTMENT_VALIDE => 'Valide',
  22.         Appointment::APPOINTMENT_UPDATED => 'Modifié',
  23.         Appointment::APPOINTMENT_REJECTED => 'Annulé',
  24.     );
  25.     public static function getEntityFqcn(): string
  26.     {
  27.         return Appointment::class;
  28.     }
  29.     public function configureCrud(Crud $crud): Crud
  30.     {
  31.         return $crud
  32.             ->setEntityLabelInSingular('app.admin.appointment')
  33.             ->setEntityLabelInPlural('app.admin.appointment')
  34.             ->setEntityPermission('ROLE_USER')
  35.             ->setPageTitle('index''Liste des %entity_label_plural%')
  36.             ->setPageTitle('new''Ajouter un nouveau %entity_label_singular%')
  37.             ->setPageTitle('detail''Détails')
  38.             ->setPageTitle('edit''Modification')
  39.             ->setHelp('new''Nouveau rendez-vous')
  40.             ->setHelp('index''Gérer les rendez-vous')
  41.             ->setSearchFields(['firstName''lastName''email''phone''details''object'])
  42.             ->setDefaultSort(['id' => 'ASC'])
  43.             ->setPaginatorPageSize(10)
  44.             ->setPaginatorRangeSize(3)
  45.             ->addFormTheme('@FOSCKEditor/Form/ckeditor_widget.html.twig')
  46.         ;
  47.     }
  48.     public function configureActions(Actions $actions): Actions
  49.     {
  50.         return $actions
  51.             // PAGE_INDEX
  52.             ->remove(Crud::PAGE_INDEXAction::NEW)
  53.             ->add(Crud::PAGE_INDEXAction::DETAIL)
  54.             ->update(Crud::PAGE_INDEXAction::DETAIL, function (Action $action) {
  55.                 return $action->setIcon('far fa-eye')->addCssClass('btn btn-sm btn-warning')->setLabel(false);
  56.             })
  57.             ->update(Crud::PAGE_INDEXAction::EDIT, function (Action $action) {
  58.                 return $action->setIcon('far fa-edit')->addCssClass('btn btn-sm btn-success')->setLabel(false);
  59.             })
  60.             ->update(Crud::PAGE_INDEXAction::DELETE, function (Action $action) {
  61.                 return $action->setIcon('far fa-trash-alt')->setCssClass('btn btn-sm btn-danger font-weight-bolder action-delete ')->setLabel(false);
  62.             })
  63.             // PAGE_NEW
  64.             ->update(Crud::PAGE_NEWAction::SAVE_AND_RETURN, function (Action $action) {
  65.                 return $action->setIcon('fas fa-plus')->addCssClass('btn btn-sm btn-success');
  66.             })
  67.             ->update(Crud::PAGE_NEWAction::SAVE_AND_ADD_ANOTHER, function (Action $action) {
  68.                 return $action->setIcon('fas fa-plus-circle')->setCssClass('btn btn-sm btn-primary');
  69.             })
  70.             ->add(Crud::PAGE_NEWAction::INDEX)->update(Crud::PAGE_NEWAction::INDEX, function (Action $action) {
  71.                 return $action->setIcon('fas fa-list')->setCssClass('btn btn-sm btn-warning');
  72.             })
  73.             // PAGE_EDIT
  74.             ->remove(Crud::PAGE_EDITAction::SAVE_AND_CONTINUE)
  75.             ->update(Crud::PAGE_EDITAction::SAVE_AND_RETURN, function (Action $action) {
  76.                 return $action->setIcon('fas fa-edit')->addCssClass('btn btn-sm btn-success');
  77.             })
  78.             ->add(Crud::PAGE_EDITAction::DETAIL)->update(Crud::PAGE_EDITAction::DETAIL, function (Action $action) {
  79.                 return $action->setIcon('far fa-eye')->setCssClass('btn btn-sm btn-primary font-weight-bolder action-detail ss');
  80.             })
  81.             ->add(Crud::PAGE_EDITAction::INDEX)->update(Crud::PAGE_EDITAction::INDEX, function (Action $action) {
  82.                 return $action->setIcon('fas fa-list')->addCssClass('btn btn-sm btn-warning');
  83.             })
  84.             // PAGE_DETAIL
  85.             ->update(Crud::PAGE_DETAILAction::EDIT, function (Action $action) {
  86.                 return $action->setIcon('fas fa-edit')->addCssClass('btn btn-sm btn-success');
  87.             })
  88.             ->update(Crud::PAGE_DETAILAction::DELETE, function (Action $action) {
  89.                 return $action->setIcon('far fa-trash-alt')->setCssClass('btn btn-sm btn-danger font-weight-bolder action-delete ');
  90.             })
  91.             ->update(Crud::PAGE_DETAILAction::INDEX, function (Action $action) {
  92.                 return $action->setIcon('fas fa-list')->setCssClass('btn btn-sm btn-warning');
  93.             })
  94.             // BATCH ACTIONS
  95.             ->update(Crud::PAGE_INDEXAction::BATCH_DELETE, function (Action $action) {
  96.                 return $action->setIcon('far fa-trash-alt')->setCssClass('btn btn-sm btn-danger font-weight-bolder action-batchDelete ss');
  97.             })
  98.             // Reorder actions
  99.             ->reorder(Crud::PAGE_DETAIL, [Action::INDEXAction::DELETEAction::EDIT])
  100.             ;
  101.     }
  102.     public function configureFields(string $pageName): iterable
  103.     {
  104.         return [
  105.             IdField::new('id')->hideOnForm(),
  106.             TextField::new('firstName''Firstname')->hideOnForm(),
  107.             TextField::new('lastName''Lastname')->hideOnForm(),
  108.             EmailField::new('email')->hideOnForm(),
  109.             TelephoneField::new('phone')->hideOnForm(),
  110.             TextField::new('object')->onlyOnDetail(),
  111.             TextField::new('details')->setFormType(CKEditorType::class)->onlyOnDetail(),
  112.             DateTimeField::new('availablity')->hideOnForm(),
  113.             DateTimeField::new('availablityConfirmed''Confirmation'),
  114.             ChoiceField::new('status')->setChoices(array_flip($this->states)),
  115.             DateTimeField::new('createdAt')->setFormat('dd/MM/yyyy HH:mm')->onlyOnDetail(),
  116.             DateTimeField::new('updatedAt')->setFormat('dd/MM/yyyy HH:mm')->onlyOnDetail(),
  117.         ];
  118.     }
  119.     public function configureFilters(Filters $filters): Filters
  120.     {
  121.         return $filters
  122.             ->add('firstName''Firstname')
  123.             ->add('lastName''Lastname')
  124.             ->add('email')
  125.             ->add('phone')
  126.             ->add('object')
  127.             ->add('availablity')
  128.             ->add('availablityConfirmed''Confirmation')
  129.             ->add(ChoiceFilter::new('status')->setChoices(array_flip($this->states)))
  130.             ->add('createdAt')
  131.         ;
  132.     }
  133.     public function updateEntity(EntityManagerInterface $entityManager$entityInstance): void
  134.     {
  135.         $entityInstance->setUpdatedAt(new \DateTimeImmutable());
  136.         parent::updateEntity($entityManager$entityInstance);
  137.     }
  138. }