var/cache/dev/twig/58/58335f61f5f7d31e0fb6da0ddc9ca4dd.php line 40

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. use Twig\TemplateWrapper;
  15. /* front/tunnel/step1.html.twig */
  16. class __TwigTemplate_3f10f96abcfd7373c054d86c764db62e extends Template
  17. {
  18.     private Source $source;
  19.     /**
  20.      * @var array<string, Template>
  21.      */
  22.     private array $macros = [];
  23.     public function __construct(Environment $env)
  24.     {
  25.         parent::__construct($env);
  26.         $this->source $this->getSourceContext();
  27.         $this->parent false;
  28.         $this->blocks = [
  29.             'stylesheets' => [$this'block_stylesheets'],
  30.             'javascripts' => [$this'block_javascripts'],
  31.         ];
  32.     }
  33.     protected function doDisplay(array $context, array $blocks = []): iterable
  34.     {
  35.         $macros $this->macros;
  36.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  37.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""front/tunnel/step1.html.twig"));
  38.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  39.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""front/tunnel/step1.html.twig"));
  40.         // line 1
  41.         yield "<!doctype html>
  42. <html lang=\"fr\">
  43. <head>
  44.   ";
  45.         // line 5
  46.         if ((array_key_exists("site_mode"$context) && ((isset($context["site_mode"]) || array_key_exists("site_mode"$context) ? $context["site_mode"] : (function () { throw new RuntimeError('Variable "site_mode" does not exist.'5$this->source); })()) == "prod"))) {
  47.             // line 6
  48.             yield "    <!-- Google Tag Manager -->
  49.     <!-- Google tag (gtag.js) -->
  50.     <!-- Google Tag Manager -->
  51.     <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  52.                 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  53.               j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  54.               'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  55.       })(window,document,'script','dataLayer','GTM-P6WW2D7');</script>
  56.     <!-- End Google Tag Manager -->
  57.     <!-- End Google Tag Manager -->
  58.   ";
  59.         }
  60.         // line 18
  61.         yield "  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">
  62.   <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
  63.   <meta http-equiv=\"Content-Language\" content=\"fr\" />
  64.   <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
  65.   <title>Étape 1</title>
  66.   <!--Favicon-->
  67.   <link rel=\"icon\" type=\"image/png\" href=\"/static/img/tunnel/favicon.png\" />
  68.   <!--Script pour l'accordéon-->
  69.   <script type=\"text/javascript\" src=\"//unpkg.com/alpinejs\" defer></script>
  70.   <!-- TrustBox script -->
  71.   <script type=\"text/javascript\" src=\"//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js\" async></script>
  72.   ";
  73.         // line 33
  74.         yield from $this->unwrap()->yieldBlock('stylesheets'$context$blocks);
  75.         // line 36
  76.         yield "  <script>
  77.     !function(f,b,e,v,n,t,s)
  78.     {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  79.             n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  80.       if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  81.       n.queue=[];t=b.createElement(e);t.async=!0;
  82.       t.src=v;s=b.getElementsByTagName(e)[0];
  83.       s.parentNode.insertBefore(t,s)}(window, document,'script',
  84.             'https://connect.facebook.net/en_US/fbevents.js');
  85.     fbq('init', '334520913601498');
  86.   </script>
  87.   <noscript><img height=\"1\" width=\"1\" style=\"display:none\"
  88.                  src=\"https://www.facebook.com/tr?id=334520913601498&ev=PageView&noscript=1\"
  89.     /></noscript>
  90. </head>
  91. <body class=\"font-poppins\">
  92.  <!-- Google Tag Manager (noscript) -->
  93. <noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-P6WW2D7\"
  94.                   height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript>
  95. <!-- End Google Tag Manager (noscript) --> ⁠
  96.   <!-- En Tête -->
  97.   <header class=\"flex px-4 py-4 justify-center lg:justify-between flex-wrap items-center\">
  98.     <div class=\"flex\">
  99.       <a href=\"https://lesbonsprofs.com\" target=\"_blank\" aria-label=\"Les Bons Profs\"><img src=\"/static/img/tunnel/les-bons-profs-logo.svg\" alt=\"Les bons profs - Paiement\" /></a>
  100.     </div>
  101.     <div class=\"flex items-center mt-2 sm:mt-0\">
  102.       <div class=\"text-bleu font-bold sm:mr-2 xl:mr-5 text-xs sm:text-[15px] xl:text[20px] text-center sm:text-left\">Besoin d'aide ? Sabrina vous répond au 01 86 95 72 01 du lundi au jeudi de 9h à 17h.</div>
  103.     </div>
  104.   </header>
  105.   <!-- Titre -->
  106.   <section class=\"py-4 text-center bg-bleu\">
  107.     <h1 class=\"font-muller font-bold text-[45px] sm:text-[90px] text-white\">
  108.       Offre ";
  109.         // line 72
  110.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["typeOffer"]) || array_key_exists("typeOffer"$context) ? $context["typeOffer"] : (function () { throw new RuntimeError('Variable "typeOffer" does not exist.'72$this->source); })()), "title", [], "any"falsefalsefalse72), "html"nulltrue);
  111.         yield "
  112.     </h1>
  113.     <h2 class=\"font-muller text-jaunefonce text-[25px] sm:text-[40px]\">
  114.       Sélectionnez votre durée
  115.     </h2>
  116.   </section>
  117.   <!-- Timeline -->
  118.   <section class=\"flex justify-center sm:pt-16\">
  119.     <ol
  120.         class=\"border-s border-bleu border-opacity-30 md:flex md:justify-evenly md:gap-6 md:border-s-0 md:border-t w-9/12\">
  121.       <!--First item-->
  122.       <li>
  123.         <div class=\"flex items-center pt-3 md:block md:pt-0\">
  124.           <div
  125.               class=\"md:mx-auto h-[20px] w-[20px] rounded-full bg-white border-bleu border-8 md:-mt-[10px] -ms-[10px] me-3\"></div>
  126.           <p class=\"sm:mt-2 text-sm xl:text-base text-bleu font-bold\">
  127.             1. Choisissez votre offre
  128.           </p>
  129.         </div>
  130.       </li>
  131.       <!--Second item-->
  132.       <li>
  133.         <div class=\"flex items-center pt-3 md:block md:pt-0\">
  134.           <div
  135.               class=\"md:mx-auto h-[9px] w-[9px] rounded-full bg-bleu opacity-50 md:-mt-[5px] -ms-[5px] me-3\"></div>
  136.           <p class=\"sm:mt-2 ml-1.5 sm:ml-0 text-sm xl:text-base text-bleu opacity-50\">
  137.             2. Accédez à votre compte
  138.           </p>
  139.         </div>
  140.       </li>
  141.       <!--Third item-->
  142.       <li>
  143.         <div class=\"flex items-center pt-3 md:block md:pt-0\">
  144.           <div
  145.               class=\"md:mx-auto h-[9px] w-[9px] rounded-full bg-bleu opacity-50 md:-mt-[5px] -ms-[5px] me-3\"></div>
  146.           <p class=\"sm:mt-2 ml-1.5 sm:ml-0 text-sm xl:text-base text-bleu opacity-50\">
  147.             3. Procédez au paiement
  148.           </p>
  149.         </div>
  150.       </li>
  151.     </ol>
  152.   </section>
  153. ";
  154.         // line 118
  155.         if ((($tmp = (isset($context["mode_free"]) || array_key_exists("mode_free"$context) ? $context["mode_free"] : (function () { throw new RuntimeError('Variable "mode_free" does not exist.'118$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  156.             // line 119
  157.             yield "  <section class=\"flex justify-center py-8 sm:py-16\">
  158.     <div class=\"text-center w-11/12 lg:w-9/12 bg-jaunefonce text-bleu py-2 px-4 rounded-full sm:text-xl\">
  159.       Vous ne serez pas débité avant la fin de votre essai de 7 jours
  160.     </div>
  161.   </section>
  162. ";
  163.         }
  164.         // line 125
  165.         yield "
  166.   <!--Offres-->
  167.   <section class=\"flex justify-center";
  168.         // line 127
  169.         if ((($tmp = (isset($context["mode_tunnel"]) || array_key_exists("mode_tunnel"$context) ? $context["mode_tunnel"] : (function () { throw new RuntimeError('Variable "mode_tunnel" does not exist.'127$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  170.             yield " pt-8 sm:pt-16";
  171.         }
  172.         yield "\">
  173.     <div class=\"flex flex-col lg:flex-row justify-between w-11/12 xl:w-9/12\">
  174.       <!--Colonne gauche-->
  175.       <div class=\"flex flex-col lg:w-6/12\">
  176.         ";
  177.         // line 132
  178.         if ((($tmp =  !(isset($context["mode_tunnel"]) || array_key_exists("mode_tunnel"$context) ? $context["mode_tunnel"] : (function () { throw new RuntimeError('Variable "mode_tunnel" does not exist.'132$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  179.             // line 133
  180.             yield "        <div>
  181.           <label for=\"enfants\" class=\"font-bold tracking-tight sm:tracking-normal\">
  182.             Combien d’enfants souhaitez-vous inscrire&nbsp;?
  183.           </label>
  184.           <div class=\"flex items-center mt-2\">
  185.             <div>
  186.               <select id=\"nbr-child\" name=\"enfants\" class=\"block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 sm:max-w-xs sm:text-sm/6\">
  187.                 <option value=\"1\">1 enfant</option>
  188.                 <option value=\"2\">2 enfants</option>
  189.                 <option value=\"3\">3 enfants</option>
  190.                 <option value=\"4\">4 enfants</option>
  191.                 <option value=\"5\">5 enfants</option>
  192.               </select>
  193.             </div>
  194.             <div class=\"italic text-xs text-gray-500 ml-5\">
  195.               <p>-20% pour le 2<sup>ème</sup> enfant</p>
  196.               <p>-30% pour le 3<sup>ème</sup> enfant</p>
  197.             </div>
  198.           </div>
  199.         </div>
  200.           ";
  201.         } else {
  202.             // line 154
  203.             yield "          <input type=\"hidden\" name=\"enfants\" value=\"1\" id=\"nbr-child\">
  204. ";
  205.         }
  206.         // line 156
  207.         yield "        ";
  208.         $context['_parent'] = $context;
  209.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["listOffer"]) || array_key_exists("listOffer"$context) ? $context["listOffer"] : (function () { throw new RuntimeError('Variable "listOffer" does not exist.'156$this->source); })()));
  210.         $context['loop'] = [
  211.           'parent' => $context['_parent'],
  212.           'index0' => 0,
  213.           'index'  => 1,
  214.           'first'  => true,
  215.         ];
  216.         if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
  217.             $length count($context['_seq']);
  218.             $context['loop']['revindex0'] = $length 1;
  219.             $context['loop']['revindex'] = $length;
  220.             $context['loop']['length'] = $length;
  221.             $context['loop']['last'] = === $length;
  222.         }
  223.         foreach ($context['_seq'] as $context["_key"] => $context["row"]) {
  224.             // line 157
  225.             yield "        <!--Carte 24 mois-->
  226.         <div class=\"";
  227.             // line 158
  228.             if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse158)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  229.                 yield "sm:flex";
  230.             } else {
  231.                 yield "flex";
  232.             }
  233.             yield " justify-between border-gray-400 border-solid border-4 rounded-md mt-6\">
  234.           ";
  235.             // line 159
  236.             if (((null === CoreExtension::getAttribute($this->env$this->source$context["row"], "discount", [], "any"falsefalsefalse159)) || ( !(null === CoreExtension::getAttribute($this->env$this->source$context["row"], "discountDate", [], "any"falsefalsefalse159)) && ($this->extensions['Twig\Extension\CoreExtension']->formatDate(CoreExtension::getAttribute($this->env$this->source$context["row"], "discountDate", [], "any"falsefalsefalse159), "U") < $this->extensions['Twig\Extension\CoreExtension']->formatDate("now""U"))))) {
  237.                 // line 160
  238.                 yield "            <div>";
  239.                 if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse160) > 1)) {
  240.                     // line 161
  241.                     yield "              <span class=\"text-xs bg-red-600 text-white absolute rounded px-1 py-0.5\">";
  242.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(abs($this->extensions['Twig\Extension\CoreExtension']->formatNumber(((((CoreExtension::getAttribute($this->env$this->source$context["row"], "price", [], "any"falsefalsefalse161) / CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse161)) - (isset($context["priceMark"]) || array_key_exists("priceMark"$context) ? $context["priceMark"] : (function () { throw new RuntimeError('Variable "priceMark" does not exist.'161$this->source); })())) / (isset($context["priceMark"]) || array_key_exists("priceMark"$context) ? $context["priceMark"] : (function () { throw new RuntimeError('Variable "priceMark" does not exist.'161$this->source); })())) * 100), 0","".")), "html"nulltrue);
  243.                     yield "% de réduction</span>
  244.               ";
  245.                 }
  246.                 // line 163
  247.                 yield "            <div class=\"flex flex-col pt-5 pb-5 pl-5\">
  248.               <div class=\"flex items-center gap-x-3\">
  249.                 <input id=\"p-";
  250.                 // line 165
  251.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse165), "html"nulltrue);
  252.                 yield "\" name=\"price\" value=\"";
  253.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "slug", [], "any"falsefalsefalse165), "html"nulltrue);
  254.                 yield "\" type=\"radio\" class=\"h-4 w-4 border-gray-300\" data-id=\"";
  255.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "id", [], "any"falsefalsefalse165), "html"nulltrue);
  256.                 yield "\" data-title=\"";
  257.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "title", [], "any"falsefalsefalse165), "html"nulltrue);
  258.                 yield "\" data-price=\"";
  259.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "price", [], "any"falsefalsefalse165), "html"nulltrue);
  260.                 yield "\" data-month=\"";
  261.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse165), "html"nulltrue);
  262.                 yield "\" data-period=\"";
  263.                 if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse165) > 1)) {
  264.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse165), "html"nulltrue);
  265.                 }
  266.                 yield " mois\">
  267.                 <label for=\"p-";
  268.                 // line 166
  269.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse166), "html"nulltrue);
  270.                 yield "\" class=\"block font-medium text-gray-900\">
  271.                   <span class=\"font-bold text-xl mr-5\">";
  272.                 // line 167
  273.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse167), "html"nulltrue);
  274.                 yield " mois</span><br class=\"sm:hidden\"/>
  275.                   <span class=\"font-bold\">";
  276.                 // line 168
  277.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber(Twig\Extension\CoreExtension::round((CoreExtension::getAttribute($this->env$this->source$context["row"], "price", [], "any"falsefalsefalse168) / CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse168)), 2"floor"), 2",""."), "html"nulltrue);
  278.                 yield " € / mois</span>
  279.                 </label>
  280.               </div>
  281.               <div class=\"mt-5 text-xs text-gray-500\">
  282.                 ";
  283.                 // line 172
  284.                 if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse172) > 1)) {
  285.                     yield "En un paiement de ";
  286.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber(CoreExtension::getAttribute($this->env$this->source$context["row"], "price", [], "any"falsefalsefalse172), 2",""."), "html"nulltrue);
  287.                     yield " €.";
  288.                 }
  289.                 yield " ";
  290.                 if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse172) < 13)) {
  291.                     yield "Renoulevé tous les ";
  292.                     if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse172) > 1)) {
  293.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse172), "html"nulltrue);
  294.                     }
  295.                     yield "  mois.";
  296.                 }
  297.                 yield " Annulable à tout moment
  298.               </div>
  299.             </div>
  300.           </div>
  301.           ";
  302.             } else {
  303.                 // line 177
  304.                 yield "            <div>
  305.               <span class=\"text-xs bg-red-600 text-white absolute rounded px-1 py-0.5\">";
  306.                 // line 178
  307.                 if ((null === CoreExtension::getAttribute($this->env$this->source$context["row"], "percentDiscount", [], "any"falsefalsefalse178))) {
  308.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(abs($this->extensions['Twig\Extension\CoreExtension']->formatNumber(((((CoreExtension::getAttribute($this->env$this->source$context["row"], "getAmount", [], "method"falsefalsefalse178) / CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse178)) - (isset($context["priceMark"]) || array_key_exists("priceMark"$context) ? $context["priceMark"] : (function () { throw new RuntimeError('Variable "priceMark" does not exist.'178$this->source); })())) / (isset($context["priceMark"]) || array_key_exists("priceMark"$context) ? $context["priceMark"] : (function () { throw new RuntimeError('Variable "priceMark" does not exist.'178$this->source); })())) * 100), 0","".")), "html"nulltrue);
  309.                 } else {
  310.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "percentDiscount", [], "any"falsefalsefalse178), "html"nulltrue);
  311.                 }
  312.                 yield "% de réduction</span>
  313.               <div class=\"flex flex-col pt-10 pb-5 pl-5\">
  314.                 <div class=\"flex items-center gap-x-3\">
  315.                   <input id=\"p-";
  316.                 // line 181
  317.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse181), "html"nulltrue);
  318.                 yield "\" name=\"price\" value=\"";
  319.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "slug", [], "any"falsefalsefalse181), "html"nulltrue);
  320.                 yield "\" type=\"radio\" class=\"h-4 w-4 border-gray-300 js-auto-discount\" data-title=\"";
  321.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "title", [], "any"falsefalsefalse181), "html"nulltrue);
  322.                 yield "\" data-discount=\"";
  323.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["row"], "discount", [], "any"falsefalsefalse181), "codePromo", [], "any"falsefalsefalse181), "html"nulltrue);
  324.                 yield "\" data-price=\"";
  325.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "price", [], "any"falsefalsefalse181), "html"nulltrue);
  326.                 yield "\" data-month=\"";
  327.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse181), "html"nulltrue);
  328.                 yield "\" data-period=\"";
  329.                 if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse181) > 1)) {
  330.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse181), "html"nulltrue);
  331.                 }
  332.                 yield " mois\">
  333.                   <label for=\"p-";
  334.                 // line 182
  335.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["loop"], "index", [], "any"falsefalsefalse182), "html"nulltrue);
  336.                 yield "\" class=\"block font-medium text-gray-900\">
  337.                     <span class=\"font-bold text-xl mr-5\">";
  338.                 // line 183
  339.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse183), "html"nulltrue);
  340.                 yield " mois</span><br class=\"sm:hidden\"/>
  341.                     <span class=\"font-bold\">";
  342.                 // line 184
  343.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber(Twig\Extension\CoreExtension::round((CoreExtension::getAttribute($this->env$this->source$context["row"], "getAmount", [], "method"falsefalsefalse184) / CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse184)), 2"floor"), 2",""."), "html"nulltrue);
  344.                 yield " € / mois <span class=\"line-through text-gray-500\">( au lieu de ";
  345.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber((isset($context["priceMark"]) || array_key_exists("priceMark"$context) ? $context["priceMark"] : (function () { throw new RuntimeError('Variable "priceMark" does not exist.'184$this->source); })()), 2",""."), "html"nulltrue);
  346.                 yield "€)</span></span>
  347.                   </label>
  348.                 </div>
  349.                 <div class=\"mt-5 text-xs text-gray-500\">
  350.                   ";
  351.                 // line 188
  352.                 if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse188) > 1)) {
  353.                     yield "En un paiement de ";
  354.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber(CoreExtension::getAttribute($this->env$this->source$context["row"], "getAmount", [], "method"falsefalsefalse188), 2",""."), "html"nulltrue);
  355.                     yield " € (<span class=\"text-decoration-line-through\" style=\"text-decoration: line-through\">";
  356.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "oldPrice", [], "any"falsefalsefalse188), "html"nulltrue);
  357.                     yield " €</span>) avec le code ";
  358.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::upper($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["row"], "discount", [], "any"falsefalsefalse188), "codePromo", [], "any"falsefalsefalse188)), "html"nulltrue);
  359.                     yield ".";
  360.                 }
  361.                 yield " ";
  362.                 if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse188) < 13)) {
  363.                     yield "Renoulevé tous les ";
  364.                     if ((CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse188) > 1)) {
  365.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "monthValid", [], "any"falsefalsefalse188), "html"nulltrue);
  366.                     }
  367.                     yield "  mois.";
  368.                 }
  369.                 yield " Annulable à tout moment
  370.                 </div>
  371.               </div>
  372.             </div>
  373.           ";
  374.             }
  375.             // line 193
  376.             yield "          ";
  377.             if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["loop"], "first", [], "any"falsefalsefalse193)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  378.                 // line 194
  379.                 yield "          <div class=\"flex flex-col justify-center bg-jaunefonce sm:w-5/12 sm:p-5 p-3\">
  380.             <div class=\"flex flex-wrap font-bold items-center justify-center sm:justify-start\">Coup de<img src=\"/static/img/tunnel/coeur-rouge.png\" alt=\"Coup de coeur des parents\" class=\"px-1 sm:px-2 w-5 h-4 sm:w-auto\" />des parents</div>
  381.             <div class=\"mt-5 text-xs text-center sm:text-justify\">Inclus les annales du Bac et du Brevet corrigées en vidéo</div>
  382.           </div>
  383.           ";
  384.             }
  385.             // line 199
  386.             yield "        </div>
  387.         ";
  388.             ++$context['loop']['index0'];
  389.             ++$context['loop']['index'];
  390.             $context['loop']['first'] = false;
  391.             if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
  392.                 --$context['loop']['revindex0'];
  393.                 --$context['loop']['revindex'];
  394.                 $context['loop']['last'] = === $context['loop']['revindex0'];
  395.             }
  396.         }
  397.         $_parent $context['_parent'];
  398.         unset($context['_seq'], $context['_key'], $context['row'], $context['_parent'], $context['loop']);
  399.         $context array_intersect_key($context$_parent) + $_parent;
  400.         // line 201
  401.         yield "        ";
  402.         $context["titre_faq"] = "Comment fonctionne l’essai gratuit de 7&nbsp;jours&nbsp;:";
  403.         // line 202
  404.         yield "        ";
  405.         $context["faq"] = [["titre" => "Pendant la période d’essai""texte" => "Je teste tous les contenus compris dans mon abonnement, les stages de révision pendant les vacances et les boost matière."], ["titre" => "Comment arrêter l’essai gratuit""texte" => "Avant la fin des 7 jours d’essai, rendez-vous dans la rubrique “gestion du compte” de votre espace parents et cliquez sur “mettre fin à la période d’essai”."]];
  406.         // line 210
  407.         yield "        ";
  408.         if ((($tmp = (isset($context["mode_free"]) || array_key_exists("mode_free"$context) ? $context["mode_free"] : (function () { throw new RuntimeError('Variable "mode_free" does not exist.'210$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  409.             // line 211
  410.             yield "        <!--L'essai gratuit pour PC-->
  411.         <div class=\"mt-12 text-gray-500 hidden lg:block text-justify\">
  412.           <p class=\"font-bold\">
  413.               ";
  414.             // line 214
  415.             yield (isset($context["titre_faq"]) || array_key_exists("titre_faq"$context) ? $context["titre_faq"] : (function () { throw new RuntimeError('Variable "titre_faq" does not exist.'214$this->source); })());
  416.             yield "
  417.           </p>
  418.             ";
  419.             // line 216
  420.             $context['_parent'] = $context;
  421.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["faq"]) || array_key_exists("faq"$context) ? $context["faq"] : (function () { throw new RuntimeError('Variable "faq" does not exist.'216$this->source); })()));
  422.             foreach ($context['_seq'] as $context["_key"] => $context["row"]) {
  423.                 // line 217
  424.                 yield "              <p class=\"mt-5\">
  425.                 <span class=\"font-bold\">";
  426.                 // line 218
  427.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "titre", [], "any"falsefalsefalse218), "html"nulltrue);
  428.                 yield "</span>
  429.                 <br />
  430.                 ";
  431.                 // line 220
  432.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "texte", [], "any"falsefalsefalse220), "html"nulltrue);
  433.                 yield "
  434.               </p>
  435.             ";
  436.             }
  437.             $_parent $context['_parent'];
  438.             unset($context['_seq'], $context['_key'], $context['row'], $context['_parent']);
  439.             $context array_intersect_key($context$_parent) + $_parent;
  440.             // line 223
  441.             yield "        </div>
  442.         <!--Accordéon pour mobile-->
  443.         <div class=\"mt-12 py-2 px-3 border-gray-400 border-solid border rounded-md lg:hidden\" x-data=\"{selected: null}\">
  444.           <div>
  445.             <div>
  446.               <div class=\"w-full flex justify-between items-center cursor-pointer\"
  447.                    @click=\"selected !== 1 ? selected = 1 : selected = null\"
  448.               >
  449.                 <h4 class=\"font-bold text-gray-500\">";
  450.             // line 233
  451.             yield (isset($context["titre_faq"]) || array_key_exists("titre_faq"$context) ? $context["titre_faq"] : (function () { throw new RuntimeError('Variable "titre_faq" does not exist.'233$this->source); })());
  452.             yield "</h4>
  453.                 <div class=\"pl-2\">
  454.                   <img class=\"transition-all ease-in-out duration-700 min-w-4\" :class=\"selected === 1 ? 'rotate-180' : ''\" alt=\"chevron\" src=\"/static/img/tunnel/chevron.svg\" />
  455.                 </div>
  456.               </div>
  457.               <div class=\"relative overflow-hidden max-h-0 transition-all ease-in-out duration-700\" x-ref=\"container1\" :style=\"selected === 1 ? 'max-height: ' + \$refs.container1.scrollHeight + 'px' : ''\">
  458.                 <div class=\"pt-4 flex flex-col space-y-3\">
  459.                   <div class=\"text-gray-500 text-justify\">
  460.                     ";
  461.             // line 241
  462.             $context['_parent'] = $context;
  463.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["faq"]) || array_key_exists("faq"$context) ? $context["faq"] : (function () { throw new RuntimeError('Variable "faq" does not exist.'241$this->source); })()));
  464.             foreach ($context['_seq'] as $context["_key"] => $context["row"]) {
  465.                 // line 242
  466.                 yield "                      <p class=\"mt-5\">
  467.                         <span class=\"font-bold\">";
  468.                 // line 243
  469.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "titre", [], "any"falsefalsefalse243), "html"nulltrue);
  470.                 yield "</span>
  471.                         <br />
  472.                         ";
  473.                 // line 245
  474.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["row"], "texte", [], "any"falsefalsefalse245), "html"nulltrue);
  475.                 yield "
  476.                       </p>
  477.                     ";
  478.             }
  479.             $_parent $context['_parent'];
  480.             unset($context['_seq'], $context['_key'], $context['row'], $context['_parent']);
  481.             $context array_intersect_key($context$_parent) + $_parent;
  482.             // line 248
  483.             yield "                  </div>
  484.                 </div>
  485.               </div>
  486.             </div>
  487.           </div>
  488.         </div>
  489. ";
  490.         }
  491.         // line 255
  492.         yield "
  493.       </div>
  494.       <!--Colonne droite-->
  495.       <div class=\"flex flex-col lg:w-5/12 my-16 lg:mt-0\">
  496.         <!--Encadré bleu-->
  497.         <div class=\"flex flex-col bg-bleu rounded-2xl\">
  498.           <div class=\"text-white font-bold text-center text-2xl py-5\">Ce que comprend l'offre ";
  499.         // line 264
  500.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["typeOffer"]) || array_key_exists("typeOffer"$context) ? $context["typeOffer"] : (function () { throw new RuntimeError('Variable "typeOffer" does not exist.'264$this->source); })()), "title", [], "any"falsefalsefalse264), "html"nulltrue);
  501.         yield "</div>
  502.           <div class=\"flex flex-col bg-white m-2 rounded-2xl p-5\">
  503.            <div>
  504.              ";
  505.         // line 267
  506.         if ((($tmp =  !(null === (isset($context["typeOffer"]) || array_key_exists("typeOffer"$context) ? $context["typeOffer"] : (function () { throw new RuntimeError('Variable "typeOffer" does not exist.'267$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  507.             // line 268
  508.             yield "               ";
  509.             yield CoreExtension::getAttribute($this->env$this->source, (isset($context["typeOffer"]) || array_key_exists("typeOffer"$context) ? $context["typeOffer"] : (function () { throw new RuntimeError('Variable "typeOffer" does not exist.'268$this->source); })()), "textPaid", [], "any"falsefalsefalse268);
  510.             yield "
  511.              ";
  512.         }
  513.         // line 270
  514.         yield "           </div>
  515.             <label for=\"promo\" class=\"mt-8 sm:mt-16\">Vous disposez d'un code promotionel ? Indiquez-le ici :</label>
  516.             <div class=\"flex mt-5\">
  517.               <input type=\"text\" name=\"promo\" id=\"promo\" autocomplete=\"username\" class=\"flex-1 border-0 py-1.5 pl-5 placeholder:text-gray-400 placeholder:text-[3.5vw] sm:placeholder:text-[16px] rounded-l-md shadow-sm ring-1 ring-inset ring-gray-300 w-[2vw]\" placeholder=\"Entrez le code promo\">
  518.               <button type=\"submit\" class=\"bg-jaunefonce px-3 py-2 text-xl font-bold text-white shadow-sm hover:bg-rouge rounded-r-3xl\" id=\"button-code-promo\">Valider</button>
  519.             </div>
  520.             <div class=\"\" id=\"tr-code\">
  521.               <div style=\"padding: 2%;\" class=\"mt-2\">
  522.                 <div class=\"remise-appliquee font-bold\"></div>
  523.                 <div id=\"text-percent\"></div>
  524.               </div>
  525.             </div>
  526.             <div class=\"grid grid-cols-[repeat(2,minmax(auto,auto))] gap-4 border-jaunefonce border-solid border-8 rounded-3xl mt-8 sm:mt-16 p-6 items-center\">
  527.               ";
  528.         // line 283
  529.         if ((($tmp = (isset($context["mode_free"]) || array_key_exists("mode_free"$context) ? $context["mode_free"] : (function () { throw new RuntimeError('Variable "mode_free" does not exist.'283$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  530.             // line 284
  531.             yield "              <span>Montant dû aujourd'hui</span>
  532.               <span>0 €</span>
  533.               <span>Montant dû ";
  534.             // line 286
  535.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extra\Intl\IntlExtension']->formatDateTime($this->env$this->extensions['Twig\Extension\CoreExtension']->modifyDate("now""+8 day"), "medium""medium""dd MMMM YYYY"null"gregorian""fr"), "html"nulltrue);
  536.             yield "</span>
  537.               <span id=\"som-toto\"></span>
  538.               ";
  539.         } else {
  540.             // line 289
  541.             yield "                <span>Montant dû aujourd'hui</span>
  542.                 <span id=\"som-toto\"></span>
  543.               ";
  544.         }
  545.         // line 292
  546.         yield "
  547.             </div>
  548.           </div>
  549.         </div>
  550.         <!--Bouton-->
  551.         <div class=\"flex justify-center mt-10 cursor-pointer\">
  552.           <button type=\"submit\" class=\"bg-jaunefonce btn-form text-bleu rounded-3xl text-3xl font-muller py-3 px-20\">OK j'essaie</button>
  553.           <img src=\"/static/img/tunnel/clic-hand.png\" alt=\"Essayer l'offre\" class=\"absolute pl-60 pt-5 btn-form\" />
  554.         </div>
  555.         <!-- TrustBox widget - List pour PC-->
  556.         <div class=\"trustpilot-widget mt-20 hidden lg:block\" data-locale=\"fr-FR\" data-template-id=\"539ad60defb9600b94d7df2c\" data-businessunit-id=\"5c9c8063164d370001824ce4\" data-style-height=\"500px\" data-style-width=\"100%\" data-stars=\"4,5\" data-review-languages=\"fr\">
  557.           <a href=\"https://fr.trustpilot.com/review/lesbonsprofs.com\" target=\"_blank\" rel=\"noopener\">Trustpilot</a>
  558.         </div>
  559.         <!-- TrustBox widget - Mini pour mobiles-->
  560.         <div class=\"trustpilot-widget lg:hidden mt-16\" data-locale=\"fr-FR\" data-template-id=\"53aa8807dec7e10d38f59f32\" data-businessunit-id=\"5c9c8063164d370001824ce4\" data-style-height=\"150px\" data-style-width=\"100%\">
  561.           <a href=\"https://fr.trustpilot.com/review/lesbonsprofs.com\" target=\"_blank\" rel=\"noopener\">Trustpilot</a>
  562.         </div>
  563.       </div>
  564.     </div>
  565.   </section>
  566.   <form class=\"form-next-step-2\" action=\"";
  567.         // line 318
  568.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("choix-formule-step");
  569.         yield "?offre=";
  570.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["getOffer"]) || array_key_exists("getOffer"$context) ? $context["getOffer"] : (function () { throw new RuntimeError('Variable "getOffer" does not exist.'318$this->source); })()), "html"nulltrue);
  571.         yield "\" method=\"post\" id=\"parents_registration_first_step_";
  572.         if (((isset($context["getOffer"]) || array_key_exists("getOffer"$context) ? $context["getOffer"] : (function () { throw new RuntimeError('Variable "getOffer" does not exist.'318$this->source); })()) == "essentielle")) {
  573.             yield "essentielle";
  574.         } else {
  575.             yield "assistancevisio";
  576.         }
  577.         yield "\">
  578.   </form>
  579.   <div class=\"u-spinner h-100 vh-100\">
  580.     <svg class=\"svg-icon svg-loader\" version=\"1.1\" id=\"L4\" xmlns=\"http://www.w3.org/2000/svg\"
  581.          xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 50 100\" enable-background=\"new 0 0 0 0\"
  582.          xml:space=\"preserve\">
  583.         <circle cx=\"0\" cy=\"50\" r=\"6\">
  584.           <animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.1\"></animate>
  585.         </circle>
  586.       <circle cx=\"20\" cy=\"50\" r=\"6\">
  587.         <animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.2\"></animate>
  588.       </circle>
  589.       <circle cx=\"41\" cy=\"50\" r=\"6\">
  590.         <animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.3\"></animate>
  591.       </circle>
  592.     </svg>
  593.   </div>
  594.   ";
  595.         // line 336
  596.         yield from $this->unwrap()->yieldBlock('javascripts'$context$blocks);
  597.         // line 339
  598.         yield "<script type=\"text/javascript\">
  599.   \$(document).ready(function(){
  600.     function calculPrice(){
  601.       var nbrChild = parseInt(\$('#nbr-child').val());
  602.       var som = 0;
  603.       if(\$('input[name=\"price\"]:checked').length==1){
  604.         var period = \$('input[name=\"price\"]:checked').attr('data-period');
  605.         var month  = \$('input[name=\"price\"]:checked').attr('data-month');
  606.         var price  = \$('input[name=\"price\"]:checked').attr('data-price');
  607.         var realPrice = parseFloat(price);
  608.         for(var i = 0;i<nbrChild;i++){
  609.           if(i==0){
  610.             if(\$('#button-code-promo').is(\"[data-percent]\")){
  611.               var percent = \$('#button-code-promo').attr('data-percent');
  612.               if(\$('#button-code-promo').hasClass('js-calculate-auto')){
  613.                 som = som + (realPrice - realPrice*(parseFloat(percent)/100));
  614.               }else{
  615.                 som= som + realPrice
  616.               }
  617.             }else{
  618.               som= som + realPrice
  619.             }
  620.           }
  621.           if(i==1){
  622.             if(!\$('#button-code-promo').hasClass('js-calculate-auto')){
  623.               som = som + (realPrice - realPrice*0.2);
  624.             }else{
  625.               som = som + (realPrice - realPrice*0.35);
  626.             }
  627.           }
  628.           if(2<=i){
  629.             if(!\$('#button-code-promo').hasClass('js-calculate-auto')){
  630.               som = som + (realPrice - realPrice*0.3);
  631.             }else{
  632.               som = som + (realPrice - realPrice*0.45);
  633.             }
  634.           }
  635.         }
  636.         \$('#som-toto').text('').text((som.toFixed(2)).replaceAll('.',',')+' €');
  637.         \$('#som-toto').attr('data-som',som.toFixed(2))
  638.         \$('.total-price').text(' / '+period);
  639.       }
  640.     }
  641.     \$('#nbr-child').change(function(){
  642.       var val = \$(this).val();
  643.       calculPrice();
  644.       if(\$('.form-next-step-2').find('input[name=\"child\"]').length==0){
  645.         \$('.form-next-step-2').append('<input type=\"hidden\" name=\"child\" value=\"'+val+'\"/>')
  646.       }else{
  647.         \$('.form-next-step-2').find('input[name=\"child\"]').val(val);
  648.       }
  649.     })
  650.     var percent = 0;
  651.     var coupon
  652.     \$('#button-code-promo').click(function(){
  653.       if (\$('input[name=\"price\"]:checked').length==1){
  654.         var priceId  = \$('input[name=\"price\"]:checked').attr('data-id');
  655.         var self = \$(this);
  656.         \$(this).prev().removeClass('is-invalid');
  657.         coupon = \$(this).prev().val();
  658.         self.parent().parent().find('.invalid-feedback').text('')
  659.         \$.ajax({
  660.           url:\"";
  661.         // line 415
  662.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("valid_coupon");
  663.         yield "\",
  664.           data:\"coupon=\"+coupon,
  665.           success:function(elem){
  666.             var verif= true;
  667.             self.parent().find('input').val('');
  668.             if(elem.success){
  669.               if(elem.data.allowOffer.length>0 && !elem.data.allowOffer.includes(parseInt(priceId))){
  670.                 verif = false;
  671.               }
  672.               if(verif){
  673.                 if(\$('.form-next-step-2').find('input[name=\"discount\"]').length==0){
  674.                   \$('.form-next-step-2').append('<input type=\"hidden\" name=\"discount\" value=\"'+elem.data.code+'\"/>')
  675.                 }else{
  676.                   \$('.form-next-step-2').find('input[name=\"discount\"]').val(elem.data.code);
  677.                 }
  678.                 percent = elem.data.percent;
  679.                 self.attr('data-percent',percent);
  680.                 //\$('#text-percent').text('').text('reduction de '+percent+'%')
  681.                 \$('.remise-appliquee').text('').text('Promotion appliquée : '+elem.data.description);
  682.                 self.addClass('js-calculate-auto')
  683.                 calculPrice();
  684.               }
  685.             }
  686.             if(!elem.success || !verif){
  687.               self.parents('.input-group').parent().find('.invalid-feedback').text('').text('Ce code promo est invalide !');
  688.               if(!self.parents('.input-group').find('input').hasClass('is-invalid')){
  689.                 self.parents('.input-group').find('input').addClass('is-invalid');
  690.               }
  691.             }
  692.           }
  693.         })
  694.       }else{
  695.         alert('Veuillez choisir une durée de votre offre')
  696.       }
  697.     })
  698.     \$('input[name=\"price\"]').change(function(){
  699.       if(\$(this).is(':checked')){
  700.         var price = parseFloat(\$(this).attr('data-price'));
  701.         var period = \$(this).attr('data-period');
  702.         var offer = \$(this).val();
  703.         var month = \$(this).attr('data-month');
  704.         if(\$(this).hasClass('js-auto-discount')){
  705.           var coupon = \$(this).attr('data-discount');
  706.           \$('.u-spinner').addClass('open')
  707.           \$.ajax({
  708.             url:\"";
  709.         // line 473
  710.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("valid_coupon");
  711.         yield "\",
  712.             data:\"coupon=\"+coupon,
  713.             success:function(elem){
  714.               if(elem.success){
  715.                 //\$('#tr-code').removeClass('d-none')
  716.                 if(\$('.form-next-step-2').find('input[name=\"discount\"]').length==0){
  717.                   \$('.form-next-step-2').append('<input type=\"hidden\" name=\"discount\" value=\"'+elem.data.code+'\"/>')
  718.                 }else{
  719.                   \$('.form-next-step-2').find('input[name=\"discount\"]').val(elem.data.code);
  720.                 }
  721.                 percent = elem.data.percent;
  722.                 \$('#button-code-promo').attr('data-percent',percent);
  723.                 if(!\$('#button-code-promo').hasClass('js-calculate-auto')){
  724.                   \$('#button-code-promo').addClass('js-calculate-auto')
  725.                 }
  726.                 // self.attr('data-percent',percent);
  727.                 //\$('#text-percent').text('').text('reduction de '+percent+'%')
  728.                 \$('.remise-appliquee').text('').text('Promotion appliquée : '+elem.data.description);
  729.                 calculPrice();
  730.                 \$('.u-spinner').removeClass('open')
  731.               }
  732.             }
  733.           })
  734.         }else{
  735.           \$('#button-code-promo').attr('data-percent',0);
  736.           if(\$('.form-next-step-2').find('input[name=\"discount\"]').length==1){
  737.             \$('.form-next-step-2').find('input[name=\"discount\"]').remove()
  738.           }
  739.           //\$('#text-percent').text('')
  740.           \$('.remise-appliquee').text('');
  741.           calculPrice()
  742.         }
  743.         if(\$('.form-next-step-2').find('input[name=\"offer\"]').length==0){
  744.           \$('.form-next-step-2').append('<input type=\"hidden\" name=\"offer\" value=\"'+offer+'\"/>')
  745.         }else{
  746.           \$('.form-next-step-2').find('input[name=\"offer\"]').val(offer);
  747.         }
  748.         // \$('#text-toto-offer-period').removeClass('d-none').addClass('d-block')
  749.         //  \$('#toto-offer-period').text(period.toLowerCase())
  750.       }
  751.     })
  752.     \$('input[name=\"price\"]').change()
  753.     \$('.btn-form').click(function(){
  754.       if(\$('.form-next-step-2').find('input[name=\"offer\"]').length==0){
  755.       }else{
  756.         fbq('track', 'AddToCart', {
  757.           content_name: \$('input[name=\"price\"]:checked').data('title'),
  758.           content_category: '";
  759.         // line 527
  760.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::upper($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source, (isset($context["typeOffer"]) || array_key_exists("typeOffer"$context) ? $context["typeOffer"] : (function () { throw new RuntimeError('Variable "typeOffer" does not exist.'527$this->source); })()), "title", [], "any"falsefalsefalse527)), "html"nulltrue);
  761.         yield "',
  762.           content_ids: [\$('input[name=\"price\"]:checked').val()],
  763.           content_type: 'product',
  764.           value: \$('#som-toto').data('som'),
  765.           currency: 'EUR'
  766.         });
  767.         \$('.form-next-step-2').submit();
  768.       }
  769.     })
  770.     ";
  771.         // line 536
  772.         if ((($tmp =  !(isset($context["getPrice"]) || array_key_exists("getPrice"$context) ? $context["getPrice"] : (function () { throw new RuntimeError('Variable "getPrice" does not exist.'536$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  773.             // line 537
  774.             yield "    \$('.show-mentor #p-1').click();
  775.     ";
  776.         }
  777.         // line 539
  778.         yield "
  779.   })
  780. </script>
  781. </body>
  782. ";
  783.         
  784.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  785.         
  786.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  787.         yield from [];
  788.     }
  789.     // line 33
  790.     /**
  791.      * @return iterable<null|scalar|\Stringable>
  792.      */
  793.     public function block_stylesheets(array $context, array $blocks = []): iterable
  794.     {
  795.         $macros $this->macros;
  796.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  797.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheets"));
  798.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  799.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""stylesheets"));
  800.         // line 34
  801.         yield "    ";
  802.         yield $this->extensions['Symfony\WebpackEncoreBundle\Twig\EntryFilesTwigExtension']->renderWebpackLinkTags("tunnel");
  803.         yield "
  804.   ";
  805.         
  806.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  807.         
  808.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  809.         yield from [];
  810.     }
  811.     // line 336
  812.     /**
  813.      * @return iterable<null|scalar|\Stringable>
  814.      */
  815.     public function block_javascripts(array $context, array $blocks = []): iterable
  816.     {
  817.         $macros $this->macros;
  818.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  819.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  820.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  821.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""javascripts"));
  822.         // line 337
  823.         yield "    ";
  824.         yield $this->extensions['Symfony\WebpackEncoreBundle\Twig\EntryFilesTwigExtension']->renderWebpackScriptTags("tunnel");
  825.         yield "
  826.   ";
  827.         
  828.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  829.         
  830.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  831.         yield from [];
  832.     }
  833.     /**
  834.      * @codeCoverageIgnore
  835.      */
  836.     public function getTemplateName(): string
  837.     {
  838.         return "front/tunnel/step1.html.twig";
  839.     }
  840.     /**
  841.      * @codeCoverageIgnore
  842.      */
  843.     public function isTraitable(): bool
  844.     {
  845.         return false;
  846.     }
  847.     /**
  848.      * @codeCoverageIgnore
  849.      */
  850.     public function getDebugInfo(): array
  851.     {
  852.         return array (  903 => 337,  890 => 336,  876 => 34,  863 => 33,  848 => 539,  844 => 537,  842 => 536,  830 => 527,  773 => 473,  712 => 415,  634 => 339,  632 => 336,  603 => 318,  575 => 292,  570 => 289,  564 => 286,  560 => 284,  558 => 283,  543 => 270,  537 => 268,  535 => 267,  529 => 264,  518 => 255,  509 => 248,  500 => 245,  495 => 243,  492 => 242,  488 => 241,  477 => 233,  465 => 223,  456 => 220,  451 => 218,  448 => 217,  444 => 216,  439 => 214,  434 => 211,  431 => 210,  428 => 202,  425 => 201,  410 => 199,  403 => 194,  400 => 193,  376 => 188,  367 => 184,  363 => 183,  359 => 182,  341 => 181,  331 => 178,  328 => 177,  308 => 172,  301 => 168,  297 => 167,  293 => 166,  275 => 165,  271 => 163,  265 => 161,  262 => 160,  260 => 159,  252 => 158,  249 => 157,  231 => 156,  227 => 154,  204 => 133,  202 => 132,  192 => 127,  188 => 125,  180 => 119,  178 => 118,  129 => 72,  91 => 36,  89 => 33,  72 => 18,  58 => 6,  56 => 5,  50 => 1,);
  853.     }
  854.     public function getSourceContext(): Source
  855.     {
  856.         return new Source("<!doctype html>
  857. <html lang=\"fr\">
  858. <head>
  859.   {% if site_mode is defined and site_mode == 'prod' %}
  860.     <!-- Google Tag Manager -->
  861.     <!-- Google tag (gtag.js) -->
  862.     <!-- Google Tag Manager -->
  863.     <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  864.                 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  865.               j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  866.               'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  867.       })(window,document,'script','dataLayer','GTM-P6WW2D7');</script>
  868.     <!-- End Google Tag Manager -->
  869.     <!-- End Google Tag Manager -->
  870.   {% endif %}
  871.   <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">
  872.   <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
  873.   <meta http-equiv=\"Content-Language\" content=\"fr\" />
  874.   <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
  875.   <title>Étape 1</title>
  876.   <!--Favicon-->
  877.   <link rel=\"icon\" type=\"image/png\" href=\"/static/img/tunnel/favicon.png\" />
  878.   <!--Script pour l'accordéon-->
  879.   <script type=\"text/javascript\" src=\"//unpkg.com/alpinejs\" defer></script>
  880.   <!-- TrustBox script -->
  881.   <script type=\"text/javascript\" src=\"//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js\" async></script>
  882.   {% block stylesheets %}
  883.     {{ encore_entry_link_tags('tunnel') }}
  884.   {% endblock %}
  885.   <script>
  886.     !function(f,b,e,v,n,t,s)
  887.     {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  888.             n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  889.       if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  890.       n.queue=[];t=b.createElement(e);t.async=!0;
  891.       t.src=v;s=b.getElementsByTagName(e)[0];
  892.       s.parentNode.insertBefore(t,s)}(window, document,'script',
  893.             'https://connect.facebook.net/en_US/fbevents.js');
  894.     fbq('init', '334520913601498');
  895.   </script>
  896.   <noscript><img height=\"1\" width=\"1\" style=\"display:none\"
  897.                  src=\"https://www.facebook.com/tr?id=334520913601498&ev=PageView&noscript=1\"
  898.     /></noscript>
  899. </head>
  900. <body class=\"font-poppins\">
  901.  <!-- Google Tag Manager (noscript) -->
  902. <noscript><iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-P6WW2D7\"
  903.                   height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\"></iframe></noscript>
  904. <!-- End Google Tag Manager (noscript) --> ⁠
  905.   <!-- En Tête -->
  906.   <header class=\"flex px-4 py-4 justify-center lg:justify-between flex-wrap items-center\">
  907.     <div class=\"flex\">
  908.       <a href=\"https://lesbonsprofs.com\" target=\"_blank\" aria-label=\"Les Bons Profs\"><img src=\"/static/img/tunnel/les-bons-profs-logo.svg\" alt=\"Les bons profs - Paiement\" /></a>
  909.     </div>
  910.     <div class=\"flex items-center mt-2 sm:mt-0\">
  911.       <div class=\"text-bleu font-bold sm:mr-2 xl:mr-5 text-xs sm:text-[15px] xl:text[20px] text-center sm:text-left\">Besoin d'aide ? Sabrina vous répond au 01 86 95 72 01 du lundi au jeudi de 9h à 17h.</div>
  912.     </div>
  913.   </header>
  914.   <!-- Titre -->
  915.   <section class=\"py-4 text-center bg-bleu\">
  916.     <h1 class=\"font-muller font-bold text-[45px] sm:text-[90px] text-white\">
  917.       Offre {{ typeOffer.title }}
  918.     </h1>
  919.     <h2 class=\"font-muller text-jaunefonce text-[25px] sm:text-[40px]\">
  920.       Sélectionnez votre durée
  921.     </h2>
  922.   </section>
  923.   <!-- Timeline -->
  924.   <section class=\"flex justify-center sm:pt-16\">
  925.     <ol
  926.         class=\"border-s border-bleu border-opacity-30 md:flex md:justify-evenly md:gap-6 md:border-s-0 md:border-t w-9/12\">
  927.       <!--First item-->
  928.       <li>
  929.         <div class=\"flex items-center pt-3 md:block md:pt-0\">
  930.           <div
  931.               class=\"md:mx-auto h-[20px] w-[20px] rounded-full bg-white border-bleu border-8 md:-mt-[10px] -ms-[10px] me-3\"></div>
  932.           <p class=\"sm:mt-2 text-sm xl:text-base text-bleu font-bold\">
  933.             1. Choisissez votre offre
  934.           </p>
  935.         </div>
  936.       </li>
  937.       <!--Second item-->
  938.       <li>
  939.         <div class=\"flex items-center pt-3 md:block md:pt-0\">
  940.           <div
  941.               class=\"md:mx-auto h-[9px] w-[9px] rounded-full bg-bleu opacity-50 md:-mt-[5px] -ms-[5px] me-3\"></div>
  942.           <p class=\"sm:mt-2 ml-1.5 sm:ml-0 text-sm xl:text-base text-bleu opacity-50\">
  943.             2. Accédez à votre compte
  944.           </p>
  945.         </div>
  946.       </li>
  947.       <!--Third item-->
  948.       <li>
  949.         <div class=\"flex items-center pt-3 md:block md:pt-0\">
  950.           <div
  951.               class=\"md:mx-auto h-[9px] w-[9px] rounded-full bg-bleu opacity-50 md:-mt-[5px] -ms-[5px] me-3\"></div>
  952.           <p class=\"sm:mt-2 ml-1.5 sm:ml-0 text-sm xl:text-base text-bleu opacity-50\">
  953.             3. Procédez au paiement
  954.           </p>
  955.         </div>
  956.       </li>
  957.     </ol>
  958.   </section>
  959. {% if mode_free %}
  960.   <section class=\"flex justify-center py-8 sm:py-16\">
  961.     <div class=\"text-center w-11/12 lg:w-9/12 bg-jaunefonce text-bleu py-2 px-4 rounded-full sm:text-xl\">
  962.       Vous ne serez pas débité avant la fin de votre essai de 7 jours
  963.     </div>
  964.   </section>
  965. {% endif %}
  966.   <!--Offres-->
  967.   <section class=\"flex justify-center{% if mode_tunnel %} pt-8 sm:pt-16{% endif %}\">
  968.     <div class=\"flex flex-col lg:flex-row justify-between w-11/12 xl:w-9/12\">
  969.       <!--Colonne gauche-->
  970.       <div class=\"flex flex-col lg:w-6/12\">
  971.         {% if not mode_tunnel %}
  972.         <div>
  973.           <label for=\"enfants\" class=\"font-bold tracking-tight sm:tracking-normal\">
  974.             Combien d’enfants souhaitez-vous inscrire&nbsp;?
  975.           </label>
  976.           <div class=\"flex items-center mt-2\">
  977.             <div>
  978.               <select id=\"nbr-child\" name=\"enfants\" class=\"block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 sm:max-w-xs sm:text-sm/6\">
  979.                 <option value=\"1\">1 enfant</option>
  980.                 <option value=\"2\">2 enfants</option>
  981.                 <option value=\"3\">3 enfants</option>
  982.                 <option value=\"4\">4 enfants</option>
  983.                 <option value=\"5\">5 enfants</option>
  984.               </select>
  985.             </div>
  986.             <div class=\"italic text-xs text-gray-500 ml-5\">
  987.               <p>-20% pour le 2<sup>ème</sup> enfant</p>
  988.               <p>-30% pour le 3<sup>ème</sup> enfant</p>
  989.             </div>
  990.           </div>
  991.         </div>
  992.           {% else %}
  993.           <input type=\"hidden\" name=\"enfants\" value=\"1\" id=\"nbr-child\">
  994. {% endif %}
  995.         {% for row in listOffer %}
  996.         <!--Carte 24 mois-->
  997.         <div class=\"{% if loop.first %}sm:flex{% else %}flex{% endif%} justify-between border-gray-400 border-solid border-4 rounded-md mt-6\">
  998.           {% if row.discount is null or (row.discountDate is not null and row.discountDate|date('U') < \"now\"|date('U') ) %}
  999.             <div>{% if row.monthValid>1 %}
  1000.               <span class=\"text-xs bg-red-600 text-white absolute rounded px-1 py-0.5\">{{ (((((row.price/row.monthValid) - priceMark)/priceMark) * 100)|number_format(0, ',', '.')|abs) }}% de réduction</span>
  1001.               {% endif %}
  1002.             <div class=\"flex flex-col pt-5 pb-5 pl-5\">
  1003.               <div class=\"flex items-center gap-x-3\">
  1004.                 <input id=\"p-{{ loop.index }}\" name=\"price\" value=\"{{ row.slug }}\" type=\"radio\" class=\"h-4 w-4 border-gray-300\" data-id=\"{{ row.id }}\" data-title=\"{{ row.title }}\" data-price=\"{{ row.price }}\" data-month=\"{{ row.monthValid }}\" data-period=\"{% if row.monthValid>1 %}{{ row.monthValid }}{% endif %} mois\">
  1005.                 <label for=\"p-{{ loop.index }}\" class=\"block font-medium text-gray-900\">
  1006.                   <span class=\"font-bold text-xl mr-5\">{{ row.monthValid }} mois</span><br class=\"sm:hidden\"/>
  1007.                   <span class=\"font-bold\">{{ (row.price/row.monthValid)|round(2, 'floor')|number_format(2, ',', '.') }} € / mois</span>
  1008.                 </label>
  1009.               </div>
  1010.               <div class=\"mt-5 text-xs text-gray-500\">
  1011.                 {% if row.monthValid>1 %}En un paiement de {{ row.price|number_format(2, ',', '.') }} €.{% endif%} {% if row.monthValid<13 %}Renoulevé tous les {% if row.monthValid>1 %}{{ row.monthValid }}{% endif %}  mois.{% endif %} Annulable à tout moment
  1012.               </div>
  1013.             </div>
  1014.           </div>
  1015.           {% else %}
  1016.             <div>
  1017.               <span class=\"text-xs bg-red-600 text-white absolute rounded px-1 py-0.5\">{% if row.percentDiscount is null %}{{ (((((row.getAmount()/row.monthValid) - priceMark)/priceMark) * 100)|number_format(0, ',', '.')|abs) }}{% else %}{{ row.percentDiscount }}{% endif %}% de réduction</span>
  1018.               <div class=\"flex flex-col pt-10 pb-5 pl-5\">
  1019.                 <div class=\"flex items-center gap-x-3\">
  1020.                   <input id=\"p-{{ loop.index }}\" name=\"price\" value=\"{{ row.slug }}\" type=\"radio\" class=\"h-4 w-4 border-gray-300 js-auto-discount\" data-title=\"{{ row.title }}\" data-discount=\"{{ row.discount.codePromo }}\" data-price=\"{{ row.price }}\" data-month=\"{{ row.monthValid }}\" data-period=\"{% if row.monthValid>1 %}{{ row.monthValid }}{% endif %} mois\">
  1021.                   <label for=\"p-{{ loop.index }}\" class=\"block font-medium text-gray-900\">
  1022.                     <span class=\"font-bold text-xl mr-5\">{{ row.monthValid }} mois</span><br class=\"sm:hidden\"/>
  1023.                     <span class=\"font-bold\">{{ (row.getAmount()/row.monthValid)|round(2, 'floor')|number_format(2, ',', '.') }} € / mois <span class=\"line-through text-gray-500\">( au lieu de {{ priceMark|number_format(2, ',', '.') }}€)</span></span>
  1024.                   </label>
  1025.                 </div>
  1026.                 <div class=\"mt-5 text-xs text-gray-500\">
  1027.                   {% if row.monthValid>1 %}En un paiement de {{ row.getAmount()|number_format(2, ',', '.') }} € (<span class=\"text-decoration-line-through\" style=\"text-decoration: line-through\">{{ row.oldPrice }} €</span>) avec le code {{ row.discount.codePromo|upper }}.{% endif%} {% if row.monthValid<13 %}Renoulevé tous les {% if row.monthValid>1 %}{{ row.monthValid }}{% endif %}  mois.{% endif %} Annulable à tout moment
  1028.                 </div>
  1029.               </div>
  1030.             </div>
  1031.           {% endif %}
  1032.           {% if loop.first %}
  1033.           <div class=\"flex flex-col justify-center bg-jaunefonce sm:w-5/12 sm:p-5 p-3\">
  1034.             <div class=\"flex flex-wrap font-bold items-center justify-center sm:justify-start\">Coup de<img src=\"/static/img/tunnel/coeur-rouge.png\" alt=\"Coup de coeur des parents\" class=\"px-1 sm:px-2 w-5 h-4 sm:w-auto\" />des parents</div>
  1035.             <div class=\"mt-5 text-xs text-center sm:text-justify\">Inclus les annales du Bac et du Brevet corrigées en vidéo</div>
  1036.           </div>
  1037.           {% endif %}
  1038.         </div>
  1039.         {% endfor %}
  1040.         {% set titre_faq  = \"Comment fonctionne l’essai gratuit de 7&nbsp;jours&nbsp;:\" %}
  1041.         {% set faq = [
  1042.           {
  1043.             \"titre\":\"Pendant la période d’essai\",
  1044.             \"texte\":\"Je teste tous les contenus compris dans mon abonnement, les stages de révision pendant les vacances et les boost matière.\"
  1045.           },{
  1046.             \"titre\":\"Comment arrêter l’essai gratuit\",
  1047.             \"texte\": \"Avant la fin des 7 jours d’essai, rendez-vous dans la rubrique “gestion du compte” de votre espace parents et cliquez sur “mettre fin à la période d’essai”.\"
  1048.         }]  %}
  1049.         {% if mode_free %}
  1050.         <!--L'essai gratuit pour PC-->
  1051.         <div class=\"mt-12 text-gray-500 hidden lg:block text-justify\">
  1052.           <p class=\"font-bold\">
  1053.               {{ titre_faq|raw }}
  1054.           </p>
  1055.             {% for row in faq %}
  1056.               <p class=\"mt-5\">
  1057.                 <span class=\"font-bold\">{{ row.titre }}</span>
  1058.                 <br />
  1059.                 {{ row.texte }}
  1060.               </p>
  1061.             {% endfor %}
  1062.         </div>
  1063.         <!--Accordéon pour mobile-->
  1064.         <div class=\"mt-12 py-2 px-3 border-gray-400 border-solid border rounded-md lg:hidden\" x-data=\"{selected: null}\">
  1065.           <div>
  1066.             <div>
  1067.               <div class=\"w-full flex justify-between items-center cursor-pointer\"
  1068.                    @click=\"selected !== 1 ? selected = 1 : selected = null\"
  1069.               >
  1070.                 <h4 class=\"font-bold text-gray-500\">{{ titre_faq|raw }}</h4>
  1071.                 <div class=\"pl-2\">
  1072.                   <img class=\"transition-all ease-in-out duration-700 min-w-4\" :class=\"selected === 1 ? 'rotate-180' : ''\" alt=\"chevron\" src=\"/static/img/tunnel/chevron.svg\" />
  1073.                 </div>
  1074.               </div>
  1075.               <div class=\"relative overflow-hidden max-h-0 transition-all ease-in-out duration-700\" x-ref=\"container1\" :style=\"selected === 1 ? 'max-height: ' + \$refs.container1.scrollHeight + 'px' : ''\">
  1076.                 <div class=\"pt-4 flex flex-col space-y-3\">
  1077.                   <div class=\"text-gray-500 text-justify\">
  1078.                     {% for row in faq %}
  1079.                       <p class=\"mt-5\">
  1080.                         <span class=\"font-bold\">{{ row.titre }}</span>
  1081.                         <br />
  1082.                         {{ row.texte }}
  1083.                       </p>
  1084.                     {% endfor %}
  1085.                   </div>
  1086.                 </div>
  1087.               </div>
  1088.             </div>
  1089.           </div>
  1090.         </div>
  1091. {% endif %}
  1092.       </div>
  1093.       <!--Colonne droite-->
  1094.       <div class=\"flex flex-col lg:w-5/12 my-16 lg:mt-0\">
  1095.         <!--Encadré bleu-->
  1096.         <div class=\"flex flex-col bg-bleu rounded-2xl\">
  1097.           <div class=\"text-white font-bold text-center text-2xl py-5\">Ce que comprend l'offre {{ typeOffer.title }}</div>
  1098.           <div class=\"flex flex-col bg-white m-2 rounded-2xl p-5\">
  1099.            <div>
  1100.              {% if typeOffer is not null %}
  1101.                {{ typeOffer.textPaid|raw }}
  1102.              {% endif %}
  1103.            </div>
  1104.             <label for=\"promo\" class=\"mt-8 sm:mt-16\">Vous disposez d'un code promotionel ? Indiquez-le ici :</label>
  1105.             <div class=\"flex mt-5\">
  1106.               <input type=\"text\" name=\"promo\" id=\"promo\" autocomplete=\"username\" class=\"flex-1 border-0 py-1.5 pl-5 placeholder:text-gray-400 placeholder:text-[3.5vw] sm:placeholder:text-[16px] rounded-l-md shadow-sm ring-1 ring-inset ring-gray-300 w-[2vw]\" placeholder=\"Entrez le code promo\">
  1107.               <button type=\"submit\" class=\"bg-jaunefonce px-3 py-2 text-xl font-bold text-white shadow-sm hover:bg-rouge rounded-r-3xl\" id=\"button-code-promo\">Valider</button>
  1108.             </div>
  1109.             <div class=\"\" id=\"tr-code\">
  1110.               <div style=\"padding: 2%;\" class=\"mt-2\">
  1111.                 <div class=\"remise-appliquee font-bold\"></div>
  1112.                 <div id=\"text-percent\"></div>
  1113.               </div>
  1114.             </div>
  1115.             <div class=\"grid grid-cols-[repeat(2,minmax(auto,auto))] gap-4 border-jaunefonce border-solid border-8 rounded-3xl mt-8 sm:mt-16 p-6 items-center\">
  1116.               {% if mode_free %}
  1117.               <span>Montant dû aujourd'hui</span>
  1118.               <span>0 €</span>
  1119.               <span>Montant dû {{ \"now\"|date_modify(\"+8 day\")|format_datetime(locale='fr',pattern=\"dd MMMM YYYY\") }}</span>
  1120.               <span id=\"som-toto\"></span>
  1121.               {% else %}
  1122.                 <span>Montant dû aujourd'hui</span>
  1123.                 <span id=\"som-toto\"></span>
  1124.               {% endif %}
  1125.             </div>
  1126.           </div>
  1127.         </div>
  1128.         <!--Bouton-->
  1129.         <div class=\"flex justify-center mt-10 cursor-pointer\">
  1130.           <button type=\"submit\" class=\"bg-jaunefonce btn-form text-bleu rounded-3xl text-3xl font-muller py-3 px-20\">OK j'essaie</button>
  1131.           <img src=\"/static/img/tunnel/clic-hand.png\" alt=\"Essayer l'offre\" class=\"absolute pl-60 pt-5 btn-form\" />
  1132.         </div>
  1133.         <!-- TrustBox widget - List pour PC-->
  1134.         <div class=\"trustpilot-widget mt-20 hidden lg:block\" data-locale=\"fr-FR\" data-template-id=\"539ad60defb9600b94d7df2c\" data-businessunit-id=\"5c9c8063164d370001824ce4\" data-style-height=\"500px\" data-style-width=\"100%\" data-stars=\"4,5\" data-review-languages=\"fr\">
  1135.           <a href=\"https://fr.trustpilot.com/review/lesbonsprofs.com\" target=\"_blank\" rel=\"noopener\">Trustpilot</a>
  1136.         </div>
  1137.         <!-- TrustBox widget - Mini pour mobiles-->
  1138.         <div class=\"trustpilot-widget lg:hidden mt-16\" data-locale=\"fr-FR\" data-template-id=\"53aa8807dec7e10d38f59f32\" data-businessunit-id=\"5c9c8063164d370001824ce4\" data-style-height=\"150px\" data-style-width=\"100%\">
  1139.           <a href=\"https://fr.trustpilot.com/review/lesbonsprofs.com\" target=\"_blank\" rel=\"noopener\">Trustpilot</a>
  1140.         </div>
  1141.       </div>
  1142.     </div>
  1143.   </section>
  1144.   <form class=\"form-next-step-2\" action=\"{{ path('choix-formule-step') }}?offre={{ getOffer }}\" method=\"post\" id=\"parents_registration_first_step_{% if getOffer == \"essentielle\" %}essentielle{% else %}assistancevisio{% endif %}\">
  1145.   </form>
  1146.   <div class=\"u-spinner h-100 vh-100\">
  1147.     <svg class=\"svg-icon svg-loader\" version=\"1.1\" id=\"L4\" xmlns=\"http://www.w3.org/2000/svg\"
  1148.          xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 50 100\" enable-background=\"new 0 0 0 0\"
  1149.          xml:space=\"preserve\">
  1150.         <circle cx=\"0\" cy=\"50\" r=\"6\">
  1151.           <animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.1\"></animate>
  1152.         </circle>
  1153.       <circle cx=\"20\" cy=\"50\" r=\"6\">
  1154.         <animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.2\"></animate>
  1155.       </circle>
  1156.       <circle cx=\"41\" cy=\"50\" r=\"6\">
  1157.         <animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.3\"></animate>
  1158.       </circle>
  1159.     </svg>
  1160.   </div>
  1161.   {% block javascripts %}
  1162.     {{ encore_entry_script_tags('tunnel') }}
  1163.   {% endblock %}
  1164. <script type=\"text/javascript\">
  1165.   \$(document).ready(function(){
  1166.     function calculPrice(){
  1167.       var nbrChild = parseInt(\$('#nbr-child').val());
  1168.       var som = 0;
  1169.       if(\$('input[name=\"price\"]:checked').length==1){
  1170.         var period = \$('input[name=\"price\"]:checked').attr('data-period');
  1171.         var month  = \$('input[name=\"price\"]:checked').attr('data-month');
  1172.         var price  = \$('input[name=\"price\"]:checked').attr('data-price');
  1173.         var realPrice = parseFloat(price);
  1174.         for(var i = 0;i<nbrChild;i++){
  1175.           if(i==0){
  1176.             if(\$('#button-code-promo').is(\"[data-percent]\")){
  1177.               var percent = \$('#button-code-promo').attr('data-percent');
  1178.               if(\$('#button-code-promo').hasClass('js-calculate-auto')){
  1179.                 som = som + (realPrice - realPrice*(parseFloat(percent)/100));
  1180.               }else{
  1181.                 som= som + realPrice
  1182.               }
  1183.             }else{
  1184.               som= som + realPrice
  1185.             }
  1186.           }
  1187.           if(i==1){
  1188.             if(!\$('#button-code-promo').hasClass('js-calculate-auto')){
  1189.               som = som + (realPrice - realPrice*0.2);
  1190.             }else{
  1191.               som = som + (realPrice - realPrice*0.35);
  1192.             }
  1193.           }
  1194.           if(2<=i){
  1195.             if(!\$('#button-code-promo').hasClass('js-calculate-auto')){
  1196.               som = som + (realPrice - realPrice*0.3);
  1197.             }else{
  1198.               som = som + (realPrice - realPrice*0.45);
  1199.             }
  1200.           }
  1201.         }
  1202.         \$('#som-toto').text('').text((som.toFixed(2)).replaceAll('.',',')+' €');
  1203.         \$('#som-toto').attr('data-som',som.toFixed(2))
  1204.         \$('.total-price').text(' / '+period);
  1205.       }
  1206.     }
  1207.     \$('#nbr-child').change(function(){
  1208.       var val = \$(this).val();
  1209.       calculPrice();
  1210.       if(\$('.form-next-step-2').find('input[name=\"child\"]').length==0){
  1211.         \$('.form-next-step-2').append('<input type=\"hidden\" name=\"child\" value=\"'+val+'\"/>')
  1212.       }else{
  1213.         \$('.form-next-step-2').find('input[name=\"child\"]').val(val);
  1214.       }
  1215.     })
  1216.     var percent = 0;
  1217.     var coupon
  1218.     \$('#button-code-promo').click(function(){
  1219.       if (\$('input[name=\"price\"]:checked').length==1){
  1220.         var priceId  = \$('input[name=\"price\"]:checked').attr('data-id');
  1221.         var self = \$(this);
  1222.         \$(this).prev().removeClass('is-invalid');
  1223.         coupon = \$(this).prev().val();
  1224.         self.parent().parent().find('.invalid-feedback').text('')
  1225.         \$.ajax({
  1226.           url:\"{{ path('valid_coupon') }}\",
  1227.           data:\"coupon=\"+coupon,
  1228.           success:function(elem){
  1229.             var verif= true;
  1230.             self.parent().find('input').val('');
  1231.             if(elem.success){
  1232.               if(elem.data.allowOffer.length>0 && !elem.data.allowOffer.includes(parseInt(priceId))){
  1233.                 verif = false;
  1234.               }
  1235.               if(verif){
  1236.                 if(\$('.form-next-step-2').find('input[name=\"discount\"]').length==0){
  1237.                   \$('.form-next-step-2').append('<input type=\"hidden\" name=\"discount\" value=\"'+elem.data.code+'\"/>')
  1238.                 }else{
  1239.                   \$('.form-next-step-2').find('input[name=\"discount\"]').val(elem.data.code);
  1240.                 }
  1241.                 percent = elem.data.percent;
  1242.                 self.attr('data-percent',percent);
  1243.                 //\$('#text-percent').text('').text('reduction de '+percent+'%')
  1244.                 \$('.remise-appliquee').text('').text('Promotion appliquée : '+elem.data.description);
  1245.                 self.addClass('js-calculate-auto')
  1246.                 calculPrice();
  1247.               }
  1248.             }
  1249.             if(!elem.success || !verif){
  1250.               self.parents('.input-group').parent().find('.invalid-feedback').text('').text('Ce code promo est invalide !');
  1251.               if(!self.parents('.input-group').find('input').hasClass('is-invalid')){
  1252.                 self.parents('.input-group').find('input').addClass('is-invalid');
  1253.               }
  1254.             }
  1255.           }
  1256.         })
  1257.       }else{
  1258.         alert('Veuillez choisir une durée de votre offre')
  1259.       }
  1260.     })
  1261.     \$('input[name=\"price\"]').change(function(){
  1262.       if(\$(this).is(':checked')){
  1263.         var price = parseFloat(\$(this).attr('data-price'));
  1264.         var period = \$(this).attr('data-period');
  1265.         var offer = \$(this).val();
  1266.         var month = \$(this).attr('data-month');
  1267.         if(\$(this).hasClass('js-auto-discount')){
  1268.           var coupon = \$(this).attr('data-discount');
  1269.           \$('.u-spinner').addClass('open')
  1270.           \$.ajax({
  1271.             url:\"{{ path('valid_coupon') }}\",
  1272.             data:\"coupon=\"+coupon,
  1273.             success:function(elem){
  1274.               if(elem.success){
  1275.                 //\$('#tr-code').removeClass('d-none')
  1276.                 if(\$('.form-next-step-2').find('input[name=\"discount\"]').length==0){
  1277.                   \$('.form-next-step-2').append('<input type=\"hidden\" name=\"discount\" value=\"'+elem.data.code+'\"/>')
  1278.                 }else{
  1279.                   \$('.form-next-step-2').find('input[name=\"discount\"]').val(elem.data.code);
  1280.                 }
  1281.                 percent = elem.data.percent;
  1282.                 \$('#button-code-promo').attr('data-percent',percent);
  1283.                 if(!\$('#button-code-promo').hasClass('js-calculate-auto')){
  1284.                   \$('#button-code-promo').addClass('js-calculate-auto')
  1285.                 }
  1286.                 // self.attr('data-percent',percent);
  1287.                 //\$('#text-percent').text('').text('reduction de '+percent+'%')
  1288.                 \$('.remise-appliquee').text('').text('Promotion appliquée : '+elem.data.description);
  1289.                 calculPrice();
  1290.                 \$('.u-spinner').removeClass('open')
  1291.               }
  1292.             }
  1293.           })
  1294.         }else{
  1295.           \$('#button-code-promo').attr('data-percent',0);
  1296.           if(\$('.form-next-step-2').find('input[name=\"discount\"]').length==1){
  1297.             \$('.form-next-step-2').find('input[name=\"discount\"]').remove()
  1298.           }
  1299.           //\$('#text-percent').text('')
  1300.           \$('.remise-appliquee').text('');
  1301.           calculPrice()
  1302.         }
  1303.         if(\$('.form-next-step-2').find('input[name=\"offer\"]').length==0){
  1304.           \$('.form-next-step-2').append('<input type=\"hidden\" name=\"offer\" value=\"'+offer+'\"/>')
  1305.         }else{
  1306.           \$('.form-next-step-2').find('input[name=\"offer\"]').val(offer);
  1307.         }
  1308.         // \$('#text-toto-offer-period').removeClass('d-none').addClass('d-block')
  1309.         //  \$('#toto-offer-period').text(period.toLowerCase())
  1310.       }
  1311.     })
  1312.     \$('input[name=\"price\"]').change()
  1313.     \$('.btn-form').click(function(){
  1314.       if(\$('.form-next-step-2').find('input[name=\"offer\"]').length==0){
  1315.       }else{
  1316.         fbq('track', 'AddToCart', {
  1317.           content_name: \$('input[name=\"price\"]:checked').data('title'),
  1318.           content_category: '{{ typeOffer.title|upper }}',
  1319.           content_ids: [\$('input[name=\"price\"]:checked').val()],
  1320.           content_type: 'product',
  1321.           value: \$('#som-toto').data('som'),
  1322.           currency: 'EUR'
  1323.         });
  1324.         \$('.form-next-step-2').submit();
  1325.       }
  1326.     })
  1327.     {% if not getPrice %}
  1328.     \$('.show-mentor #p-1').click();
  1329.     {% endif %}
  1330.   })
  1331. </script>
  1332. </body>
  1333. ""front/tunnel/step1.html.twig""/var/www/dashboard/templates/front/tunnel/step1.html.twig");
  1334.     }
  1335. }