Commit 447ff6e3 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Nouvelles pages de listage et visualisation des sources de données (issues de la table 'source').

parent 8926ada6
Loading
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
Changelog
=========

7.3.0
-----
- Nouvelles pages de listage et visualisation des sources de données (issues de la table 'source').

7.2.1
-----
- Extraction d'un trait ColumnValueFilterConfigFactoryTrait permettant de configurer des filtres de colonnes pour autre chose qu'un import. 
+50 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@ use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use Laminas\ServiceManager\Factory\InvokableFactory;
use UnicaenDbImport\Controller\SourceController;
use UnicaenDbImport\Controller\SourceControllerFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenDbImport\CodeGenerator\HelperAbstractFactory;
use UnicaenDbImport\Config\Config;
@@ -120,6 +122,12 @@ return [
                        'resource' => ImportPrivilege::getResourceId(ImportPrivilege::LISTER),
                        'order' => 100,
                        'pages' => [
                            'source' => [
                                'label' => "Sources",
                                'route' => 'unicaen-db-import/source',
                                'resource' => ImportPrivilege::getResourceId(ImportPrivilege::LISTER),
                                'order' => 5,
                            ],
                            'import' => [
                                'label' => "Imports",
                                'route' => 'unicaen-db-import/import',
@@ -185,6 +193,31 @@ return [
                            ],
                        ],
                    ],
                    'source' => [
                        'type' => Segment::class,
                        'options' => [
                            'route' => '/source',
                            'defaults' => [
                                'controller' => SourceController::class,
                                'action' => 'index',
                            ],
                        ],
                        'may_terminate' => true,
                        'child_routes' => [
                            'voir' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/voir/:id',
                                    'constraints' => [
                                        'id' => '[0-9]*',
                                    ],
                                    'defaults' => [
                                        'action' => 'voir',
                                    ],
                                ],
                            ],
                        ],
                    ],
                    'import' => [
                        'type' => Segment::class,
                        'options' => [
@@ -389,6 +422,22 @@ return [
    'bjyauthorize' => [
        'guards' => [
            PrivilegeController::class => [
                //--------------------------- source -------------------------
                [
                    'controller' => SourceController::class,
                    'action' => [
                        'index',
                    ],
                    'privileges' => ImportPrivilege::LISTER,
                ],
                [
                    'controller' => SourceController::class,
                    'action' => [
                        'voir',
                    ],
                    'privileges' => ImportPrivilege::CONSULTER,
                ],

                //--------------------------- import -------------------------
                [
                    'controller' => ImportController::class,
@@ -570,6 +619,7 @@ return [
    'controllers' => [
        'factories' => [
            ConsoleController::class => ConsoleControllerFactory::class,
            SourceController::class => SourceControllerFactory::class,
            ImportController::class => ImportControllerFactory::class,
            SynchroController::class => SynchroControllerFactory::class,
            ObservController::class => ObservControllerFactory::class,
+17 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ class ConfigFactory
        $this->container = $container;
        $this->moduleConfig = $this->getModuleConfig();

        $sourceEntityClass = $this->getSourceEntityClass();
        $defaultSourceCode = $this->getDefaultSourceCode();
        $importObservEntityClass = $this->getImportObservEntityClass();
        $importObservResultEntityClass = $this->getImportObservResultEntityClass();
@@ -59,6 +60,7 @@ class ConfigFactory
        $synchros = $this->createSynchros();

        $config = new Config();
        $config->setSourceEntityClass($sourceEntityClass);
        $config->setDefaultSourceCode($defaultSourceCode);
        $config->setImportObservEntityClass($importObservEntityClass);
        $config->setImportObservResultEntityClass($importObservResultEntityClass);
@@ -90,6 +92,21 @@ class ConfigFactory
        return $appConfig[$key];
    }

    /**
     * @return string
     * @throws \UnicaenDbImport\Config\ConfigException
     */
    private function getSourceEntityClass(): string
    {
        try {
            Assertion::keyExists($this->moduleConfig, $key = Config::KEY_source_entity_class);
        } catch (AssertionFailedException $e) {
            throw ConfigException::missingKey($key);
        }

        return $this->moduleConfig[$key];
    }

    /**
     * @return string
     * @throws \UnicaenDbImport\Config\ConfigException
+52 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenDbImport\Controller;

use Laminas\Http\PhpEnvironment\Response;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Laminas\Mvc\Plugin\Prg\PostRedirectGet;
use UnicaenDbImport\Entity\Db\Service\Source\SourceServiceAwareTrait;

/**
 * @method FlashMessenger flashMessenger()
 * @method PostRedirectGet prg($redirect = null, $redirectToUrl = false)
 */
class SourceController extends AbstractActionController
{
    use SourceServiceAwareTrait;

    /**
     * Listage des sources.
     *
     * @return array|\Laminas\Http\PhpEnvironment\Response
     */
    public function indexAction()
    {
        $prg = $this->prg(null, true);
        if ($prg instanceof Response) {
            return $prg;
        }

        $sources = $this->sourceService->getRepository()->findAll();

        return [
            'sources' => $sources,
        ];
    }

    /**
     * Détails d'une source.
     *
     * @return array
     */
    public function voirAction(): array
    {
        $id = $this->params('id');
        $source = $this->sourceService->getRepository()->find($id);

        return [
            'source' => $source,
        ];
    }
}
 No newline at end of file
+24 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenDbImport\Controller;

use Psr\Container\ContainerInterface;
use UnicaenDbImport\Entity\Db\Service\Source\SourceService;

class SourceControllerFactory
{
    /**
     * @throws \Psr\Container\ContainerExceptionInterface
     * @throws \Psr\Container\NotFoundExceptionInterface
     */
    public function __invoke(ContainerInterface $container): SourceController
    {
        /** @var \UnicaenDbImport\Entity\Db\Service\Source\SourceService $sourceService */
        $sourceService = $container->get(SourceService::class);

        $controller = new SourceController();
        $controller->setSourceService($sourceService);

        return $controller;
    }
}
 No newline at end of file
Loading