You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
4.1KB

  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Controller\AbstractAdminController;
  4. use App\Entity\CollectifData\CollectifData;
  5. use Lc\PietroBundle\Form\Dream\DreamType;
  6. use Lc\PietroBundle\Form\ProjectBoost\ProjectBoostType;
  7. use Lc\PietroBundle\Form\ProjectInspiring\ProjectInspiringType;
  8. use Lc\PietroBundle\Form\Revolt\RevoltType;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Doctrine\ORM\QueryBuilder;
  11. use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
  12. use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
  13. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  14. use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
  15. use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField;
  16. use EasyCorp\Bundle\EasyAdminBundle\Field\HiddenField;
  17. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  18. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  19. use Lc\SovBundle\Field\CollectionField;
  20. use Lc\SovBundle\Field\StatusField;
  21. use Lc\SovBundle\Repository\RepositoryQueryInterface;
  22. class CollectifDataCrudController extends AbstractAdminController
  23. {
  24. public static function getEntityFqcn(): string
  25. {
  26. return CollectifData::class;
  27. }
  28. public function getRepositoryQuery(): RepositoryQueryInterface
  29. {
  30. return $this->getCollectifDataContainer()->getRepositoryQuery();
  31. }
  32. public function configureFields(string $pageName): iterable
  33. {
  34. $fields = array();
  35. $fields[] = TextField::new('name');
  36. $fields[] = AssociationField::new('territory')
  37. ->setTemplatePath('crud/field/association.html.twig');
  38. $fields[] = IntegerField::new('nbParticipant');
  39. $fields[] = TextField::new('nbDream')
  40. ->onlyOnIndex();
  41. $fields[] = TextField::new('nbRevolt')
  42. ->onlyOnIndex();
  43. $fields[] = TextField::new('nbProjectBoost')
  44. ->onlyOnIndex();
  45. $fields[] = TextField::new('nbProjectInspiring')
  46. ->onlyOnIndex();
  47. $fields[] = CollectionField::new('revolt')
  48. ->setFormTypeOption('entry_type', RevoltType::class)
  49. ->setFormTypeOption('by_reference', false)
  50. ->setRequired(false)
  51. ->hideOnIndex();
  52. $fields[] = CollectionField::new('dream')
  53. ->setFormTypeOption('entry_type', DreamType::class)
  54. ->setFormTypeOption('by_reference', false)
  55. ->setRequired(false)
  56. ->hideOnIndex();
  57. $fields[] = CollectionField::new('projectBoost')
  58. ->setFormTypeOption('entry_type', ProjectBoostType::class)
  59. ->setFormTypeOption('by_reference', false)
  60. ->setRequired(false)
  61. ->hideOnIndex();
  62. $fields[] = CollectionField::new('projectinspiring')
  63. ->setFormTypeOption('entry_type', ProjectInspiringType::class)
  64. ->setFormTypeOption('by_reference', false)
  65. ->setRequired(false)
  66. ->hideOnIndex();
  67. $hasAccess = $this->isGranted('ROLE_ADMIN');
  68. if ($hasAccess) {
  69. $fields[] = StatusField::new('status')
  70. ->setFormTypeOption('choices', ['Validé' => 1, 'En attente' => 0])
  71. ->setCustomOption('toggle_label', 'Valider')
  72. ->hideOnIndex();
  73. } else {
  74. $fields[] = HiddenField::new('status')
  75. ->setFormTypeOption('data', 0)
  76. ->hideOnIndex();
  77. }
  78. return $fields;
  79. }
  80. public function createIndexQueryBuilder(
  81. SearchDto $searchDto,
  82. EntityDto $entityDto,
  83. FieldCollection $fields,
  84. FilterCollection $filters
  85. ): QueryBuilder {
  86. $queryBuilder = parent::createIndexQueryBuilder(
  87. $searchDto,
  88. $entityDto,
  89. $fields,
  90. $filters
  91. );
  92. $queryBuilder->andWhere('entity.status = ' . $searchDto->getRequest()->get('status'));
  93. return $queryBuilder;
  94. }
  95. public function persistEntity(EntityManagerInterface $entityManager, $entityInstance): void
  96. {
  97. $entityInstance->setUser($this->getUser());
  98. $entityManager->persist($entityInstance);
  99. $entityManager->flush();
  100. parent::persistEntity($entityManager, $entityInstance);
  101. }
  102. }