Skip to content
Snippets Groups Projects
Select Git revision
  • f1eba1aa763efd39ad610438e1211a65f11bbe0c
  • master default protected
  • release-1.3.10
  • popover-bootstrap-3.4
  • zf-3.x
  • 3.0.9
  • 3.0.8
  • 1.3.10
  • 3.0.7
  • 3.0.6
  • 3.0.5
  • 3.0.4
  • 3.0.3
  • 3.0.2
  • 3.0.1
  • 3.0.0
  • 1.3.9
  • 1.3.8
  • 1.3.7
  • 1.3.6
  • 1.3.5
  • 1.3.4
  • 1.3.3
  • 1.3.2
  • 1.3.1
25 results

Db.php

Blame
  • Forked from lib / unicaen / auth
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    DifferentielController.php 3.18 KiB
    <?php
    
    namespace UnicaenImport\Controller;
    
    use UnicaenImport\Entity\Differentiel\Query;
    use UnicaenImport\Provider\Privilege\Privileges;
    use UnicaenImport\Service\Traits\DifferentielServiceAwareTrait;
    use UnicaenImport\Service\Traits\QueryGeneratorServiceAwareTrait;
    use UnicaenImport\Service\Traits\SchemaServiceAwareTrait;
    use Laminas\Mvc\Controller\AbstractActionController;
    use Laminas\View\Model\JsonModel;
    
    
    /**
     * Description of DifferentielController
     *
     * @author LECLUSE Laurent <laurent.lecluse at unicaen.fr>
     */
    class DifferentielController extends AbstractActionController
    {
        use SchemaServiceAwareTrait;
        use QueryGeneratorServiceAwareTrait;
        use DifferentielServiceAwareTrait;
    
    
    
        public function indexAction()
        {
            $sc = $this->getServiceSchema();
    
            $tables = $sc->getImportTables();
            $mviews = $sc->getImportMviews();
    
            return compact('tables', 'mviews');
        }
    
    
    
        public function synchronisationAction()
        {
            $errors  = [];
            $success = [];
    
            $table  = $this->params()->fromRoute('table');
            $action = $this->params()->fromPost('action');
    
            /* Mise à jour */
            if ($this->isAllowed(Privileges::getResourceId(Privileges::IMPORT_MAJ))) {
                if ('vue-materialisee' === $action) {
                    try {
                        $sq = $this->getServiceQueryGenerator();
                        $sq->execMajVM($table);
                        $success[] = 'Vue matérialisée mise à jour avec succès';
                    } catch (\Exception $e) {
                        $errors = [$e->getMessage()];
                    }
                } elseif ($action) {
                    $sq    = $this->getServiceQueryGenerator();
                    $query = new Query($table);
                    $query->addDefaultSyncFiltre($sq);
                    if ($action != 'all') $query->setAction($action);
    
                    /* Mise à jour des données et récupération des éventuelles erreurs */
                    try {
                        $errors = $sq->syncTable($query);
                        if (!$errors) {
                            $success[] = 'Synchronisation effectuée avec succès';
                        }
                    } catch (\Exception $e) {
                        $errors = [$e->getMessage()];
                    }
                }
            } else {
                if ($action) {
                    $errors[] = 'Vous n\'avez pas le droit de synchroniser cette table';
                }
            }
    
            /* Récupération et rendu final */
            $query    = new Query($table);
            $chiffres = $this->getServiceDifferentiel()->make($query, Query::SQL_SUMMARY)->fetchSummary();
    
            return new JsonModel(compact('table', 'chiffres', 'errors', 'success'));
        }
    
    
    
        public function detailsAction()
        {
            $table  = $this->params()->fromRoute('table');
            $action = $this->params()->fromPost('action');
    
            $sc = $this->getServiceSchema();
    
            $query = new Query($table);
            if ($action != 'all') $query->setAction($action);
            $query->setNotNull([]); // Aucune colonne ne doit être non nulle !!
            $query->setLimit(101);
            $lignes = $this->getServiceDifferentiel()->make($query, $query::SQL_FULL)->fetchAll();
    
            return compact('lignes');
        }
    }