groupUserStore = $groupUserStore; $this->newsletterStore = $newsletterStore; } public function configureIndex(): array { return [ 'id', 'gender', 'lastname', 'firstname', 'email', 'groupUsers', 'birthdate', 'countOrder', 'totalSpent', 'isSaleAlwaysOpen', ]; } public function configureForm(): array { return [ 'gender', 'lastname', 'firstname', 'email', 'phone', 'birthdate', 'groupUsers', 'isSaleAlwaysOpen', 'newsletters', 'ticketTypesNotification', ]; } public function configureFields(): array { $groupUsers = $this->groupUserStore->setMerchant($this->merchant)->getAll(); $newsletters = $this->newsletterStore->getAll(); return array_merge(parent::configureFields(), [ 'isSaleAlwaysOpen' => BooleanField::new('isSaleAlwaysOpen'), 'newsletters' => AssociationField::new('newsletters') ->setFormTypeOption('choices', $newsletters) ->setFormTypeOption('choice_label', function ($choice) { return $choice->getTitle() . '[' . $choice->getSection()->getMerchant() . ']'; }) ->setSortable(true), 'groupUsers' => AssociationField::new('groupUsers') ->setFormTypeOption('choices', $groupUsers) ->setCustomOption('class', GroupUser::class) ->setTemplatePath('@LcSov/adminlte/crud/field/association_many.html.twig') ->setFormTypeOption('choice_label', function ($choice) { return $choice->getTitle() . '[' . $choice->getMerchant() . ']'; }) ->setSortable(false), 'ticketTypesNotification' => ChoiceField::new('ticketTypesNotification') ->setSortable(true) ->setFormTypeOption('expanded', false) ->setFormTypeOption('multiple', true) ->setChoices( $this->translatorAdmin->transChoices( TicketSolver::getTypeChoices(), 'Ticket', 'type' ) ), 'countOrder' => NumberField::new('countOrder') ->setFormTypeOption('mapped', false) ->setCustomOption('filter', false) ->setTemplatePath('@LcCaracole/admin/user/field/count_order.html.twig'), 'totalSpent' => NumberField::new('totalSpent') ->setFormTypeOption('mapped', false) ->setCustomOption('filter', false) ->setTemplatePath('@LcCaracole/admin/user/field/total_spent.html.twig'), ]); } }