?? GreyFile — Mystic File Browser

Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Controller/



?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src

?? Viewing: AccueilController.php

<?php

namespace Application\Controller;

//use Laminas\Mvc\Controller\AbstractActionController;
//use Laminas\View\Model\ViewModel;
//use Laminas\Mail\Message;
//use Laminas\Mime;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use Laminas\Mail\Message;
use Laminas\Mime\Mime;
use Laminas\Mime\Message as MimeMessage;
use Laminas\Mime\Part as MimePart;
use Laminas\Mail\Transport\Sendmail as SendmailTransport;

class AccueilController extends AbstractActionController
{

    const ROUTE_INDEX = 'home';
    const ROUTE_MENTION = 'mention';
    const ROUTE_MENTIONS_LEGALES = 'mentions-legales';
    const ROUTE_PROTECTION_DONNEES = 'protection-donnees';
    const ROUTE_POLITIQUE_COOKIE = 'politique-cookie';
    const ROUTE_QUESTIONS_ACTIVITE = 'questions-activite';
    const ROUTE_GUIDE_FISCAL = 'guide-fiscal';
    const ROUTE_JUSTIFICATIFS = 'justificatifs';
    const ROUTE_CGS = 'cgs';


    /**
     * PHP template renderer.
     * @var type
     */
    private $viewRenderer;

    /**
     * Constructor.
     */
    public function __construct($entityManager, $authManager, $userManager, $config, $viewRenderer)
    {

        $this->entityManager = $entityManager;
        $this->authManager = $authManager;
        $this->userManager = $userManager;
        $this->config = $config;
        $this->viewRenderer = $viewRenderer;
    }

    public function getConfig()
    {
        return $this->config;
    }

    /**
     * @var Doctrine\ORM\EntityManager
     */
    protected $em;

//    public function setEntityManager(EntityManager $em) {
//        $this->em = $em;
//    }
//
//    public function getEntityManager() {
//        if (null === $this->em) {
//            $this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
//        }
//        return $this->em;
//    }

    public function getEntityManager()
    {
        return $this->entityManager;
//        if (null === $this->em) {
//            $this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
//        }
//        return $this->em;
    }

    public function mentionAction()
    {
        // $this->layout('layout/layout-ledgio');
        return new ViewModel(array());
    }

    public function guideFiscalAction() {
        return new ViewModel(array());
    }

    public function justificatifsAction() {
        return new ViewModel(array());
    }

    public function protectionDonneesAction()
    {
        // $this->layout('layout/layout-ledgio');
        return new ViewModel(array());
    }

    public function mentionsLegalesAction()
    {
        // $this->layout('layout/layout-ledgio');
        return new ViewModel(array());
    }

    public function politiqueCookieAction()
    {
        // $this->layout('layout/layout-ledgio');
        return new ViewModel(array());
    }

