<?php
declare(strict_types=1);
namespace App\Nolimit\Company\Admin;
use App\Entity\Company;
use App\Entity\CompanyType;
use App\Entity\Traits\ToStringNameTrait;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\FieldDescription\FieldDescriptionInterface;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollection;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\AdminBundle\Templating\TemplateRegistry;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;
final class CompanyAdmin extends AbstractAdmin
{
protected $translationDomain = 'messages';
use ToStringNameTrait;
/**
* @param RouteCollection $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection):void
{
$collection
->remove('create')
->remove('edit')
->remove('delete')
->add('company_add', 'company_add')
->add('company_save', 'company_save')
->add('company_edit', $this->getRouterIdParameter().'/company_edit')
->add('company_check', $this->getRouterIdParameter().'/company_check')
->add('company_delete', $this->getRouterIdParameter().'/company_delete')
->add('delete_log', $this->getRouterIdParameter().'/delete_log')
->add('company_load_city_by_county', 'company_load_city_by_county')
->add('company_get_contact_person_data', 'company_get_contact_person_data')
->add('company_anaf_add', 'company_anaf_add')
->add('company_anaf_display', 'company_anaf_display')
->add('company_anaf_display_save', 'company_anaf_display_save')
->add('company_populate_city', 'company_populate_city')
;
}
protected function configureBatchActions($actions):array
{
if (
$this->hasRoute('edit') && $this->hasAccess('edit') &&
$this->hasRoute('delete') && $this->hasAccess('delete')
) {
$actions['merge'] = [
'ask_confirmation' => true
];
}
return $actions;
}
protected function configureDatagridFilters(DatagridMapper $filter): void
{
$filter
->add('name', null, array('show_filter' => true))
->add('codFiscal', null, array('show_filter' => true))
->add('nrRegCom')
->add('address')
->add('banca')
->add('contBancar')
->add('contactPerson')
->add('tel')
->add('email')
->add('type')
;
}
protected function configureListFields(ListMapper $list): void
{
$list
->add('id', 'number', array('label' => 'Nr.'))
->add('name')
->add('codFiscal')
->add('nrRegCom')
->add('address')
->add('banca')
->add('contBancar')
->add('contactPerson')
->add('tel')
->add('email')
->add(ListMapper::NAME_ACTIONS, null, [
'actions' => [
'show_reception' => [
'template' => '/company/CRUD/list__action_company_show.html.twig',
],
'edit_reception' => [
'template' => '/company/CRUD/list__action_company_edit.html.twig',
],
'check_reception' => [
'template' => '/company/CRUD/list__action_company_check_anaf.html.twig',
],
// 'clone' => [
// 'template' => '/company/CRUD/list__action_company_clone.html.twig',
// ],
'delete_log' => [
'template' => '/company/CRUD/list__action_company_logical_delete.html.twig',
],
],
]);
}
protected function configureFormFields(FormMapper $form): void
{
// $this->builder = $form->getFormBuilder();
// $form
// ->with('Date de baza', ['class' => 'col-md-6 col-sx-12 '])
// ->add('type', ChoiceType::class, [
// 'expanded' => true,
// 'choices' => [
// 'Persoana fizica'=>1,
// 'Persoana juridica'=> "2"
// ],
// ])
// ->add('name')
// ->add('codFiscal')
// ->add('nrRegCom')
// ->add('county', EntityType::class, [
// 'class' => Counties::class,
// 'multiple' => false,
// 'placeholder' => 'Județ',
// 'required' => true,
// 'attr' => array('data-dependent-id' => 'country'),
// ])
// ->add('city', EntityType::class, [
// 'class' => Cities::class,
// 'placeholder'=>'Localitate',
// //'auto_initialize'=> 'false'
// ])
// ->add('address')
// ->add('banca')
// ->add('contBancar')
// ->add('contactPerson')
// ->add('contactPersonTitle')
// ->add('tel')
// ->add('email')
// ->end()
// ->with('Date de atestat', ['class' => 'col-md-6 col-sx-12'])
// ->add('atestatExpSeria')
// ->add('atestatExpNr')
// ->add('atestatExpValabil')
// ->end()
// ;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Company::class
));
}
protected function configureShowFields(ShowMapper $show): void
{
$show
->add('name')
->add('codFiscal')
->add('nrRegCom')
->add('country')
->add('address')
->add('banca')
->add('contBancar')
->add('contactPerson')
->add('tel')
->add('email')
->add('type', FieldDescriptionInterface::TYPE_CHOICE, [
'choices' => [
Company::COMPANY_TYPE_PF=>'Persoana fizica',
Company::COMPANY_TYPE_PJ=>'Persoana juridica'
],
])
->add('companyType', FieldDescriptionInterface::TYPE_CHOICE, [
'choices' => [
CompanyType::COMPANY_TYPE_K=>'Kliens',
CompanyType::COMPANY_TYPE_B=>'Beszálító'
],
])
;
}
/**
* @param string $action
* @param null $object
* @return array
*/
public function configureActionButtons($buttonList, $action, $object = null): array
{
$buttonList['addFirmaAnafApi'] = ['template' => '/company/CRUD/addFirmaAnafApi_button.html.twig'];
$list = parent::configureActionButtons($buttonList, $action, $object);
$list['custom_action'] = array(
'template' => '/company/CRUD/add_new_company.html.twig',
);
return $list;
}
}