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

Amélioration de la méthode générant les options du select formulairechampsAction

parent 71a6d17e
Loading
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -514,6 +514,11 @@ class FormulaireController extends AbstractActionController

            $champs = $categorie->getChamps();
            $champs = array_filter($champs, function (Champ $c) {return $c->estNonHistorise(); });

            //retrait des champs non codants todo faire mieux ici
            $champs = array_filter($champs, function (Champ $c) {return $c->getType()->getCode() !== Champ::TYPE_SPACER;});
            $champs = array_filter($champs, function (Champ $c) {return $c->getType()->getCode() !== Champ::TYPE_LABEL;});

            usort($champs, function (Champ $a,Champ $b) { return $a->getOrdre() <=> $b->getOrdre(); });

            foreach ($champs as $champ) {
@@ -523,8 +528,10 @@ class FormulaireController extends AbstractActionController
                ];
            }

            if (!empty($categorieJson['options'])) {
                $result[] = $categorieJson;
            }
        }

        return new JsonModel($result);
    }
+14 −0
Original line number Diff line number Diff line
@@ -76,4 +76,18 @@ class Formulaire implements HistoriqueAwareInterface {
    {
        return $this->categories->contains($categorie);
    }

    public function hasChamp(Champ $champ_, bool $withHisto = false): bool
    {
        foreach ($this->getCategories() as $categorie) {
            if ($withHisto OR $categorie->estNonHistorise()) {
                foreach ($categorie->getChamps() as $champ) {
                    if ($withHisto OR $champ->estNonHistorise()) {
                        if ($champ === $champ_) return true;
                    }
                }
            }
        }
        return false;
    }
}
 No newline at end of file
+10 −0
Original line number Diff line number Diff line
@@ -152,5 +152,15 @@ class ChampService
        return $array;
    }

    public function getChampsAsOptions(): array
    {
        $champs = $this->getChamps();
        $options = [];
        foreach ($champs as $champ) {
            $options[$champ->getId()] = $champ->getLibelle();
        }
        return $options;
    }


}
 No newline at end of file
+14 −12
Original line number Diff line number Diff line
@@ -146,16 +146,17 @@ class FormulaireInstanceService
        $this->update($instance);
    }

    public function recopie(FormulaireInstance $instance1, FormulaireInstance $instance2, int $champId1, int $champId2): void
    public function recopie(FormulaireInstance $instanceFrom, FormulaireInstance $instanceTo, ?int $champFrom, ?int $champTo): void
    {
        $reponses = $instance1->getReponses();
        if ($champFrom !== null AND $champTo !== null) {
            $reponses = $instanceFrom->getReponses();
            foreach ($reponses as $reponse) {
            if ($reponse->getChamp()->getId() == $champId1) {
                $champ = $instance2->getChamp($champId2);
                if ($reponse->getChamp()->getId() == $champFrom) {
                    $champ = $instanceTo->getChamp($champTo);
                    if ($champ !== null) {
                        $value = $reponse->getReponse();
                        $new = new FormulaireReponse();
                    $new->setFormulaireInstance($instance2);
                        $new->setFormulaireInstance($instanceTo);
                        $new->setChamp($champ);
                        $new->setReponse($value);
                        $this->getFormulaireReponseService()->create($new);
@@ -163,6 +164,7 @@ class FormulaireInstanceService
                }
            }
        }
    }

    public function createInstance(string $code): FormulaireInstance
    {