    public function questionsActiviteOldAction()
    {
        return $this->redirect()->toRoute(self::ROUTE_QUESTIONS_ACTIVITE)->setStatusCode(301);
    }
    public function questionsActiviteAction()
    {
        //$this->layout('layout/layout-questions');
        $form = new \Application\Form\QuestionActiviteForm();
        $rangeAnnee = [2019, (date('Y')-1)];
        $reponseArray1 =["Dès le tout début, entre 2010 et 2011.",
                "Entre 2012 et 2014.",
                "Entre 2015 et 2016.",
                "Entre 2017 et 2018."];

        $ptArray1 = [0,
            0,
            0,
            0];
        foreach ($rangeAnnee as $anneeAffichee) {
            $reponseArray1[] =  "En $anneeAffichee.";
            $ptArray1[] = 0;
        }
        $arrayWithAnneeAuto1 =
        [
            'q' => "J'ai acquis mes premières crypto-monnaies",
            'r' => $reponseArray1, 'pt' => $ptArray1
        ];

        $arrayQuestions = [
            [
                'q' => 'Exercez-vous une activité professionnelle en dehors des crypto-monnaies ?',
                'r' => ['Oui, je suis salarié à temps plein.',
                    'Oui, je suis salarié à temps partiel.',
                    'Oui, je suis fonctionnaire.',
                    'Oui, je suis étudiant.',
                    "Oui, je suis à mon compte, je dispose d'un numéro Siret, et mon chiffre d'affaire réalisé chaque année est supérieur à 15000€.",
                    "Oui, je suis à mon compte, je dispose d'un numéro Siret, mais mon chiffre d'affaire réalisé chaque année est inférieur à 15000€.",
                    "Je suis en recherche de travail, indemnisé par Pôle Emploi.",
                    "Je suis en recherche de travail, non indemnisé par Pôle Emploi.",
                    "Non."
                ],
                'pt' => [0,
                    3,
                    0,
                    3,
                    1,
                    3,
                    3,
                    5,
                    8]
            ],
            [
                'q' => "Mon activité professionnelle et/ou mes études me rendent familier de l'investissement en crypto-monnaies (informatique, finance…)",
                'r' => ["Non, pas du tout.",
                    "Oui, un peu.",
                    "Oui, clairement.",
                    "Je n'ai pas d'activité professionnelle.",
                ],
                'pt' => [0,
                    1,
                    2,
                    0]
            ],
            $arrayWithAnneeAuto1,

            [
                'q' => "Je trade (passe des opérations d'achats ou de ventes sur mon/mes exchanges) pour le compte d'autres personnes",
                'r' => ["Non.",
                    "Oui, je l'ai fait une ou deux fois.",
                    "Oui, je l'ai fait à plusieurs reprises.",
                    "Oui, régulièrement.",
                ], 'pt' => [0,
                1,
                4,
                8]
            ],
            [
                'q' => "Une ou d'autres personnes passent des opérations d'achats ou de ventes sur leurs exchanges, pour mon compte.",
                'r' => ["Non, ce n'est jamais arrivé.",
                    "Oui,  c'est arrivé une ou deux fois.",
                    "Oui, c'est arrivé à plusieurs reprises.",
                    "Oui, régulièrement.",
                ], 'pt' => [0,
                0,
                0,
                0]
            ],
            [
                'q' => "Il m'est arrivé d'acheter des biens ou des services avec mes crypto-monnaies (par exemple, de l'or physique ou papier, contre des BTC).",
                'r' => ["Non, ce n'est jamais arrivé.",
                    "Oui,  c'est arrivé une ou deux fois.",
                    "Oui, c'est arrivé à plusieurs reprises.",
                    "Oui, régulièrement.",
                ], 'pt' => [0,
                1,
                2,
                3]
            ],
            [
                'q' => "Combien d'ordres avez-vous passés en " . (date('Y') - 1) . " ?",
                'r' => ["J'ai passé moins de 20 ordres.",
                    "J'ai passé entre 20 et 100 ordres.",
                    "J'ai passé entre 100 et 200 ordres.",
                    "J'ai passé entre 200 et 400 ordres.",
                    "J'ai passé plus de 400 ordres.",
                ], 'pt' => [0,
                5,
                10,
                15,
                20]
            ],
            [
                'q' => "Vu de loin, quel est votre gain sur l'année " . (date('Y') - 1) . " (votre plus-value totale) ?",
                'r' => ["Moins de 1000 €",
                    "Entre 1000 et 10000€",
                    "Entre 10000 et 50000€",
                    "Entre 50000 et 100000€",
                    "Plus de 100000€",
                ], 'pt' => [0,
                1,
                2,
                3,
                4]
            ],
            [
                'q' => "Utilisez-vous ou avez-vous utilisé des logiciels ou des bots pour passer automatiquement des ordres?",
                'r' => ["Non.",
                    "Oui, une ou deux fois.",
                    "Oui, à plusieurs reprises.",
                    "Oui, régulièrement."
                ], 'pt' => [0,
                1,
                4,
                8]
            ],
            [
                'q' => "Avez-vous participé à des ICO ?",
                'r' => ["Non.",
                    "Oui, 1.",
                    "Oui, moins de 5.",
                    "Oui, entre 5 et 10.",
                    "Oui, plus de 10.",
                ], 'pt' => [0,
                1,
                2,
                3,
                4]
            ],
            [
                'q' => "Pratiquez-vous ou avez-vous pratiqué le minage?",
                'r' => ["Non.",
                    "Oui, j'ai essayé, mais ai vite arrêté.",
                    "Oui, je le pratique ou l'ai pratiqué régulièrement.",
                ], 'pt' => [0,
                1,
                2]
            ],
            [
                'q' => "Sur combien d'exchanges êtes-vous inscrit? ",
                'r' => ["1",
                    "2",
                    "3",
                    "Entre 4 et 6",
                    "7 et plus",
                ], 'pt' => [0,
                1,
                2,
                3,
                4]
            ],
            [
                'q' => "Votre statégie est plutôt",
                'r' => ["All-in et Hold (tout sur un type de coin, par exemple BTC, et conservation des coins)",
                    "All-in mais pas hold (tout sur un coin, mais avec des ventes assez régulières)",
                    "Hold, avec divers coins (divers types de coin, et conservation de ces coins)",
                    "Une autre stratégie.",
                ], 'pt' => [0,
                2,
                1,
                4]
            ],
            [
                'q' => "Pratiquez-vous l'arbitrage?",
                'r' => ["Non.",
                    "Oui, j'ai essayé, pour voir.",
                    "Oui, occasionnellement.",
                    "Oui, souvent.",
                ], 'pt' => [0,
                1,
                2,
                3]
            ],
            [
                'q' => "Avez-vous réalisé des cash-out?",
                'r' => ["Non.",
                    "Oui, une ou deux fois.",
                    "Oui, à plusieurs reprises.",
                    "Oui, régulièrement.",
                ], 'pt' => [0,
                1,
                2,
                3]
            ],
            [
                'q' => 'Pratiquez-vous ou avez-vous pratiqué le margin trading ("long") ?',
                'r' => ["Non.",
                    "Oui, une ou deux fois.",
                    "Oui, à plusieurs reprises.",
                    "Oui, régulièrement.",
                ], 'pt' => [0,
                1,
                2,
                3]
            ],
            [
                'q' => "A combien estimez-vous votre stack (votre portefeuille total) ?",
                'r' => ["Moins de 10000€",
                    "Entre 10000 et 50000€",
                    "Entre 50000 et 100000€",
                    "Entre 100000 et 300000€",
                    "Plus de 300000€",
                ], 'pt' => [0,
                1,
                2,
                3,
                4]
            ],
            [
                'q' => 'Pratiquez-vous ou avez-vous pratiqué le short ("vente à découvert") ?',
                'r' => ["Non.",
                    "Oui, une ou deux fois.",
                    "Oui, à plusieurs reprises.",
                    "Oui, régulièrement.",
                ], 'pt' => [0,
                1,
                2,
                3]
            ],
            [
                'q' => "Pratiquez-vous ou avez-vous pratiqué le scalping (vente ou achat sur une courte durée, lorsque le cours est en hausse) ?",
                'r' => ["Non.",
                    "Oui, une ou deux fois.",
                    "Oui, à plusieurs reprises.",
                    "Oui, régulièrement.",
                ], 'pt' => [0,
                1,
                2,
                3]
            ],
            // nouvelles questions 16 mars 2021
            [
                'q' => "Bénéficiez-vous de frais de transaction dérogatoires à ceux applicables au reste de la clientèle, en échange d’un engagement à échanger un certain volume d’actifs numériques par périodes ?",
                'r' => ["Non.",
                    "Oui."
                ], 'pt' => [0,
                1]
            ],

            [
                'q' => "Utilisez-vous des outils professionnels (achetés, ou développés par vous-mêmes) pour passer des ordres ou analyser le marché ?",
                'r' => ["Non, jamais.",
                    "Oui, parfois",
                    "Oui, régulièrement."
                ], 'pt' => [0,
                1,
                2]
            ],

            [
                'q' => "Avez-vous des pratiques de trading complexes comme des couvertures de position, des arbitrages entre plusieurs plateformes… ?",
                'r' => ["Non, jamais.",
                    "Oui, parfois",
                    "Oui, régulièrement."
                ], 'pt' => [0,
                1,
                2]
            ]
        ];


        // Check if user has submitted the form

        if ($this->getRequest()->isXmlHttpRequest()) {
            if ($this->getRequest()->isPost()) {

                // Fill in the form with POST data
                $data = $this->params()->fromPost();
                //            var_dump($data); exit;
                //            $form->setData($data);
                $emptyQ = [];
                $noteTotal = 0;
                $arrayQuestionnaireEmail = [];
                for ($i = 1; $i <= count($arrayQuestions); $i++) {
                    if (empty($data['q' . $i])) {
                        $emptyQ[] = $i;
                    } else {

                        $q = $arrayQuestions[$i - 1];
                        $valReponde = $q['pt'][$data['q' . $i] - 1];
                        $noteTotal += $valReponde;


                        $arrayQuestionnaireEmail[] = $i . ' ' . $q['q'] . ' : ' . $q['r'][$data['q' . $i] - 1] . '(' . $q['pt'][$data['q' . $i] - 1] . ')';


                    }
                }

                if (!empty($emptyQ)) {

                    $responseArray['error']['messages'][] = array(
                        'header' => 'Veuillez répondre à toutes les questions',
                        'body' => "Vous n'avez pas répondu aux questions : " . implode(', ', $emptyQ),
                        'footer' => '');
                } else {

//                    if (empty($data['email'])) {
//
//                        $responseArray['error']['messages'][] = array(
//                            'header' => 'Email manquant',
//                            'body' => "Veuillez indiquer votre email pour recevoir les résultats du test.",
//                            'footer' => '');
//                    } else {


                        $messageBody = 'Les éléments généraux d\'informations donnés par Ledgio ne constituent en aucun cas un conseil juridique. Pour une analyse de votre situation particulière et un conseil associé consultez un avocat.' . PHP_EOL;
                        $messageBodyHtml = '<p>Les éléments généraux d\'informations donnés par Ledgio ne constituent en aucun cas un conseil juridique. Pour une analyse de votre situation particulière et un conseil associé consultez un avocat.<p>';
                        $messageBody .= 'Eléments généraux d\'informations : ';

                        if ($noteTotal <= 10) {
                            $messageHeader = 'Le profil décrit est probablement non professionnel';
                            $messageBody .= 'Le profil décrit semble avoir des chances significatives de relever du statut des particuliers (statut des non professionnels).';
                            $messageBodyHtml2 = 'Le profil décrit semble avoir des chances significatives de relever du statut des particuliers (statut des non professionnels).';
                            $color = 'vert';
                        } else if ($noteTotal > 10 && $noteTotal <= 25) {
                            $messageHeader = "Le profil décrit a des chances d'être non professionnel";
                            $messageBody .= 'Le profil décrit semble avoir des chances de relever du statut des particuliers (statut des non professionnels).';
                            $messageBodyHtml2 = 'Le profil décrit semble avoir des chances de relever du statut des particuliers (statut des non professionnels).';
                            $color = 'bleu';
                        } else if ($noteTotal > 25 && $noteTotal <= 38) {
                            $messageHeader = "Le profil décrit semble mixte";
                            $messageBody .= 'Le profil décrit semble mixte. Un rescrit pourrait peut-être sembler adapté (discutez-en avec un professionnel).';
                            $messageBodyHtml2 = 'Le profil décrit semble mixte. Un rescrit pourrait peut-être sembler adapté (discutez-en avec un professionnel).';
                            $color = 'jaune';
                        } else if ($noteTotal > 38 && $noteTotal <= 51) {
                            $messageHeader = "Le profil décrit semble mixte";
                            $messageBody .= 'Le profil décrit semble mixte. Un rescrit pourrait peut-être sembler adapté (discutez-en avec un professionnel).';
                            $messageBodyHtml2 = 'Le profil décrit semble mixte. Un rescrit pourrait peut-être sembler adapté (discutez-en avec un professionnel).';
                            $color = 'orange';
                        } else {
                            $messageHeader = "Le profil décrit est probablement professionnel";
                            $messageBody .= 'Le profil décrit semble avoir des chances significatives de relever du statut des professionnels.';
                            $messageBodyHtml2 = 'Le profil décrit semble avoir des chances significatives de relever du statut des professionnels.';
                            $color = 'rouge';
                        }
                        $nbRound = 20 * $noteTotal / 82;

                        // envoi email

                        $config = $this->getConfig();

                        $configEmail = $config['email-activite'];

                        //var_dump($config);
                        $destinataire = isset($data['email']) ? $data['email'] : '';
                        //var_dump($configEmail['expediteur-email']); exit;
                        $expediteurEmail = $configEmail['expediteur-email'];

                        $reponse = $expediteurEmail;

                    $msg = new Message();
                        if (!empty($destinataire)) {

                        $msg->addFrom($expediteurEmail, $configEmail['expediteur-nom'])
                            ->addReplyTo($reponse)
                            ->addTo($destinataire)
                            ->setEncoding('utf-8')
                            ->setSubject($configEmail['sujet-email']);

                        }
//$textEmail = str_replace('[ADRESSE]', $adresse, $configInscription['email-sender']['message-txt']);
//                $text = new Mime\Part($textEmail);


                        $texteBody = implode("\n", $arrayQuestionnaireEmail) . "\n" . $messageBody;
                        $texte = new MimePart($texteBody);
                        $texte->type = Mime::TYPE_TEXT;
                        $texte->charset = 'utf-8';


//$viewContent = new \Laminas\View\Model\ViewModel($values);
//             $viewContent->setTemplate($viewTemplate); // set in module.config.php


//             $viewLayout = new \Laminas\View\Model\ViewModel(array(
//                 'arrayQuestionnaireEmail' => $arrayQuestionnaireEmail,
//                 'content' => $content, 
//                 'fullPathImgHeader' => $base . $configInscription['email-sender']['img-header-email'],
//                 ));
//                $viewLayout->setTemplate('email/template'); // set in module.config.php
////                $contentHtml = $renderHtml->render($viewTemplate, $values);

                        $viewLayout = new \Laminas\View\Model\ViewModel(

                            [
                                'arrayQuestionnaireEmail' => $arrayQuestionnaireEmail,
                                'messageHeader' => $messageHeader,
                                'messageBodyHtml' => $messageBodyHtml,
                                'messageBodyHtml2' => $messageBodyHtml2,
                                'color' => $color,
                                'pourcentage' => round($nbRound, 1)*100/20
                            ]);

                        //$layout = new \Laminas\View\Helper\Layout();

//                $viewLayout->s 
                        $viewLayout->setTemplate('application/email/test-activite');
                        //$layout->setView($viewLayout);
                        $htmlBody = $this->viewRenderer->render($viewLayout);


// suppresion email




                        $html = new MimePart($htmlBody);
                        $html->type = Mime::TYPE_HTML;
                        $html->charset = 'utf-8';

                        $body = new MimeMessage();
                        $body->setParts(array($texte, $html));

                        $msg->setBody($body);

                        $contentTypeHeader = $msg->getHeaders()->get('contenttype');

                        $contentTypeHeader->setType(Mime::MULTIPART_ALTERNATIVE);
                        $transport = new SendmailTransport();

                        try {
                            // ne plus envoyer d'email
                            //$transport->send($msg);
//                            $responseArray['success']['messages'][] = array(
////                        'header' => 'Votre score est de : ' . round($nbRound,1) . "/20",
//                                'header' => 'Consultez votre boite mail',
//                                'body' => 'Le résultat a été envoyé à votre adresse email : ' . $destinataire,
//                                'footer' => 'Votre score est de : ' . round($nbRound, 1) . "/20",
//                                'color' => $color,
//                            );

//                            $view = new ViewModel(['header' => $messageHeader,
//                                'body' => $htmlBody,
//                                'footer' => 'Votre score est de : ' . round($nbRound, 1) . "/20",
//                                'color' => $color]);
//                            $view->setTemplate('application/accueil/resultat-questions-activite');
//                            return $view;
                            $responseArray['success']['messages'][] = array(
//                        'header' => 'Votre score est de : ' . round($nbRound,1) . "/20",
                                'header' => $messageHeader,
                                'body' => $htmlBody,
                                'footer' => 'Votre score est de : ' . round($nbRound, 1) . "/20",
                                'color' => $color,
                            );


                            $remodeAdress = new \Laminas\Http\PhpEnvironment\RemoteAddress();
//var_dump($remodeAdress->getIpAddress()); 
//exit;
                            $messageBody .= "\n" . $remodeAdress->getIpAddress();
                            if (empty($data['email'])) {
                                $data['email'] = 'email non renseigné';
                            }
                            mail('jimmykurc@gmail.com;', 'Questionnaire activité Ledgio', 'Questionnaire activité Ledgio : ' . $data['email'] . "\n" . implode("\n", $arrayQuestionnaireEmail) . "\n" . $messageBody . "\n" . 'Votre score est de : ' . round($nbRound, 1) . "/20");
//                            mail('marcuzan75@gmail.com;', 'Questionnaire activité Ledgio', 'Questionnaire activité Ledgio : ' . $data['email'] . "\n" . implode("\n", $arrayQuestionnaireEmail) . "\n" . $messageBody . "\n" . 'Votre score est de : ' . round($nbRound, 1) . "/20");


                        } catch (Exception $ex) {
                            $responseArray['error']['messages'][] = array(
//                        'header' => 'Votre score est de : ' . round($nbRound,1) . "/20",
                                'header' => 'Une erreur est survenue',
                                'body' => 'Veuillez renouveler votre demande',
                                'footer' => 'Votre score est de : ' . round($nbRound, 1) . "/20",
                                'color' => $color
                            );
                            $remodeAdress = new \Laminas\Http\PhpEnvironment\RemoteAddress();
//var_dump($remodeAdress->getIpAddress()); 
//exit;
                            $messageBody .= "\n" . $remodeAdress->getIpAddress();
                            mail('jimmykurc@gmail.com;', 'Erreur d\'envoi du Questionnaire activité Ledgio', 'Questionnaire activité Ledgio : ' . $data['email'] . "\n" . implode("\n", $arrayQuestionnaireEmail) . "\n" . $messageBody . "\n" . 'Votre score est de : ' . round($nbRound, 1) . "/20");
//                            mail('marcuzan75@gmail.com;', 'Erreur d\'envoi du Questionnaire activité Ledgio', 'Questionnaire activité Ledgio : ' . $data['email'] . "\n" . implode("\n", $arrayQuestionnaireEmail) . "\n" . $messageBody . "\n" . 'Votre score est de : ' . round($nbRound, 1) . "/20");

                        }


                        // Expediteur / Destinataire (cf fichier config / local.php)
                        /* JK - Debug 05/11/2015 */
//              $from = $configExamen['expediteur-nom'] . ' ' . $configExamen['expediteur-email'];
//                $fromEmail = $configInscription['email-sender']['email'];
//                $fromNom = $configInscription['email-sender']['name'];
//                $to = $newUser->getEmail();
//
//                // Sujet
//                $subject = $configInscription['email-sender']['subject'];
//
//                // Mail service
//                $mailService = new SendmailTransport();
//
//                // Mail
//                $uri = $this->getRequest()->getUri();
//                $base = sprintf('%s://%s', $uri->getScheme(), $uri->getHost());
//
//
//
//                $adresse = $base . $this->url()->fromRoute(\Application\Controller\UserController::ROUTE_ACTIVATION_BOX, array(
//                            'token' => $newUser->getToken(),
//                            'user_id' => $newUser->id
//                ));
//                /* analytics */
//                $adresse .= '?utm_source=confirm%20account&utm_medium=email&utm_campaign=confirmation';
//


//                $text->type = Mime\Mime::TYPE_TEXT;
//                $text->charset = "UTF-8";
//
//
//                // HTML
//                $viewTemplate = 'email/register';
////                $viewTemplate = 'email/welcome-dcf-box';
//                $uri = $this->getRequest()->getUri();
//                $base = sprintf('%s://%s', $uri->getScheme(), $uri->getHost());
//
//
//
//                $values = array(
//                    'adresse' => $adresse,
////                    'fullPathImgHeader' => $base . '/img/email/header-dcf.png'
////                    'email' => $newUser->getEmail(),
//                );
//                $serviceManager = $this->getServiceLocator();
//                $renderHtml = $serviceManager->get('goaliomailservice_renderer');
////                $contentHtml = $renderHtml->render($viewTemplate, $values);
////                $renderer = $this->getServiceLocator()->get('Laminas\View\Renderer\RendererInterface');
//
//                $viewContent = new \Laminas\View\Model\ViewModel($values);
//                $viewContent->setTemplate($viewTemplate); // set in module.config.php
//                $content = $renderHtml->render($viewContent);
//
//// Email layout
////                var_dump($base . $configInscription['email-sender']['img-header-email']);
////                exit;
//                $viewLayout = new \Laminas\View\Model\ViewModel(array('content' => $content, 'fullPathImgHeader' => $base . $configInscription['email-sender']['img-header-email'],));
//                $viewLayout->setTemplate('email/template'); // set in module.config.php
////                $contentHtml = $renderHtml->render($viewTemplate, $values);
//                $contentHtml = $renderHtml->render($viewLayout);
//
////                echo mb_internal_encoding();
////                echo mb_detect_encoding($contentHtml);
//
//                $html = new Mime\Part($contentHtml);
//                $html->type = Mime\Mime::TYPE_HTML;
//                $html->charset = "UTF-8";
//                $html->encoding = Mime\Mime::ENCODING_8BIT;
//
//                $mimeMessage = new Mime\Message();
//
////                $mimeMessage->setParts(array($html, $text));
////                $mimeMessage->setParts(array($text,$html));
//                $mimeMessage->setParts(array($text, $html));
//
//                $message = new Message();
//
//                $message->addFrom($fromEmail, $fromNom)
//                        ->addTo($to)
//                        ->setSubject($subject);
//
//                //$message->setEncoding("UTF-8");
//                $message->setBody($mimeMessage);
//
//                $message->getHeaders()->get('content-type')->setType(Mime\Mime::MULTIPART_ALTERNATIVE);
//                try {
//                    $mailService->send($message);
//                } catch (\Laminas\Mail\Protocol\Exception\RuntimeException $e) {
////                    var_dump($e->getMessage());
////                    exit;
//                    $this->flashMessenger()->addErrorMessage($this->translate('An error occured. Please try again.'));
//                    $this->flashMessenger()->addErrorMessage($e->getMessage());
//                    return $this->redirect()->toRoute(self::ROUTE_REGISTER);
//                }
//
//                //echo 'ok';
////                $this->flashMessenger()->addSuccessMessage('Un lien de confirmation d\'inscription vient de vous être envoyé sur votre email.');
//                $this->flashMessenger()->addSuccessMessage($this->translate('A confirmation link has just been sent to you.'));
//
//                return $this->redirect()->toUrl('/');


                        //mail('jimmykurc@gmail.com;', 'Questionnaire activité Ledgio', 'Questionnaire activité Ledgio : ' . $data['email'] . "\n" . implode("\n", $arrayQuestionnaireEmail) . "\n" . $messageBody . "\n" . 'Votre score est de : ' . round($nbRound, 1) . "/20");
                        //mail('marcuzan75@gmail.com;', 'Questionnaire activité Ledgio', 'Questionnaire activité Ledgio : ' . $data['email'] . "\n" . implode("\n", $arrayQuestionnaireEmail) . "\n" . $messageBody . "\n" . 'Votre score est de : ' . round($nbRound, 1) . "/20");
//                    }

                }

                $response = $this->getResponse();
                $response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
                $response->setContent(json_encode($responseArray));

                return $response;

                // Validate form
                //            if($form->isValid()) {
                //                
                //                // Get filtered and validated data
                //                $data = $form->getData();
                //                
                //                // Add user.
                //                $user = $this->userManager->addUser($data);
                //                
                //                // Redirect to "view" page
                //                return $this->redirect()->toRoute('users', 
                //                        ['action'=>'view', 'id'=>$user->getId()]);                
                //            }               
            }
        }

        return new ViewModel([
            'form' => $form,
            'arrayQuestions' => $arrayQuestions
        ]);


        // $this->layout('layout/layout-ledgio');
//        return new ViewModel(array(
//        ));
    }

