Skip to content
Snippets Groups Projects
Select Git revision
  • dd7f090dbf7f3dffd143f701cb5ec0bc2b9e1b46
  • master default protected
  • alc-scindage-donnees-pj
  • b24
  • ll-workflow
  • FJ_LL_Tbl_Contrat
  • alc-docker-node
  • ll-apiplatform
  • php84
  • ll-rgpd
  • b23
  • alc-filtre-type-intervenant
  • ll-sans-mdb5
  • formules-ancienne-infra
  • ll-formules
  • alc-intervenant-dmep
  • ll-suppr-v_vol-s
  • b20
  • ll-postgresql
  • b23.0.1
  • b22
  • 24.8
  • 24.7
  • 24.6
  • 24.5
  • 24.4
  • 24.3
  • 24.2
  • 24.1
  • 24.0
  • 23.15
  • 24.0-beta19
  • 24.0-beta18
  • 24.0-beta17
  • 24.0-beta16
  • 24.0-beta15
  • 24.0-beta14
  • 24.0-beta13
  • 23.14
  • 24.0-beta12
  • 24.0-beta11
41 results

EntityServiceFactory.php

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');
        }
    }