Commit d057f67c authored by Jean-Baptiste Oellers's avatar Jean-Baptiste Oellers
Browse files

Ajout PDF

parent 1f0fc6c0
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -576,6 +576,7 @@ return array(
                    'action' => [
                        'demarrer',
                        'terminer',
                        'convention',
                    ],
                    'roles' => ['user']
                ],
+7 −0
Original line number Diff line number Diff line
@@ -2390,3 +2390,10 @@ chemins-decisionnels:
            route: /terminer
            defaults:
              action: terminer
        convention:
          type: segment
          may_terminate: true
          options:
            route: /convention/:formulaire-id
            defaults:
              action: convention
+11 −1
Original line number Diff line number Diff line
@@ -140,6 +140,10 @@ class CheminDecisionnelAdministrationController extends AbstractOscarController
        
        if (!$this->getRequest()->isPost()) {

            $dateStart = $this->params()->fromQuery('dateStart') ? $this->params()->fromQuery('dateStart') : NULL;
            $dateEnd = $this->params()->fromQuery('dateEnd') ? $this->params()->fromQuery('dateEnd') : NULL;
            $amount = $this->params()->fromQuery('amount') ? $this->params()->fromQuery('amount') : NULL;

            $allActivityForm = $this->getOscarConfigurationService()->getActivityFormConfigKeying();
            $activityFormToShow = [];
            foreach (CheminDecisionnelFormulaire::CHAMPS_VALIDES as $v) {
@@ -147,7 +151,7 @@ class CheminDecisionnelAdministrationController extends AbstractOscarController
                    $activityFormToShow[$v] = $allActivityForm[$v];
                }
            }
            return ['chemin_decisionnel_id' => $cheminDecisionnel->getId(), 'formulaire' => $cheminDecisionnelFormulaire, 'activity_forms' => $activityFormToShow];
            return ['chemin_decisionnel_id' => $cheminDecisionnel->getId(), 'formulaire' => $cheminDecisionnelFormulaire, 'activity_forms' => $activityFormToShow, 'date_start' => $dateStart, 'date_end' => $dateEnd, 'amount' => $amount];
        }

        if ($this->params()->fromPost('action') == "modifier") {
@@ -161,6 +165,12 @@ class CheminDecisionnelAdministrationController extends AbstractOscarController
            }
            $this->getCheminDecisionnelFormulaireService()->definirChamps($cheminDecisionnel, $cheminDecisionnelFormulaire, $champs, $this->getCurrentPerson());

            return $this->redirect()->toRoute('administration/chemins-decisionnels/update/formulaire', ['id' => $cheminDecisionnel->getId(), 'formulaire-id' => $cheminDecisionnelFormulaire->getId()]);

        } else if ($this->params()->fromPost('action') == "modifier_texte_convention") {

            $this->getCheminDecisionnelFormulaireService()->modifierTexteConvention($cheminDecisionnel, $cheminDecisionnelFormulaire, $this->params()->fromPost('texte_convention'), $this->getCurrentPerson());

            return $this->redirect()->toRoute('administration/chemins-decisionnels/update/formulaire', ['id' => $cheminDecisionnel->getId(), 'formulaire-id' => $cheminDecisionnelFormulaire->getId()]);
        }

+61 −0
Original line number Diff line number Diff line
@@ -133,4 +133,65 @@ class CheminDecisionnelController extends AbstractOscarController implements Use
        return [];
    }

    public function conventionAction()
    {

        /** @var \Oscar\Entity\CheminDecisionnelRepository $cheminDecisionnelRepository */
        $cheminDecisionnelRepository = $this->getEntityManager()->getRepository(\Oscar\Entity\CheminDecisionnel::class);
        /** @var \Oscar\Entity\CheminDecisionnel $cheminDecisionnel */
        $cheminDecisionnel = $cheminDecisionnelRepository->find($this->params('id'));
        if (!$cheminDecisionnel) {
            throw new \Exception("Le chemin décisionnel n'a pas été trouvé.");
        }

        /** @var \Oscar\Entity\CheminDecisionnelFormulaireRepository $cheminDecisionnelFormulaireRepository */
        $cheminDecisionnelFormulaireRepository = $this->getEntityManager()->getRepository(\Oscar\Entity\CheminDecisionnelFormulaire::class);
        /** @var \Oscar\Entity\CheminDecisionnelFormulaire $cheminDecisionnelFormulaire */
        $cheminDecisionnelFormulaire = $cheminDecisionnelFormulaireRepository->find($this->params('formulaire-id'));
        if (!$cheminDecisionnelFormulaire) {
            throw new \Exception("Le formulaire n'a pas été trouvé.");
        }

        $texteConvention = $cheminDecisionnelFormulaire->getTexteConvention();
        $texteConvention = str_replace(["\r\n", "\r", "\n"], "<br/>", $texteConvention);

        $dateStart = $this->params()->fromQuery('dateStart') ? $this->params()->fromQuery('dateStart') : '';
        $dateEnd = $this->params()->fromQuery('dateEnd') ? $this->params()->fromQuery('dateEnd') : '';
        $amount = $this->params()->fromQuery('amount') ? $this->params()->fromQuery('amount') : '';

        $allActivityForm = $this->getOscarConfigurationService()->getActivityFormConfigKeying();
        foreach (CheminDecisionnelFormulaire::CHAMPS_VALIDES as $v) {
            if (!array_key_exists($v, $allActivityForm)) {
                continue;
            }
            if ($allActivityForm[$v]["name"] == "dateStart" && $dateStart != '') {
                $texteConvention = str_replace('$' . $allActivityForm[$v]['label'] . '$', (new \DateTime($dateStart))->format('d/m/Y'), $texteConvention);
            } else if ($allActivityForm[$v]["name"] == "dateEnd" && $dateEnd != '') {
                $texteConvention = str_replace('$' . $allActivityForm[$v]['label'] . '$', (new \DateTime($dateEnd))->format('d/m/Y'), $texteConvention);
            } else if ($allActivityForm[$v]["name"] == "amount" && $amount != '') {
                $texteConvention = str_replace('$' . $allActivityForm[$v]['label'] . '$', number_format((double)$amount, 2, ',', ' '), $texteConvention);
            }
        }

        $html = "<!doctype html>
<html lang=\"fr\">

<head>
  <meta charset=\"utf-8\">
  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
</head>

<body>
";
        $html .= $texteConvention;
        $html .= "</body>
</html>
";

        $output = new \Oscar\Formatter\Output\OutputWkhtmltopdfStrategy();
        $output->output(
            $html,
            "convention.html"
        );
    }
}
+24 −0
Original line number Diff line number Diff line
@@ -34,6 +34,12 @@ class CheminDecisionnelFormulaire
     */
    private $champs = [];

    /**
     * @var string
     * @ORM\Column(type="text", options={"default": ""})
     */
    private $texteConvention;

    /**
     * @var \DateTime
     * @ORM\Column(type="datetime", nullable=false)
@@ -113,6 +119,24 @@ class CheminDecisionnelFormulaire
        return $this;
    }

    /**
     * @return string
     */
    public function getTexteConvention()
    {
        return $this->texteConvention;
    }

    /**
     * @param string $texteConvention
     */
    public function setTexteConvention($texteConvention)
    {
        $this->texteConvention = $texteConvention;

        return $this;
    }

    /**
     * @return \DateTime
     */
Loading