Skip to content
Snippets Groups Projects
Select Git revision
  • b9fe74dad89bd8703f31a6c60f97335e769bd9f7
  • master default protected
  • cleanup_fixtures
  • add-openvox
  • freebsd-14
  • remove-legacy-top-scope-syntax
  • rel430
  • tests
  • revert-363-augeas-module-cleanup
  • release-4.1.0
  • puppet8
  • relax-dependencies
  • rel400
  • mode
  • puppet7
  • release-3.1.0
  • freebsd13
  • freebsd11
  • stdlib
  • centos
  • fedora
  • v5.1.0
  • v5.0.0
  • v4.5.0
  • v4.4.0
  • v4.3.0
  • v4.2.1
  • v4.2.0
  • v4.1.0
  • v4.0.0
  • v3.1.0
  • v3.0.0
  • v2.0.0
  • 1.12.0
  • 1.11.0
  • 1.10.0
  • 1.9.0
  • 1.8.0
  • 1.7.0
  • 1.6.0
  • 1.5.0
41 results

postfix_spec.rb

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ImportController.php 3.67 KiB
    <?php
    namespace UnicaenImport\Controller;
    
    use UnicaenImport\Processus\Traits\ImportProcessusAwareTrait;
    use UnicaenImport\Service\Traits\DifferentielServiceAwareTrait;
    use UnicaenImport\Service\Traits\QueryGeneratorServiceAwareTrait;
    use UnicaenImport\Service\Traits\SchemaServiceAwareTrait;
    use Zend\Mvc\Controller\AbstractActionController;
    use UnicaenImport\Entity\Differentiel\Query;
    
    /**
     *
     *
     * @author Laurent Lécluse <laurent.lecluse at unicaen.fr>
     */
    class ImportController extends AbstractActionController
    {
        use SchemaServiceAwareTrait;
        use QueryGeneratorServiceAwareTrait;
        use DifferentielServiceAwareTrait;
        use ImportProcessusAwareTrait;
    
    
    
    
        public function indexAction()
        {
        }
    
    
    
        public function updateViewsAndPackagesAction()
        {
            try {
                $this->getProcessusImport()->updateViewsAndPackages();
                $message = 'Mise à jour des vues différentielles et du paquetage d\'import terminés';
            } catch (\Exception $e) {
                $message = 'Une erreur a été rencontrée.';
                throw new \UnicaenApp\Exception\LogicException("import impossible", null, $e);
            }
            $title = "Résultat";
    
            return compact('message', 'title');
        }
    
    
    
        public function showImportTblAction()
        {
            $data = $this->getServiceSchema()->getSchema();
    
            return compact('data');
        }
    
    
    
        public function showDiffAction()
        {
            $tableName = $this->params()->fromRoute('table');
    
            $sc = $this->getServiceSchema();
    
            $mviews = $sc->getImportMviews();
    
            if ($tableName) {
                $tables = [$tableName];
            } else {
                $tables = $sc->getImportTables();
                sort($tables);
            }
    
            $data = [];
            foreach ($tables as $table) {
                $query = new Query($table);
                $query->setLimit(101);
                $data[$table] = $this->getServiceDifferentiel()->make($query)->fetchAll();
            }
    
            return compact('data', 'mviews');
        }
    
    
    
        public function updateAction()
        {
            $errors    = [];
            $tableName = $this->params()->fromRoute('table');
            $typeMaj   = $this->params()->fromPost('type-maj');
    
            $query = new Query($tableName);
    
            $sq = $this->getServiceQueryGenerator();
    
            /* Mise à jour des données et récupération des éventuelles erreurs */
            try {
                if ('vue-materialisee' == $typeMaj) {
                    $sq->execMajVM($tableName);
                } else {
                    $errors = $errors + $sq->syncTable($tableName);
                    //$sq->execMaj($query);
                }
            } catch (\Exception $e) {
                $errors = [$e->getMessage()];
            }
            $query->setNotNull([]); // Aucune colonne ne doit être non nulle !!
            $query->setLimit(101);
            $lignes = $this->getServiceDifferentiel()->make($query)->fetchAll();
    
            return [
                'lignes' => $lignes,
                'table'  => $tableName,
                'errors' => $errors,
            ];
        }
    
    
    
        public function updateTablesAction()
        {
            $tables = $this->getServiceSchema()->getImportTables();
    
            $message = '';
            try {
                foreach ($tables as $table) {
                    $message .= '<div>Table "' . $table . '" Mise à jour.</div>';
                    $this->getServiceQueryGenerator()->execMaj(new Query($table));
                }
                $message .= 'Mise à jour des données terminée';
            } catch (\Exception $e) {
                $message = 'Une erreur a été rencontrée.';
                throw new \UnicaenApp\Exception\LogicException("mise à jour des données impossible", null, $e);
            }
    
            $title = "Résultat";
    
            return compact('message', 'title');
        }
    }