123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- <?php
- namespace AuditBundle\Controller;
- use Symfony\Bundle\FrameworkBundle\Controller\Controller;
- use Symfony\Component\HttpFoundation\Request;
- use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
- use AuditBundle\Form\Type\AuditFilterType;
- use AuditBundle\Services\AuditDataService;
- use SimpleThings\EntityAudit\Exception\NoRevisionFoundException;
- class AuditController extends Controller
- {
- /**
- *
- * @param Request $request
- *
- * @return string
- *
- * @Route("/admin/audit", name="entity_audit")
- */
- public function indexAction(Request $request)
- {
- /* @var $auditDataService AuditDataService */
- $auditDataService = $this->get('audit.audit_data.service');
- $entities = $auditDataService->getEntities();
- $columns = $auditDataService->getColumns();
- $entity = null;
- $count = null;
- $result = null;
- $page = null;
- $pages = 1;
- $is_post = false;
- /* @var $filterForm AuditFilterType */
- $filterForm = $this->createForm(AuditFilterType::class);
- $filterForm->handleRequest($request);
- $showRowFilter = array();
- $showRowFilter['types'] = array('display'=>'none','check'=>'fa fa-square-o');
- $showRowFilter['users'] = array('display'=>'none','check'=>'fa fa-square-o');
- $showRowFilter['idx'] = array('display'=>'none','check'=>'fa fa-square-o');
- $showRowFilter['dateTo'] = array('display'=>'none','check'=>'fa fa-square-o');
- $showRowFilter['dateFrom'] = array('display'=>'none','check'=>'fa fa-square-o');
- $showRowFilter['searchValue'] = array('display'=>'none','check'=>'fa fa-square-o');
- $showRowFilter['resxpage'] = array('display'=>'none','check'=>'fa fa-square-o');
- if ($filterForm->isSubmitted()) {
- $data = $filterForm->getData();
- $results = $auditDataService->getResults($data);
- foreach($data as $row => $value) {
- if(is_null($value) || empty($value)) {
- $showRowFilter[$row] = array('display'=>'none','check'=>'fa fa-square-o');
- } else {
- $showRowFilter[$row] = array('display'=>'block','check'=>'fa fa-check-square-o');
- }
- }
- $is_post = true;
- extract($data);
- extract($results);
- $entity = array_search($entity, $entities);
- }
- return $this->render('AuditBundle:Audit:index.html.twig', array(
- 'base_template' => $this->getBaseTemplate($request),
- 'admin_pool' => $this->get('sonata.admin.pool'),
- 'entities' => $entities,
- 'columns' => $columns,
- 'form' => $filterForm->createView(),
- 'is_post' => $is_post,
- 'data' => $result,
- 'entity' => $entity,
- 'total' => $count,
- 'params' => array(
- 'label' => $this->get('translator')->trans('Auditoría de Entidades', array(), 'AuditBundle'),
- 'regs' => $count,
- 'page' => $page,
- 'pages' => $pages
- ),
- 'showRowFilter' => $showRowFilter
- ));
- }
- /**
- * @param Request $request
- * @param string $classValue
- * @param id $id
- * @param Revision $rev
- *
- * @return string
- *
- * @Route("/admin/audit/view/{classValue}/{id}/{rev}", name="entity_audit_view_details")
- */
- public function viewAction(Request $request, $classValue, $id, $rev)
- {
- /* @var $auditDataService AuditDataService */
- $auditDataService = $this->get('audit.audit_data.service');
- $className = array_search($classValue, $auditDataService->getEntities());
- $result = $auditDataService->viewRevision($className, $id, $rev);
- $data = array(
- 'label' => $this->get('translator')->trans(
- 'Detalles de la revisión: %rev%', array(
- '%rev%' => $rev
- ), 'AuditBundle'),
- 'className' => $className,
- 'classValue' => $classValue,
- 'id' => $id,
- 'rev' => $rev,
- 'revdata' => $result['revdata'],
- 'details' => $result['rev_details'],
- 'revisions' => $result['rev_revisions'],
- );
- return $this->render('AuditBundle:Audit:view.html.twig', array(
- 'base_template' => $this->getBaseTemplate($request),
- 'data' => $data,
- 'admin_pool' => $this->get('sonata.admin.pool'),
- ));
- }
- /**
- * @param Request $request
- * @param string $classValue
- * @param int $id
- * @param Revision $oldRev
- * @param Revision $newRev
- *
- * @return string
- *
- * @Route("/admin/flowdat2/entity/audit/compare/{classValue}/{id}", name="entity_audit_compare_revs")
- */
- public function compareAction(Request $request, $classValue, $id, $oldRev = null, $newRev = null)
- {
- try {
- $oldRev = $request->query->get('oldRev');
- $newRev = $request->query->get('newRev');
- /* @var $auditDataService AuditDataService */
- $auditDataService = $this->get('audit.audit_data.service');
- $className = array_search($classValue, $auditDataService->getEntities());
- $diff = $auditDataService->diff($className, $id, $oldRev, $newRev);
- $data = array(
- 'label' => $this->get('translator')->trans(
- 'Comparativa entre las revisiones %oldRev% y %newRev%', array(
- '%oldRev%' => $oldRev,
- '%newRev%' => $newRev
- ), 'AuditBundle'),
- 'className' => $className,
- 'classValue' => $classValue,
- 'id' => $id,
- 'oldRev' => $oldRev,
- 'newRev' => $newRev,
- 'diff' => $diff,
- );
- return $this->render('AuditBundle:Audit:compare.html.twig', array(
- 'base_template' => $this->getBaseTemplate($request),
- 'data' => $data,
- 'admin_pool' => $this->get('sonata.admin.pool'),
- ));
- } catch (NoRevisionFoundException $ex) {
- $this->get('session')->getFlashBag()->add('sonata_error', $ex->getMessage());
-
- return $this->redirect($this->generateUrl('entity_audit'));
- }
- }
- /**
- * @return string
- */
- private function getBaseTemplate(Request $request)
- {
- $adminPool = $this->get('sonata.admin.pool');
- if ($request->isXmlHttpRequest()) {
- return $adminPool->getTemplate('ajax');
- }
- return $adminPool->getTemplate('layout');
- }
- }
|