Commit f0d0e2b6 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Début du multi orm

parent 7fa59868
Loading
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -71,8 +71,9 @@ class IndicateurController extends AbstractActionController {
        $perimetres = $this->getPerimetreService()->getPerimetres($user, $role);


        $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur->getViewId());
        if ($exists === true) $result = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres);
        $exists = $this->getIndicateurService()->verifierExistanceMaterializedView($indicateur);
//        if ($exists === true) $result = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres);
        $result = $this->getIndicateurService()->getIndicateurData($indicateur, $perimetres);

        return new ViewModel([
            'indicateur' => $indicateur,
@@ -114,7 +115,7 @@ class IndicateurController extends AbstractActionController {
                $indicateur->setDernierRafraichissement(new DateTime());

                $this->getIndicateurService()->create($indicateur);
                $this->getIndicateurService()->createView($indicateur);
                if (!$indicateur->isSelectOnly()) $this->getIndicateurService()->createView($indicateur);
                $count = $this->getIndicateurService()->getCount($indicateur);
                $indicateur->setNbElements($count);
                $this->getIndicateurService()->update($indicateur);
@@ -152,7 +153,7 @@ class IndicateurController extends AbstractActionController {
            $form->setData($data);
            if ($form->isValid()) {
                $this->getIndicateurService()->update($indicateur);
                $this->getIndicateurService()->updateView($indicateur);
                if (!$indicateur->isSelectOnly()) $this->getIndicateurService()->updateView($indicateur);
                return $this->redirect()->toRoute('indicateur/afficher', ['indicateur' => $indicateur->getId()], [], true);
            }
        }
@@ -175,7 +176,7 @@ class IndicateurController extends AbstractActionController {
        if ($request->isPost()) {
            $data = $request->getPost();
            if ($data["reponse"] === "oui") {
                $this->getIndicateurService()->dropView($indicateur);
                if (!$indicateur->isSelectOnly())  $this->getIndicateurService()->dropView($indicateur);
                $this->getIndicateurService()->delete($indicateur);
            }
            exit();
@@ -197,7 +198,7 @@ class IndicateurController extends AbstractActionController {
    {
        $indicateur = $this->getIndicateurService()->getRequestedIndicateur($this);
        $indicateur->setDernierRafraichissement(new DateTime());
        $this->getIndicateurService()->createView($indicateur);
        if (!$indicateur->isSelectOnly())  $this->getIndicateurService()->createView($indicateur);
        $this->getIndicateurService()->update($indicateur);

        $retour = $this->params()->fromQuery('retour');
+23 −2
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@ class Indicateur {
    private ?string $description = null;
    private ?Categorie  $categorie = null;
    
    private ?string  $orm = null;
    private ?bool $selectOnly = null;

    private ?string $requete = null;
    private ?DateTime $dernierRafraichissement = null;
    private ?string $viewId = null;
@@ -87,8 +90,6 @@ class Indicateur {
        $this->categorie = $categorie;
    }



    public function getRequete() : ?string
    {
        return $this->requete;
@@ -178,6 +179,26 @@ class Indicateur {
        return in_array($role->getRoleId(), $listing);
    }

    public function getOrm(): ?string
    {
        return $this->orm;
    }

    public function setOrm(string $orm)
    {
        $this->orm = $orm;
    }

    public function isSelectOnly(): bool
    {
        return ($this->selectOnly === true);
    }

    public function setSelectOnly(?bool $selectOnly): void
    {
        $this->selectOnly = $selectOnly;
    }

    /** Abonnements **************************************************************** */

    /**
+22 −17
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
        <field name="dernierRafraichissement" type="datetime" column="dernier_rafraichissement" nullable="true"/>
        <field name="viewId" length="255" column="view_id" nullable="true"/>
        <field name="entity" length="255" column="entity" nullable="true"/>

        <field name="namespace" length="1024" column="namespace" nullable="true"/>
        <field name="perimetre" length="256" column="perimetre"/>
        <field name="rolesAutorises" length="2048" column="roles_autorises"/>
@@ -26,6 +27,10 @@
            <join-column name="categorie_id"/>
        </many-to-one>

        <field name="orm" length="255" column="orm"/>
        <field name="selectOnly" type="boolean" column="select_only"/>


        <one-to-many target-entity="UnicaenIndicateur\Entity\Db\Abonnement" field="abonnements" mapped-by="indicateur"/>

        <many-to-many field="tableaux" target-entity="UnicaenIndicateur\Entity\Db\TableauDeBord" inversed-by="tableau">
+12 −5
Original line number Diff line number Diff line
@@ -82,16 +82,22 @@ class IndicateurForm extends Form {
        // categorie
        $this->add([
            'type' => Select::class,
            'name' => 'categorie',
            'name' => 'orm',
            'options' => [
                'label' => "Catégorie :",
                'empty_option' => "Sélectionner une entité ...",
                'value_options' => $this->getCategorieService()->getCategoriesAsOptions(),
                'label' => "Base de donnée sources :",
                'empty_option' => "Sélectionner une base de donnée ...",
                //TODO faire pour de vrai
                'value_options' => [
                    'Indicateur' => 'orm_default',
                    'Inscription SUAC' => 'orm_suac',
                    'Mes Formations' => 'orm_mesformations',
                ],
            ],
            'attributes' => [
                'id' => 'categorie',
                'id' => 'orm',
            ],
        ]);
        
//        // namespace
//        $this->add([
//            'type' => Text::class,
@@ -224,6 +230,7 @@ class IndicateurForm extends Form {
            'categorie'             => [ 'required' => false,  ],
//            'namespace'             => [ 'required' => false,  ],
            'view_id'               => [ 'required' => true,  ],
            'orm'                => [ 'required' => true,  ],
//            'entity'                => [ 'required' => true,  ],
            'perimetre'             => [ 'required' => false,  ],
            'roles_autorises'       => [ 'required' => true,  ],
+3 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ class IndicateurHydrator implements HydratorInterface {
            'categorie' => $object->getCategorie()?->getId(),
//            'namespace' => $object->getNamespace(),
            'view_id' => $object->getViewId(),
            'orm' => $object->getOrm(),
//            'entity' => $object->getEntity(),
            'perimetre' => ($object->getPerimetre())?explode(PerimetreServiceInterface::PERIMETRE_SEPARATOR, $object->getPerimetre()):null,
            'roles_autorises' => $object->getRolesAutorises()??null,
@@ -33,6 +34,7 @@ class IndicateurHydrator implements HydratorInterface {
        $code = (isset($data['code']) AND trim($data['code']) !== '')?trim($data['code']):null;
        $categorie = (isset($data['categorie']) && $data['categorie'] !== '')?$this->getCategorieService()->getCategorie($data['categorie']):null;
//        $namespace = (isset($data['namespace']) AND trim($data['namespace']) !== '')?trim($data['namespace']):null;
        $orm = (isset($data['orm']) AND trim($data['orm']) !== '')?trim($data['orm']):null;

        $perimetres = isset($data['perimetre'])?implode(PerimetreServiceInterface::PERIMETRE_SEPARATOR, $data['perimetre']):null;
        //HERE I AM// $perimetreIds = (isset($data['perimetre']) AND ($data['perimetre']) !== '')?explode(PerimetreServiceInterface::PERIMETRE_SEPARATOR, $data['perimetre']):null;
@@ -43,6 +45,7 @@ class IndicateurHydrator implements HydratorInterface {
        $object->setTitre($data['libelle']);
        $object->setDescription($data['description']);
        $object->setCategorie($categorie);
        $object->setOrm($orm);
//        $object->setNamespace($namespace);
        $object->setPerimetre($perimetres);
        $object->setRolesAutorises($rolesAutorises);
Loading