src/Admin/ClientAdmin.php line 19

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Admin;
  4. use App\Entity\AdmUser;
  5. use App\Entity\Client;
  6. use App\Service\KeyGeneration;
  7. use Sonata\AdminBundle\Admin\AdminInterface;
  8. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  9. use Sonata\AdminBundle\Datagrid\ListMapper;
  10. use Sonata\AdminBundle\Form\FormMapper;
  11. use Sonata\AdminBundle\Route\RouteCollection;
  12. use Sonata\AdminBundle\Show\ShowMapper;
  13. use Symfony\Component\Form\Extension\Core\Type\DateType;
  14. final class ClientAdmin extends AbstractAdmin
  15. {
  16.     protected $datagridValues = [
  17.         '_sort_order' => 'DESC',
  18.         '_sort_by' => 'id'
  19.     ];
  20.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  21.     {
  22.         $datagridMapper->add('id');
  23.         $datagridMapper ->add('userNumber');
  24.         $datagridMapper->add('firstName');
  25.         $datagridMapper ->add('lastName');
  26.     }
  27.     protected function configureListFields(ListMapper $listMapper): void
  28.     {
  29.         $listMapper->add('userNumber');
  30.         $listMapper->add('firstName');
  31.         $listMapper->add('lastName');
  32.         $listMapper->add('phone');
  33.         $listMapper->add('checkList'null,  [
  34.             'label' => 'Чек Лист',
  35.             'template' => 'admin/Document/list_check_list.html.twig'
  36.         ]);
  37.         $listMapper->add('signingContract'null,  [
  38.             'template' => 'admin/Document/list_signing_contract.html.twig'
  39.         ]);
  40.         $listMapper->add('_action'null, [
  41.             'actions' => [
  42.                 'show' => [],
  43.                 'edit' => [],
  44.             ],
  45.         ]);
  46.     }
  47.     protected function configureFormFields(FormMapper $formMapper): void
  48.     {
  49.         $formMapper->with('Клиент', ['class' => 'col-md-6 box-transition']);
  50.         $formMapper->add('phone'null, ['label' => 'Номер телефона']);
  51.         $formMapper->add('firstName'null, ['label' => 'Фамилия']);
  52.         $formMapper->add('lastName'null, ['label' => 'Имя']);
  53.         $formMapper->add('middleName'null, ['label' => 'Отчество']);
  54.         $formMapper->add('dateOfBirth'DateType::class, [
  55.             'label' => 'Дата рождения',
  56.             'widget' => 'single_text',
  57.             'required' => false,
  58.         ]);
  59.         $formMapper->add('notes'null, ['label' => 'Заметки по клиенту']);
  60.         $formMapper->end();
  61.         $formMapper->with('Паспорт/Id Карта', ['class' => 'col-md-6 box-transition']);
  62.         $formMapper->add('passportNumber'null, ['label' => 'Номер']);
  63.         $formMapper->add('passportId'null, ['label' => 'Личный номер']);
  64.         $formMapper->add('passportIssueDate'DateType::class, [
  65.             'label' => 'Дата выдачи',
  66.             'widget' => 'single_text',
  67.             'required' => false,
  68.         ]);
  69.         $formMapper->add('passportIssuingAuthority'null, ['label' => 'Орган выдавший документ']);
  70.         $formMapper->add('registrationAddress'null, ['label' => 'Адрес Прописки']);
  71.         $formMapper->end();
  72.         $formMapper->with('Права', ['class' => 'col-md-6 box-transition']);
  73.         $formMapper->add('driversLicenseNumber'null, ['label' => 'Номер']);
  74.         $formMapper->add('driversLicenseDate'DateType::class, [
  75.             'label' => 'Дата выдачи',
  76.             'widget' => 'single_text',
  77.             'required' => false,
  78.         ]);
  79.         $formMapper->end();
  80. //        $formMapper->with('Договор', ['class' => 'col-md-12 box-transition']);
  81. //
  82. //        $formMapper->end();
  83.     }
  84.     protected function configureShowFields(ShowMapper $showMapper): void
  85.     {
  86.         $showMapper->add('userNumber');
  87.         $showMapper->add('firstName');
  88.     }
  89.     /**
  90.      * @param Client $object
  91.      * @return void
  92.      */
  93.     public function prePersist($object): void
  94.     {
  95.         $object->setUserNumber(KeyGeneration::generateClientId());
  96.         $object->setAdmin($this->getCurrentUser());
  97.     }
  98.     /**
  99.      * @param Client $object
  100.      * @return void
  101.      */
  102.     public function postPersist($object): void
  103.     {
  104.     }
  105.     protected function configureRoutes(RouteCollection $collection): void
  106.     {
  107.         parent::configureRoutes($collection);
  108.         $collection->add('signing_contract''signing-contract');
  109.         $collection->add('show_contract''show-contract');
  110.     }
  111. //    public function configureActionButtons($action, $object = null)
  112. //    {
  113. //        $buttonList['create'] = [
  114. //            // NEXT_MAJOR: Remove this line and use commented line below it instead
  115. ////            'template' => $this->getTemplate('button_create'),
  116. //                'template' => $this->getTemplateRegistry()->getTemplate('button_create'),
  117. //        ];
  118. //
  119. //        if (in_array($action, ['show', 'edit', 'create']) && $object) {
  120. //            $buttonList['custom'] = [
  121. //                'template' => 'admin/Client/custom_button.html.twig',
  122. //            ];
  123. //
  124. //            return $buttonList;
  125. //        }
  126. //
  127. //        return $buttonList;
  128. //    }
  129. //    protected function configureBatchActions($actions): array
  130. //    {
  131. //        if (!$this->hasAccess('edit')) {
  132. //            return [];
  133. //        }
  134. //        return [
  135. //            'add_reason' => [
  136. //                'label' => 'batch.add_reason',
  137. //                'translation_domain' => 'admin',
  138. //                'ask_confirmation' => true,
  139. //                'template' => 'Agis2CoreBundle:LoanWriteoffAdmin:batch_add_reason.html.twig',
  140. //            ],
  141. //            'create_order' => [
  142. //                'label' => 'batch.create_order',
  143. //                'translation_domain' => 'admin',
  144. //                'ask_confirmation' => true,
  145. //                'template' => 'Agis2CoreBundle:LoanWriteoffAdmin:batch_create_order.html.twig',
  146. //            ],
  147. //        ];
  148. //    }
  149. }