<?php
declare(strict_types=1);
namespace App\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 Sonata\AdminBundle\Route\RouteCollection;
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use App\Enums\TipoEquipamentoEnum;
final class PatrimonioAdmin extends BaseAdmin
{
protected $datagridValues = [
'_page' => 1,
'_sort_order' => 'DESC',
'_sort_by' => 'createdAt',
'_per_page' => 1000
];
protected function configureRoutes(RouteCollection $collection)
{
//$collection->remove('create');
}
public function prePersist($object)
{
if($object->getQuantidade()==''){
$object->setQuantidade(1);
}
$object->setFranquia($this->getUserLogado()->getFranquia());
$object->setCreatedAt(new \DateTime('now'));
parent::prePersist($object); // TODO: Change the autogenerated stub
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('tipo','doctrine_orm_callback', array(
'label' => 'Tipo',
'callback' => function($queryBuilder, $alias, $field, $value) {
if (!$value['value']) {
return;
}
$queryBuilder->andWhere($alias.'.tipo = :tipo');
$queryBuilder->setParameter('tipo',$value['value']);
return true;
}
), ChoiceType::class, array(
'choices' => TipoEquipamentoEnum::getAssociatedValues()
))
->add('codigoBarras', null, ['label'=>'Código de barras'])
->add('titulo',null, ['label'=>'Título'])
->add('marca',null, ['label'=>'Marca'])
->add('modelo',null, ['label'=>'Modelo'])
->add('numeroSerie',null, ['label'=>'Número de Série'])
->add('unidadeMedida',null, ['label'=>'Unidade de Medida'])
->add('classe',null, ['label'=>'Classe'])
//->add('proximaCalibracao', null, ['label'=>'Data próxima calibragem'])
->add('descricao',null, ['label'=>'Descrição'])
;
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->add('codigoBarras', null, ['label'=>'Código de barras'])
->add('quantidade',null, ['label'=>'Quantidade'])
->add('titulo',null, ['label'=>'Título'])
->add('marca',null, ['label'=>'Marca'])
->add('modelo',null, ['label'=>'Modelo'])
//->add('proximaCalibracao', null, ['label'=>'Data próxima calibragem'])
//->add('dataUltimaCalibragem', null, ['label'=>'Data última calibragem'])
->add('_action', null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => [],
],
]);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->add('tipo', ChoiceType::class, [
'choices' => TipoEquipamentoEnum::getAssociatedValues()
])
->add('quantidade',null, ['label'=>'Quantidade'])
->add('codigoBarras', null, ['label'=>'Código de barras'])
->add('titulo',null, ['label'=>'Título'])
->add('marca',null, ['label'=>'Marca'])
->add('modelo',null, ['label'=>'Modelo'])
->add('numeroSerie',null, ['label'=>'Número de Série'])
//->add('classe',null, ['label'=>'Classe'])
->add('unidadeMedida',null, ['label'=>'Unidade de Medida'])
->add('capacidadeMinima',null, ['label'=>'Capacidade Mínima'])
->add('capacidadeMaxima',null, ['label'=>'Capacidade Máxima'])
->add('resolucao',null, ['label'=>'Resolução'])
// ->add('capacidadeMinima', MoneyType::class, [
// 'label' => 'Capacidade Mínima',
// 'currency' => 'BRL',
// 'grouping' => false,
// 'required' => false
// ])
// ->add('capacidadeMaxima', MoneyType::class, [
// 'label' => 'Capacidade Máxima',
// 'currency' => 'BRL',
// 'grouping' => false,
// 'required' => false
// ])
// ->add('resolucao', MoneyType::class, [
// 'label' => 'Resolução',
// 'currency' => 'BRL',
// 'grouping' => false,
// 'required' => false
// ])
->add('descricao',null, ['label'=>'Descrição'])
//->add('quantidade', null, ['label'=>'Quantidade', 'attr'=>['disabled'=>true]])
//->add('dataUltimaCalibragem', DatePickerType::class,['label'=>'Data última calibragem', 'required'=>false])
//->add('proximaCalibracao', DatePickerType::class,['label'=>'Data ultima calibragem', 'required'=>false])
;
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('id', null, ['label'=>'Código do sistema'])
->add('codigoBarras', null, ['label'=>'Código de barras'])
->add('titulo',null, ['label'=>'Título'])
->add('marca',null, ['label'=>'Marca'])
->add('modelo',null, ['label'=>'Modelo'])
->add('numeroSerie',null, ['label'=>'Número de Série'])
->add('classe',null, ['label'=>'Classe'])
->add('unidadeMedida',null, ['label'=>'Unidade de Medida'])
->add('capacidadeMinima',null, ['label'=>'Capacidade Mínima'])
->add('capacidadeMaxima',null, ['label'=>'Capacidade Máxima'])
->add('resolucao',null, ['label'=>'Resolução'])
->add('descricao',null, ['label'=>'Descrição'])
->add('proximaCalibracao', null, ['label'=>'Data próxima calibragem'])
->add('dataUltimaCalibragem', null, ['label'=>'Data última calibragem'])
->add('createdAt', null, ['label'=>'Data do cadastro'])
;
}
}