    public function cgsAction()
    {
        // $this->layout('layout/layout-ledgio');
        return new ViewModel(array());
    }

    public function cgsAcceptAction()
    {
        if ($user = $this->currentUser()) {

        } else {
            echo 'false';
            exit;
        }


        if (empty($_POST['cgs']) || empty($_POST['ret'])) {

            //@todo save in bdd
            $responseArray['error']['messages'][] = array(
                'header' => 'Impossible de commander le rapport',
                'body' => 'Impossible de commander le rapport si vous n\'acceptez pas les conditions générales de service et que vous n\'acceptez pas de renoncer à votre droit de rétractation',
                'footer' => '');

            $responseArray['success'] = false;
        } else {
            $responseArray['success'] = true;
        }


        $response = $this->getResponse();
        $response->getHeaders()->addHeaderLine('Content-Type', 'application/json');
        $response->setContent(json_encode($responseArray));
        return $response;
    }

    public function contactAction()
    {
        // Entity Manager Doctrine
        $entityManager = $this->getEntityManager();
        // Récupération des exchanges séléctionnés par l'utilisateur
        $form = new \Application\Form\ContactForm($entityManager);
        //$form->setHydrator(new \Laminas\Hydrator\ArraySerializable());
//        $form->bind(new \Application\Entity\Ledgio());
        // Récupération des exchanges séléctionnés par l'utilisateur
//        if ($user->getExchanges()) {
//            foreach ($user->getExchanges() as $exchange) {
//                $arrayIdExchanges[] = $exchange->getId();
//            }
//            $form->setData(['exchanges' => $arrayIdExchanges]);
//        }

        if ($this->getRequest()->isPost()) {


            // Récupération des données du post
            $data = array_merge_recursive(
                $this->getRequest()->getPost()->toArray()
            );

            $form->setData($data);


            if ($form->isValid()) {
                $data = $form->getData();
                //$exchangeMapper = $entityManager->getRepository(\Application\Entity\Exchange::class);
                //var_dump($data);

                mail('jimmykurc@gmail.com;', 'Contact Ledgio', 'Contact Ledgio : ' . $data['name'] . "\n" . $data['email'] . "\n" . $data['subject'] . "\n" . $data['body'] . "\n");
                mail('marcuzan75@gmail.com', 'Contact Ledgio', 'Contact Ledgio : ' . $data['name'] . "\n" . $data['email'] . "\n" . $data['subject'] . "\n" . $data['body'] . "\n");


                $hasError = '';

                if (!empty($hasError)) {
                    $this->flashMessenger()->addErrorMessage('Une erreur est survenue.');
                    $this->redirect()->toRoute(self::ROUTE_INDEX);
                }
                $this->flashMessenger()->addSuccessMessage("Merci d'avoir contacté Ledgio. Nous vous répondrons rapidement.");

                $this->redirect()->toRoute(self::ROUTE_INDEX, array());
            } else {
                $messages = $form->getMessages();
            }
        }

        $this->layout('layout/layout-ledgio');

        return new ViewModel(
            array(
                'form' => $form,
            ));
    }

    public function sitemapAction()
    {
        $response = new \Zend\Http\Response();
        $response->getHeaders()->addHeaderLine('Content-Type', 'text/xml; charset=utf-8');
        $xml = '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>https://ledgio.fr/</loc>
        <priority>0.9</priority>
    </url>
    <url>
        <loc>https://ledgio.fr/justificatifs-declaration-fiscale-crypto-monnaie</loc>
    </url>
    <url>
        <loc>https://ledgio.fr/fiscalite-crypto-test-questionnaire-regime-occasionnel-particulier-professionnel</loc>
    </url>
    <url>
        <loc>https://ledgio.fr/contact</loc>
    </url>
    <url>
        <loc>https://ledgio.fr/mentions-legales</loc>
    </url>
    <url>
        <loc>https://ledgio.fr/protection-donnees</loc>
    </url>
</urlset>';
        $response->setContent($xml);
        return $response;
    }

}


??

??