<?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\Form\Type\ModelType;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\Form\Type\DatePickerType;
use Sonata\Form\Type\DateTimePickerType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
final class DiarioObraAdmin extends BaseAdmin
{
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('id')
->add('responsavel_nome','doctrine_orm_callback',[
'label'=>'Responsável',
'callback' => array($this, 'filterResponsavel'),
])
->add('dataHoraInicio')
->add('horaInicioAlmoco')
->add('horaFimAlmoco')
->add('horaFimDiaria')
->add('memorial')
;
}
public function filterResponsavel($queryBuilder, $alias, $field, $value)
{
if (!$value['value']) {
return;
}
$value = mb_strtolower($value['value']);
$queryBuilder
->andWhere("UNACCENT(LOWER($alias.responsavel_nome)) LIKE UNACCENT(:responsavel_nome)" )
->setParameter('responsavel_nome', "%$value%");
return true;
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->add('ordemServico.proposta.numeroFormatado', null, ['label'=>'Ordem de Serviço'])
->add('responsavel_nome', null, ['label'=>'Responsável'])
->add('dataHoraInicio', null, ['label'=>'Início'])
->add('horaFimDiaria', null, ['label'=>'Fim'])
->add('_action', null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => [],
],
]);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->add('ordemServico', ModelType::class, [
'placeholder' => '-- Selecione --',
'label' => 'Ordem de Serviço',
//'property' => 'id',
'required' => true,
'expanded' => false,
'multiple' => false,
'btn_add' => false,
])
->add('servico', ModelType::class, [
'placeholder' => '-- Selecione --',
'label' => 'Serviço',
//'property' => 'id',
'required' => true,
'expanded' => false,
'multiple' => false,
'btn_add' => false,
])
->add('responsavel_nome')
->add('dataHoraInicio', DatePickerType::class,['label'=>'Início da diária', 'required'=>true])
->add('horaInicioAlmoco', DateTimePickerType::class,['dp_use_seconds'=>false, 'format'=>"HH:mm", 'label'=>'Início do almoço', 'dp_pick_date' => false])
->add('horaFimAlmoco', DateTimePickerType::class,['dp_use_seconds'=>false,'format'=>"HH:mm", 'label'=>'Fim do almoço', 'dp_pick_date' => false])
->add('horaFimDiaria', DateTimePickerType::class,['dp_use_seconds'=>false, 'format'=>"HH:mm", 'label'=>'Fim da diária', 'dp_pick_date' => false])
->add('memorial')
;
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('id')
->add('responsavel_nome')
->add('dataHoraInicio')
->add('horaInicioAlmoco')
->add('horaFimAlmoco')
->add('horaFimDiaria')
->add('memorial')
;
}
public function prePersist($object)
{
$object->setCadastradoPor($this->getUserLogado());
$object->setCreatedAt(new \DateTime('now'));
$object->setUpdatedAt(new \DateTime('now'));
parent::prePersist($object); // TODO: Change the autogenerated stub
}
public function preUpdate($object)
{
$object->setUpdatedAt(new \DateTime('now'));
parent::preUpdate($object); // TODO: Change the autogenerated stub
}
}