Select Git revision
postfix_spec.rb
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');
}
}