<?php
declare(strict_types=1);
namespace App\Admin;
use App\Entity\AdmUser;
use App\Entity\Client;
use App\Service\KeyGeneration;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollection;
use Sonata\AdminBundle\Show\ShowMapper;
use Symfony\Component\Form\Extension\Core\Type\DateType;
final class ClientAdmin extends AbstractAdmin
{
protected $datagridValues = [
'_sort_order' => 'DESC',
'_sort_by' => 'id'
];
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper->add('id');
$datagridMapper ->add('userNumber');
$datagridMapper->add('firstName');
$datagridMapper ->add('lastName');
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->add('userNumber');
$listMapper->add('firstName');
$listMapper->add('lastName');
$listMapper->add('phone');
$listMapper->add('checkList', null, [
'label' => 'Чек Лист',
'template' => 'admin/Document/list_check_list.html.twig'
]);
$listMapper->add('signingContract', null, [
'template' => 'admin/Document/list_signing_contract.html.twig'
]);
$listMapper->add('_action', null, [
'actions' => [
'show' => [],
'edit' => [],
],
]);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper->with('Клиент', ['class' => 'col-md-6 box-transition']);
$formMapper->add('phone', null, ['label' => 'Номер телефона']);
$formMapper->add('firstName', null, ['label' => 'Фамилия']);
$formMapper->add('lastName', null, ['label' => 'Имя']);
$formMapper->add('middleName', null, ['label' => 'Отчество']);
$formMapper->add('dateOfBirth', DateType::class, [
'label' => 'Дата рождения',
'widget' => 'single_text',
'required' => false,
]);
$formMapper->add('notes', null, ['label' => 'Заметки по клиенту']);
$formMapper->end();
$formMapper->with('Паспорт/Id Карта', ['class' => 'col-md-6 box-transition']);
$formMapper->add('passportNumber', null, ['label' => 'Номер']);
$formMapper->add('passportId', null, ['label' => 'Личный номер']);
$formMapper->add('passportIssueDate', DateType::class, [
'label' => 'Дата выдачи',
'widget' => 'single_text',
'required' => false,
]);
$formMapper->add('passportIssuingAuthority', null, ['label' => 'Орган выдавший документ']);
$formMapper->add('registrationAddress', null, ['label' => 'Адрес Прописки']);
$formMapper->end();
$formMapper->with('Права', ['class' => 'col-md-6 box-transition']);
$formMapper->add('driversLicenseNumber', null, ['label' => 'Номер']);
$formMapper->add('driversLicenseDate', DateType::class, [
'label' => 'Дата выдачи',
'widget' => 'single_text',
'required' => false,
]);
$formMapper->end();
// $formMapper->with('Договор', ['class' => 'col-md-12 box-transition']);
//
// $formMapper->end();
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper->add('userNumber');
$showMapper->add('firstName');
}
/**
* @param Client $object
* @return void
*/
public function prePersist($object): void
{
$object->setUserNumber(KeyGeneration::generateClientId());
$object->setAdmin($this->getCurrentUser());
}
/**
* @param Client $object
* @return void
*/
public function postPersist($object): void
{
}
protected function configureRoutes(RouteCollection $collection): void
{
parent::configureRoutes($collection);
$collection->add('signing_contract', 'signing-contract');
$collection->add('show_contract', 'show-contract');
}
// public function configureActionButtons($action, $object = null)
// {
// $buttonList['create'] = [
// // NEXT_MAJOR: Remove this line and use commented line below it instead
//// 'template' => $this->getTemplate('button_create'),
// 'template' => $this->getTemplateRegistry()->getTemplate('button_create'),
// ];
//
// if (in_array($action, ['show', 'edit', 'create']) && $object) {
// $buttonList['custom'] = [
// 'template' => 'admin/Client/custom_button.html.twig',
// ];
//
// return $buttonList;
// }
//
// return $buttonList;
// }
// protected function configureBatchActions($actions): array
// {
// if (!$this->hasAccess('edit')) {
// return [];
// }
// return [
// 'add_reason' => [
// 'label' => 'batch.add_reason',
// 'translation_domain' => 'admin',
// 'ask_confirmation' => true,
// 'template' => 'Agis2CoreBundle:LoanWriteoffAdmin:batch_add_reason.html.twig',
// ],
// 'create_order' => [
// 'label' => 'batch.create_order',
// 'translation_domain' => 'admin',
// 'ask_confirmation' => true,
// 'template' => 'Agis2CoreBundle:LoanWriteoffAdmin:batch_create_order.html.twig',
// ],
// ];
// }
}