|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
-
- namespace Lc\CaracoleBundle\Definition\Field\User;
-
- use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
- use Lc\CaracoleBundle\Context\MerchantContextTrait;
- use Lc\CaracoleBundle\Field\AssociationField;
- use Lc\CaracoleBundle\Repository\Newsletter\NewsletterStore;
- use Lc\CaracoleBundle\Repository\User\GroupUserStore;
- use Lc\CaracoleBundle\Solver\Ticket\TicketSolver;
- use Lc\SovBundle\Definition\Field\User\UserFieldDefinition as SovUserFieldDefinition;
- use Lc\SovBundle\Definition\RolesDefinition;
- use Lc\SovBundle\Field\BooleanField;
- use Lc\SovBundle\Translation\TranslatorAdmin;
-
- use function Clue\StreamFilter\fun;
-
- class UserFieldDefinition extends SovUserFieldDefinition
- {
- use MerchantContextTrait;
-
- protected GroupUserStore $groupUserStore;
- protected NewsletterStore $newsletterStore;
-
- public function __construct(TranslatorAdmin $translatorAdmin, RolesDefinition $rolesDefinition, GroupUserStore $groupUserStore, NewsletterStore $newsletterStore)
- {
- parent::__construct($translatorAdmin, $rolesDefinition);
-
- $this->groupUserStore = $groupUserStore;
- $this->newsletterStore = $newsletterStore;
- }
-
- 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)
- ->setFormTypeOption('choice_label', function ($choice) {
- return $choice->getTitle(). '['.$choice->getMerchant().']';
- })
- ->setSortable(true),
- 'ticketTypesNotification' => ChoiceField::new('ticketTypesNotification')
- ->setSortable(true)
- ->setFormTypeOption('expanded', false)
- ->setFormTypeOption('multiple', true)
- ->setChoices($this->translatorAdmin->transChoices(
- TicketSolver::getTypeChoices(),
- 'Ticket',
- 'type'
- )),
-
- ]);
- }
-
- }
|