<?php namespace App\Admin; use App\Admin\FluxAdmin; use Sonata\AdminBundle\Datagrid\DatagridMapper; use Sonata\AdminBundle\Route\RouteCollection; /** * Administration des transactions * * KOHINOS : Outil de gestion de Monnaie Locale Complémentaire * @author Julien Jorry <julien.jorry@gmail.com> */ class TransactionAdmin extends FluxAdmin { protected $translator; protected $datagridValues = [ '_sort_order' => 'DESC', '_sort_by' => 'createdAt', ]; /** * {@inheritdoc} */ public function createQuery($context = 'list') { $query = parent::createQuery($context); $query->andWhere($query->getRootAliases()[0].".parenttype = :type") ->setParameter('type', 'transaction'); ; return $query; } public function getTotalLabel() { return $this->translator->trans('Total des transactions :'); } public function getTotal() { $datagrid = $this->getDatagrid(); $datagrid->buildPager(); $query = clone $datagrid->getQuery(); $query ->select('SUM( ' . $query->getRootAlias() . '.montant) as total') ->andWhere($query->getRootAlias().".parenttype = :type") ->setParameter('type', 'transaction') ->setFirstResult(null) ->setMaxResults(null); $result = $query->execute(array(), \Doctrine\ORM\Query::HYDRATE_SINGLE_SCALAR); return $result; } /** * {@inheritdoc} */ protected function configureDatagridFilters(DatagridMapper $datagridMapper): void { $datagridMapper ->add('type', null, array( 'label' => 'Type de transaction', 'advanced_filter' => false, 'show_filter' => true )) ->add('operateur', null, array( 'label' => 'Operateur', 'advanced_filter' => false, 'show_filter' => true )) ; } protected function configureRoutes(RouteCollection $collection) { $collection->clearExcept(array('list', 'export')); } }