<?php
declare(strict_types=1);
namespace App\Nolimit\Inventory\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\Form\Type\DatePickerType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Validator\Constraints\DateTime;
final class InventoryItemAdmin extends AbstractAdmin
{
protected $translationDomain = 'messages';
/**
* @var Translator
*/
public Translator $translate;
/**
* InventoryItemAdmin constructor.
*/
public function __construct(?string $code = null, ?string $class = null, ?string $baseControllerName = null)
{
parent::__construct($code, $class, $baseControllerName);
$this->translate = new Translator($this->getIdParameter('locale'));
}
protected function configureDatagridFilters(DatagridMapper $filter): void
{
$filter
->add('productName')
->add('quantity')
->add('price')
->add('dateOfPurchase')
->add('company')
->add('invoice')
->add('inventoryNr')
->add('createdAt')
->add('updatedAt')
;
}
protected function configureListFields(ListMapper $list): void
{
$list
->add('productName')
->add('quantity')
->add('price')
->add('company')
->add('invoice')
->add('dateOfPurchase','date' ,['format' => 'Y-m-d','sort_field' => ['dateOfPurchase', 'Desc']])
->add('amortizationEndDate','date' ,['format' => 'Y-m-d','sort_field' => ['dateOfPurchase', 'Desc']])
->add('inventoryNr')
->add(ListMapper::NAME_ACTIONS, null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => [],
],
]);
}
protected function configureFormFields(FormMapper $form): void
{
$form
->add('productName')
->add('quantity')
->add('price')
->add('dateOfPurchase', DateType::class,['required' => true, 'widget' => 'single_text', 'format' => 'Y-m-d', 'html5' => false])
->add('amortizationEndDate', DateType::class, ['label'=> $this->translate->trans('Amortization End Date'),'required' => true, 'widget' => 'single_text','format' => 'Y-m-d', 'html5' => false])
->add('company', TextType::class,['label'=> $this->translate->trans('Supplier'),'required' => true])
->add('invoice')
->add('inventoryNr')
;
}
protected function configureShowFields(ShowMapper $show): void
{
$show
->add('productName')
->add('quantity')
->add('price')
->add('dateOfPurchase')
->add('company')
->add('invoice')
->add('inventoryNr')
->add('createdAt')
->add('updatedAt')
;
}
}