templates/front/product/single.html.twig line 273

Open in your IDE?
  1. {% extends 'base_front.html.twig' %}
  2. {% block meta %}
  3.     {% if notes['globalNote']['count'] > 0 %}
  4.         {% set globalNote = notes['globalNote']['totalNote'] / notes['globalNote']['count'] %}
  5.     {% else %}
  6.         {% set globalNote = 0 %}
  7.     {% endif %}
  8.     <title>Produit
  9.         {{ product.name }}</title>
  10.     <meta name="description" content="Le produit {{ product.name }} de la catégorie {{ product.subCategories.first.name }} {% if globalNote > 0 %}possède une note de {{ globalNote|number_format(1, '.') }}/5 {% else %}à un stock limité à {{ product.quantity }} articles, dépéchez-vous !{% endif %}">
  11.     {% if not product.isActivated %}
  12.         <meta name="robots" content="noindex">
  13.     {% endif %}
  14. {% endblock %}
  15. {% block style %}
  16.     <link href="{{ asset('css/jquery.rateyo.css') }}" rel="stylesheet">
  17.     <link rel="stylesheet" href="{{ asset('css/jquery.datetimepicker.min.css') }}">
  18.     <link rel="preconnect" href="https://fonts.gstatic.com">
  19.     <link href="https://fonts.googleapis.com/css2?family=Mukta&display=swap" rel="stylesheet">
  20.     <style>
  21.         .mfp-fade.mfp-bg {
  22.             opacity: 0;
  23.             -webkit-transition: all 0.15s ease-out;
  24.             -moz-transition: all 0.15s ease-out;
  25.             transition: all 0.15s ease-out;
  26.         }
  27.         .mfp-fade.mfp-bg.mfp-ready {
  28.             opacity: 0.8;
  29.         }
  30.         .mfp-fade.mfp-bg.mfp-removing {
  31.             opacity: 0;
  32.         }
  33.         .mfp-fade.mfp-wrap .mfp-content {
  34.             opacity: 0;
  35.             -webkit-transition: all 0.15s ease-out;
  36.             -moz-transition: all 0.15s ease-out;
  37.             transition: all 0.15s ease-out;
  38.         }
  39.         .mfp-fade.mfp-wrap.mfp-ready .mfp-content {
  40.             opacity: 1;
  41.         }
  42.         .mfp-fade.mfp-wrap.mfp-removing .mfp-content {
  43.             opacity: 0;
  44.         }
  45.         .chat {
  46.             list-style: none;
  47.             margin: 0;
  48.             padding: 0;
  49.         }
  50.         .chat li {
  51.             margin-bottom: 10px;
  52.             padding-bottom: 5px;
  53.             border-bottom: 1px dotted #B3A9A9;
  54.         }
  55.         .chat li.left .chat-body {
  56.             margin-left: 60px;
  57.         }
  58.         .chat li.right .chat-body {
  59.             margin-right: 60px;
  60.         }
  61.         .chat li .chat-body p {
  62.             margin: 0;
  63.             color: #777777;
  64.         }
  65.         .panel .slidedown .glyphicon,
  66.         .chat .glyphicon {
  67.             margin-right: 5px;
  68.         }
  69.         .panel-body {
  70.             height: 250px;
  71.         }
  72.         ::-webkit-scrollbar-track {
  73.             -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  74.             background-color: #F5F5F5;
  75.         }
  76.         ::-webkit-scrollbar {
  77.             width: 12px;
  78.             background-color: #F5F5F5;
  79.         }
  80.         ::-webkit-scrollbar-thumb {
  81.             -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  82.             background-color: #555;
  83.         }
  84.         /** DateTimePicker Style */
  85.         .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
  86.         .xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
  87.         .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box > div > div.xdsoft_current {
  88.             background: #ff4d4d;
  89.             box-shadow: #ff4d4d 1px 3px 0 inset;
  90.             color: #fff;
  91.             font-weight: 700;
  92.         }
  93.         .xdsoft_datetimepicker .xdsoft_calendar td:hover,
  94.         .xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div:hover {
  95.             color: #fff !important;
  96.             background: #ff4d4d !important;
  97.             box-shadow: none !important;
  98.         }
  99.         /*Zoo option*/
  100.         .imgZoomOption {
  101.             position: fixed;
  102.             z-index: 99;
  103.             width: 52rem;
  104.             left: 50%;
  105.             transform: translateX(-50%);
  106.             top: 15px;
  107.             display: none;
  108.             background-color: white;
  109.             height: 95%;
  110.             object-fit: cover;
  111.         }
  112.         .backgroundTrans {
  113.             position: fixed;
  114.             width: 100%;
  115.             height: 100%;
  116.             background-color: #000000ab;
  117.             z-index: 89;
  118.             top: 0;
  119.             display: none;
  120.         }
  121.         #clickoptionImg1, #clickoptionImg2 {
  122.             cursor: pointer;
  123.         }
  124.         .showImgOption {
  125.             position: fixed;
  126.             top: 0;
  127.             left: 50%;
  128.             transform: translateX(-50%);
  129.             z-index: 888;
  130.             width: 50rem;
  131.             height: 100%;
  132.             object-fit: cover;
  133.         }
  134.         .exitZoomOpt {
  135.             position: fixed;
  136.             top: 0;
  137.             right: 10px;
  138.             color: #903ef4;
  139.             display: none;
  140.             z-index: 100;
  141.             border: none;
  142.             background: white;
  143.             font-size: 24px;
  144.             top: 5px;
  145.             cursor: pointer;
  146.             padding: 3px 9px;
  147.             border-radius: 12px;
  148.         }
  149.         {# input quantity option #}
  150.         .inputQtyOpt {
  151.             width: 63px;
  152.             height: 39px;
  153.             padding: 0 5px;
  154.             text-align: center;
  155.             background-color: transparent;
  156.             border: 1px solid #efefef;
  157.         }
  158.         {# Chate #}
  159.         #MyChat {
  160.             right: 20px;
  161.             bottom: 70px;
  162.             z-index: 100;
  163.             cursor: pointer;
  164.             width: 50px;
  165.             height: 50px;
  166.             background-color: #903ef4;
  167.             justify-content: center;
  168.             display: flex;
  169.             padding: 10px;
  170.             border-radius: 50%;
  171.             align-items: center;
  172.         }
  173.         .MyIconChat {
  174.             color: #fff;
  175.             font-size: 24px;
  176.         }
  177.         .collapseMessage {
  178.             position: absolute;
  179.             top: 11px;
  180.             right: 25px;
  181.             background-color: white;
  182.             color: #903ef4;
  183.             padding: 0px 8px;
  184.             border-radius: 50%;
  185.             z-index: 1;
  186.             cursor: pointer;
  187.         }
  188.         #collapseOne {
  189.             border-top-left-radius: 18px;
  190.             border-top-right-radius: 18px;
  191.         }
  192.         .titreSMS {
  193.             padding: 10px 20px;
  194.             background-color: #903ef4;
  195.             border-top-left-radius: 14px;
  196.             border-top-right-radius: 14px;
  197.         }
  198.         .titreSMS h3 {
  199.             color: white;
  200.             font-size: 17px;
  201.         }
  202.         .myradiuss {
  203.             background-color: white;
  204.             border-top-left-radius: 23px;
  205.             border-top-right-radius: 23px;
  206.         }
  207.         {# modadl option #}
  208.         @media screen and (min-width: 800px) {    
  209.             .myWidth {
  210.                 max-width: 800px;
  211.             }
  212.         }
  213.         {# image comment #}
  214.         .cont_img_comment {
  215.             display: flex;
  216.             column-gap: 10px;
  217.         }
  218.         .cont_img_comment img {
  219.             width: 100px;
  220.             height: 100px;
  221.             box-shadow: 1px 1px 5px #0000005c;
  222.             border-radius: 20px;
  223.             object-fit: cover;
  224.         }
  225.         {# choice option #}
  226.         .labold {
  227.             font-weight: 500;
  228.             font-size: 18px;
  229.         }
  230.         .mt9 {
  231.             margin-top: 9px;
  232.         }
  233.         .myPadding {
  234.             padding: 8px 0px;
  235.         }
  236.     </style>
  237. {% endblock %}
  238. {% form_theme formComment _self %}
  239. {% block body %}
  240.     <!-- Modal options groups -->
  241.     <div class="modal fade" id="modalOptionGP" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
  242.         <div class="modal-dialog myWidth" role="document">
  243.             <div class="modal-content">
  244.                 {# <form action=""> #}
  245.                     <div class="modal-header">
  246.                         <h5 class="modal-title" id="">Modifier les groupes d'options</h5>
  247.                         <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  248.                             <span aria-hidden="true">&times;</span>
  249.                         </button>
  250.                     </div>
  251.                     <div class="modal-body">
  252.                         <div class="row">
  253.                             <div class="col-lg-6 col-12" >
  254.                                 <div id="optionsimage">
  255.                                     <img src="{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR') ~ product.photos.toArray()[0].url) }}" alt="">
  256.                                 </div>
  257.                             </div>
  258.                             
  259.                             <div class="col-lg-6 col-12" id="valeurOpion" style="display: block">
  260.                                 {# <div class="row">
  261.                                     <div class="col-8">
  262.                                         <label for="" class="labold">Couleur</label>
  263.                                         <div id="valeurOpion"></div> #}
  264.                                         {# <div class="custom-checkbox myPadding"style="position: relative">
  265.                                             <input type="checkbox" name="" id="vert" class="custom-control-input">
  266.                                             <label for="vert" class="custom-control-label" style="margin-left: 25px;">Vert (3€)</label>
  267.                                         </div>  #}
  268.                                         {# <div class="custom-checkbox myPadding" style="position: relative">
  269.                                             <input type="checkbox" name="" id="rouge" class="custom-control-input">
  270.                                             <label for="rouge" class="custom-control-label" style="margin-left: 25px;">Rouge (4€)</label>
  271.                                         </div>
  272.                                         <div class="custom-checkbox myPadding" style="position: relative">
  273.                                             <input type="checkbox" name="" id="bleu" class="custom-control-input">
  274.                                             <label for="bleu" class="custom-control-label" style="margin-left: 25px;">Bleu (6€)</label>
  275.                                         </div> #}
  276.                                     {# </div>
  277.                                     <div class="col-4">
  278.                                         <label for="qt1" class="mt9">Quantité</label>
  279.                                         <input type="number" name="" min="0" id="" class="form-control">
  280.                                         <input type="number" name="" min="0" id="" class="form-control">
  281.                                         <input type="number" name="" min="0" id="" class="form-control">
  282.                                     </div>
  283.                                 </div><br>
  284.                                 <div class="row">
  285.                                     <div class="col-8">
  286.                                         <label class="labold" for="">Taille</label>
  287.                                         <select name="" id="valeurOpionNm" class="form-control wide" style="display: block !important;">     #}
  288.                                             {# <option value="">M (6€)</option>
  289.                                             <option value="">L (8€)</option>
  290.                                             <option value="">XL (10€)</option> #}
  291.                                         {# </select>    
  292.                                     </div>
  293.                                     <div class="col-4">
  294.                                         <label for="qt1" class="mt9">Quantité</label>
  295.                                         <input type="number" name="" min="0" id="" class="form-control">
  296.                                     </div>
  297.                                 </div><br> #}
  298.                                 {# <div class="row">
  299.                                     <div class="col-8">
  300.                                         <label class="labold" for="">Type tissu</label>
  301.                                         <select name="" id="" class="form-control wide" style="display: block !important;">
  302.                                             <option value="">Semi-cotton (2€)</option>
  303.                                             <option value="">Cotton (4€)</option>
  304.                                             <option value="">t-shirt rétréci (5€)</option>
  305.                                         </select>
  306.                                     </div>
  307.                                     <div class="col-4">
  308.                                         <label for="qt1" class="mt9">Quantité</label>
  309.                                         <input type="number" name="" min="0" id="" class="form-control">
  310.                                     </div>
  311.                                 </div><br> #}
  312.                             </div>
  313.                         </div>
  314.                     </div>
  315.                     {# {% endfor %}
  316.                     {% endif %} #}
  317.                     <div class="modal-footer">
  318.                         <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
  319.                         <button type="submit" class="btn btn-primary" id="" onclick="validemodalgroupe()">Ok</button>
  320.                     </div>
  321.                 {# </form> #}
  322.             </div>
  323.         </div>
  324.     </div>
  325.     <!-- Fin Modal options groups -->
  326.     <!-- Modal options -->
  327.     <div class="modal fade" id="modalOption" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
  328.         <div class="modal-dialog myWidth" role="document">
  329.             <div class="modal-content">
  330.                 {# <form action=""> #}
  331.                     <div class="modal-header">
  332.                         <h5 class="modal-title" id="">Modifier les options</h5>
  333.                         <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  334.                             <span aria-hidden="true">&times;</span>
  335.                         </button>
  336.                     </div>
  337.                     <div class="modal-body">
  338.                         <div class="row">
  339.                             <input type="hidden" id="id_optionmodal">
  340.                             <input type="hidden" id="name_optionmodal">
  341.                             <input type="hidden" id="image_optionmodal">
  342.                             <div class="col-lg-6 col-12" >
  343.                                 <div id="optionsimage"></div>
  344.                             </div>
  345.                             
  346.                             <div class="col-lg-6 col-12" style="display: block">
  347.                                 <div class="optionscolor">
  348.                                     <label >couleur d'option</label>
  349.                                     <select name="" id="optionscolor" class="form-control wide" style="display: block;">
  350.                                     </select>
  351.                                 </div><br>
  352.                                 <div class="optionsform">
  353.                                     <label for="optionsform">Format</label>
  354.                                     <select name="" id="optionsform" class="form-control wide" style="display: block !important;">    
  355.                                     </select>    
  356.                                 </div><br>
  357.                                 <div class="optionsfinition">
  358.                                     <label for="optionsfinition">Finition :</label>
  359.                                     <select name="" id="optionsfinition" class="form-control wide" style="display: block !important;">
  360.                                     </select>
  361.                                 </div><br>
  362.                                 <div class="optionspapier">
  363.                                     <label for="optionspapier">Papier :</label>
  364.                                     <select name="" id="optionspapier" class="form-control wide"style="display: block !important;">
  365.                                     </select>
  366.                                 </div><br>
  367.                                 <div class="optionsetiquette">
  368.                                     <label for="optionsetiquette">Étiquette :</label>
  369.                                     <select name="" id="optionsetiquette" class="form-control wide" style="display: block !important;">    
  370.                                     </select>
  371.                                 </div><br>
  372.                                 <div class="optionsruban">
  373.                                     <label for="optionsruban">Ruban: :</label>
  374.                                     <select name="" id="optionsruban" class="form-control wide" style="display: block !important;">    
  375.                                     </select>
  376.                                 </div><br>
  377.                                 <div class="optionsquantite">
  378.                                 <label for="optionsquantite">Quantité :</label>
  379.                                 <select name="" id="optionsquantite" class="form-control wide" style="display: block !important;">
  380.                                 </select>
  381.                                 </div><br>
  382.                             </div>
  383.                         </div>
  384.                     </div>
  385.                     {# {% endfor %}
  386.                     {% endif %} #}
  387.                     <div class="modal-footer">
  388.                         <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
  389.                         <button type="submit" class="btn btn-primary" id="validemodaloption" onclick="validemodaloption()">Ok</button>
  390.                     </div>
  391.                 {# </form> #}
  392.             </div>
  393.         </div>
  394.     </div>
  395.     <!-- Fin Modal options -->
  396.     <div class="list-single-carousel" style="margin-top:90px">
  397.         <div class="owl-carousel owl-theme owl-second">
  398.             {% for photo in product.photos %}
  399.                 <div class="item" style="height:400px;background:url({{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR') ~ photo.url) }})no-repeat center;background-size: cover" alt="{{ photo.url }}"></div>
  400.             {% endfor %}
  401.         </div>
  402.     </div>
  403.     <div class="list-single-second mt-1">
  404.         <div class="container">
  405.             <div class="">
  406.                 <div class="row">
  407.                     <div class="col-xl-8 col-lg-8 col-md-8 col-sm-12 col-12">
  408.                         <div class="vendor-head text-left">
  409.                             <h2 class="mb10">{{ product.name }}</h2>
  410.                             <p class="text-black-50">
  411.                                 <span class="mr-2">
  412.                                     <i class="fas fa-map-marker-alt "></i>
  413.                                 </span>
  414.                                 {% for department in product.departments %}
  415.                                     {{ department.name }}
  416.                                     {% if not loop.last %},
  417.                                     {% endif %}
  418.                                 {% else %}
  419.                                     Dans toute la France
  420.                                 {% endfor %}
  421.                                 <br>Service de la catégorie
  422.                                 <a href="{{ path('front_product_subcategory', {'subCategorySlug': product.subCategories.first.subCategorySlug}) }}" class="btn-default-link">{{ product.subCategories.first.name }}</a>
  423.                             </p>
  424.                             <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModalCenter">
  425.                             Lire  la  condition générale de vente
  426.                             </button>
  427.                             <!-- Modal -->
  428.                             {% if (product.company.conditionsVente|raw)  is null or (product.company.conditionsVente|raw == '') %}
  429.                                 <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  430.                                     <div class="modal-dialog modal-xl" role="document">
  431.                                         <div class="modal-content">
  432.                                         <div class="modal-header">
  433.                                             <h5 class="modal-title" id="exampleModalCenterTitle">Condition générale de vente</h5>
  434.                                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  435.                                             <span aria-hidden="true">&times;</span>
  436.                                             </button>
  437.                                         </div>
  438.                                         <div class="modal-body">
  439.                                                 Veulliez contactez votre prestataire pour connaitre la condition de vente
  440.                                         </div>
  441.                                         </div>
  442.                                     </div>
  443.                                 </div>
  444.                             {% else %}
  445.                                 <div class="modal fade" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
  446.                                     <div class="modal-dialog modal-xl" role="document">
  447.                                         <div class="modal-content">
  448.                                         <div class="modal-header">
  449.                                             <h5 class="modal-title" id="exampleModalCenterTitle">Condition générale de vente</h5>
  450.                                             <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  451.                                             <span aria-hidden="true">&times;</span>
  452.                                             </button>
  453.                                         </div>
  454.                                         <div class="modal-body">
  455.                                                 {{ product.company.conditionsVente | raw }}
  456.                                         </div>
  457.                                         </div>
  458.                                     </div>
  459.                                 </div>                    
  460.                             {% endif %}
  461.                             
  462.                         </div>
  463.                     </div>
  464.                     <div class="col-xl-4 col-lg-4 col-md-4 col-sm-12 col-12">
  465.                         <div class="vendor-head text-xl-right row">
  466.                             {% if product.photos is not empty %}
  467.                                 <div class="col-md-6">
  468.                                     <a href="#" class="btn btn-default btn-sm ml-2 text-center" id="open-popup-images">Voir les photos</a>
  469.                                 </div>
  470.                             {% endif %}
  471.                             {% if product.youtubeVideo %}
  472.                                 <div class="col-md-6">
  473.                                     <a class="popup-youtube btn btn-default btn-sm ml-2 text-center" href="{{ product.youtubeVideo }}">Voir la vidéo</a>
  474.                                 </div>
  475.                             {% endif %}
  476.                         </div>
  477.                     </div>
  478.                 </div>
  479.             </div>
  480.             <div class="vendor-meta bg-white border m-0 ">
  481.                 <div class="vendor-meta-item vendor-meta-item-bordered">
  482.                     <span class="vendor-price">
  483.                         {{ product.price|number_format(2, '.', '') }}€
  484.                     </span>
  485.                     <span class="vendor-text">Prix</span>
  486.                 </div>
  487.                 <div class="vendor-meta-item vendor-meta-item-bordered">
  488.                     {% if product.quantity %}
  489.                         <span class="vendor-guest">
  490.                             {{ product.quantity }}
  491.                         </span>
  492.                         <span class="vendor-text">Quantité restante</span>
  493.                     {% endif %}
  494.                 </div>
  495.                 {% set notesProduct = 0 %}
  496.                 {% for avi in product.avis %}
  497.                     {% set notesProduct = notesProduct + avi.globalNote %}
  498.                 {% endfor %}
  499.                 {% set noteTotalProduct = (notesProduct > 0) ? notesProduct / product.avis|length : 0 %}
  500.                 <div class="vendor-meta-item vendor-meta-item-bordered">
  501.                     <span class="rating-star">
  502.                         {% for i in 1..5 %}
  503.                             {% if i < noteTotalProduct %}
  504.                                 <i class="fa fa-star rated"></i>
  505.                             {% else %}
  506.                                 <i class="fa fa-star rate-mute"></i>
  507.                             {% endif %}
  508.                         {% endfor %}
  509.                     </span>
  510.                     <span class="rating-count vendor-text">({{ product.avis|length }})</span>
  511.                 </div>
  512.             </div>
  513.         </div>
  514.     </div>
  515.     <!-- /.page-header -->
  516.     <!-- page-header -->
  517.     {# Zoom img option #}
  518.     {% if product.company.isConfirmed %}
  519.         {% if product.productOptions %}
  520.             {% for option in product.productOptions %}
  521.                 {% if option.image1 %}
  522.                     <img id="{{ option.id }}btn1img" class="imgZoomOption" src="{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR') ~ option.image1) }}">
  523.                 {% endif %}
  524.                 {% if option.image2 %}
  525.                     <img id="{{ option.id }}btn2img" class="imgZoomOption" src="{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR') ~ option.image2) }}">
  526.                 {% endif %}
  527.             {% endfor %}
  528.         {% endif %}
  529.     {% endif %}
  530.     <div class="backgroundTrans"></div>
  531.     <button class="exitZoomOpt">X</button>
  532.     {# Zoom img option #}
  533.     {# Pannier #}
  534.     {# <div class="tab-pane fade active show" id="allguest" role="tabpanel" aria-labelledby="allguest-tab" style="width:100%">
  535.         <div class="card-body">
  536.             <h3>Mon panier ({{ products|length }} produit{% if products|length > 1 %}s{% endif %})</h3>
  537.         </div>
  538.         <div class="table-responsive" style="width:100%">
  539.             <table class="table mt-4">
  540.                 <thead>
  541.                 <tr>
  542.                     <th class="wedding-budget-event">Designation</th>
  543.                     <th class="wedding-budget-estimate">Aperçu</th>
  544.                     <th class="wedding-budget-estimate">Prix à l'unité</th>
  545.                     <th class="wedding-budget-actual">Quantité</th>
  546.                     <th class="wedding-budget-paid">Total produit</th>
  547.                     <th class="wedding-budget-paid"></th>
  548.                 </tr>
  549.                 </thead>
  550.                 <tbody>
  551.                 {% if pack %}
  552.                     <tr>
  553.                         <td>{{ pack.name }}</td>
  554.                         <td><img src="{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR')) ~ pack.image }}" style="height:50px;border-radius:2px"></td>
  555.                         <td><span class="total-amount">{{ pack.price|number_format(2, '.') }}€</span></td>
  556.                         <td>1</td>
  557.                         <td><span class="total-amount">{{ pack.price|number_format(2, '.') }}€</span></td>
  558.                         <td class="paid-total"><a href="{{ path('front_my_basket_remove_pack', {'id': pack.id}) }}" class="btn btn-rounded btn-default">Supprimer du panier</a></td>
  559.                     </tr>
  560.                 {% endif %}
  561.                 {% set TotalPriceProduct = 0 %}
  562.                 {% for product in products %}
  563.                     <tr class="border-bottom">
  564.                         <td>{{ product.product.name }}
  565.                             {% set isClothing = null %}
  566.                             {% for subcategory in product.product.subCategories %}
  567.                                 {% if subcategory.isClothing %}
  568.                                     {% set isClothing = true %}
  569.                                 {% endif %}
  570.                             {% endfor %}
  571.                             {% if isClothing %}
  572.                                 <br><strong>Taille : {{ product.size }}</strong>
  573.                             {% endif %}
  574.                             {% set isColor = null %}
  575.                             {% for subcategory in product.product.subCategories %}
  576.                                 {% if subcategory.isColor %}
  577.                                     {% set isColor = true %}
  578.                                 {% endif %}
  579.                             {% endfor %}
  580.                             {% if isColor %}
  581.                                 <br><strong>Couleur : {{ product.color }}</strong>
  582.                             {% endif %}
  583.                         </td>
  584.                         <td><img src="{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR')) ~ product.product.photos.first.url }}" style="height:50px;border-radius:2px"></td>
  585.                         {% if product.promo %}
  586.                             {% set ProductPrice = product.product.price - product.promo %}
  587.                         {% else %}
  588.                             {% set ProductPrice = product.product.price %}
  589.                         {% endif %}
  590.                         <td class="estimate-total"><span class="total-amount">{% if product.promo %}<small><del>{{ product.product.price|number_format(2, '.') }}€</del></small> <strong>{{ ProductPrice|number_format(2, '.') }}€</strong>{% else %}{{ ProductPrice|number_format(2, '.') }}€{% endif %}</span><br>{% if product.promo %}(code promo -{{ product.promo }}€){% endif %}</td>
  591.                         <td class="actual-total">{{ product.quantity }}</td>
  592.                         {% set TotalWithQuantity = product.quantity * ProductPrice %}
  593.                         {% set TotalPriceProduct = TotalPriceProduct + TotalWithQuantity %}
  594.                         <td class="paid-total"><span class="total-amount">{{ TotalWithQuantity|number_format(2, '.') }}€</span></td>
  595.                         <td class="paid-total"><a href="{{ path('front_my_basket_remove_product', {'id': product.product.id}) }}" class="btn btn-rounded btn-default">Supprimer du panier</a></td>
  596.                     </tr>
  597.                     {% for option in product.options %}
  598.                         {% set optionObject = filter_service.getProductOption(option) %}
  599.                         {% set TotalPriceProduct = TotalPriceProduct + optionObject.price %}
  600.                         <tr class="border-bottom" style="background:#fff">
  601.                             <td class="pl-4"><strong>Option :</strong> {{ optionObject.name }}</td>
  602.                             <td></td>
  603.                             <td class="estimate-total"><span class="total-amount">{{ optionObject.price|number_format(2, '.') }}€</span></td>
  604.                             <td class="actual-total"></td>
  605.                             <td class="paid-total"><span class="total-amount">{{ optionObject.price|number_format(2, '.') }}€</span></td>
  606.                             <td class="paid-total"></td>
  607.                         </tr>
  608.                     {% endfor %}
  609.                 {% endfor %}
  610.                 {% if pack or products is not empty %}
  611.                     <tr>
  612.                         <td>TOTAL :</td>
  613.                         <td></td>
  614.                         <td></td>
  615.                         <td></td>
  616.                         {% if pack %}
  617.                             {% set TotalPriceProduct = TotalPriceProduct + pack.price  %}
  618.                         {% endif %}
  619.                         <td>{{ TotalPriceProduct|number_format(2, '.') }}€</td>
  620.                     </tr>
  621.                 {% endif %}
  622.                 {% if not pack and products is empty %}
  623.                     <tr><td>Aucun produit ajouté au panier</td></tr>
  624.                 {% endif %}
  625.                 </tbody>
  626.             </table>
  627.         </div>
  628.         <div class="card-footer" style="height:70px">
  629.             {% if products|length > 0 or pack is not null %}
  630.                 {% if is_granted('ROLE_ENTERPRISE') == false %}
  631.                 <div class="float-left">
  632.                     {{ form_start(form, {'attr': {'class': 'form-inline'}}) }}
  633.                     <div class="form-group">
  634.                         {{ form_widget(form.codePromo) }}
  635.                     </div>
  636.                     <button type="submit" class="btn btn-default ml-3">Valider</button>
  637.                     {{ form_end(form) }}
  638.                     {% if isMessagePromo is defined and isMessagePromo %}
  639.                         <span style="color:green">Code promo valide !</span>
  640.                     {% endif %}
  641.                 </div>
  642.                 <div class="float-right">
  643.                     <a href="{{ path('front_command_livraison') }}" class="btn btn-primary">Commander</a>
  644.                 </div>
  645.                 {% endif %}
  646.             {% endif %}
  647.         </div>
  648.     </div> #}
  649.     {# Pannier #}
  650.     <div class="vendor-content-wrapper">
  651.         <div class="container">
  652.             <div class="row">
  653.                 <div
  654.                     class="col-xl-8 col-lg-9 col-md-9 col-sm-12 col-12">
  655.                     <!--vendor-details -->
  656.                     <div style="overflow: hidden">
  657.                         <div class="card border card-shadow-none">
  658.                             <h3 class="card-header bg-white">A propos du service</h3>
  659.                             <div class="card-body card-box overflow-hidden">
  660.                                 <!--/.vendor-details -->
  661.                                 <!--vendor-description -->
  662.                                     {% if product.company.isEditorGuide %}
  663.                                         {% if product.productDescription and product.template %}
  664.                                         {{ include('front/html/template/template'~product.template~'.html.twig') }}
  665.                                     {% else %}
  666.                                         <p class="lead">{{ product.text|raw }}</p>
  667.                                     {% endif %}
  668.                                 {% else %}
  669.                                     <p class="lead">{{ product.text|raw }}</p>
  670.                                 {% endif %}
  671.                             </div>
  672.                         </div>
  673.                         <!--vendor-description -->
  674.                         <!-- review-block -->
  675.                         {% for message in app.flashes('success') %}
  676.                             <div class="alert alert-success">
  677.                                 {{ message }}
  678.                             </div>
  679.                         {% endfor %}
  680.                         <div id="reviews">
  681.                             <div class="card border card-shadow-none ">
  682.                                 <div class="card-header bg-white">
  683.                                     <h3 class="mb0 d-inline-block" id="global_notes">Notes</h3>
  684.                                     {% if app.user and app.user.roles[0] == 'ROLE_USER' %}
  685.                                         {% set ifAvis = filter_service.getAvisUserExist(app.user, product) %}
  686.                                         {% if ifAvis == false %}
  687.                                             <a href="#review-form" class="btn btn-default btn-sm float-right d-inline-block">Donnez votre avis</a>
  688.                                         {% endif %}
  689.                                     {% endif %}
  690.                                 </div>
  691.                                 <div class="card-body">
  692.                                     <div class="review-block">
  693.                                         <div class="row">
  694.                                             <div
  695.                                                 class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-12">
  696.                                                 <!-- review-sidebar -->
  697.                                                 <div class="review-sidebar">
  698.                                                     {% if notes['globalNote']['count'] > 0 %}
  699.                                                         {% set globalNote = notes['globalNote']['totalNote'] / notes['globalNote']['count'] %}
  700.                                                     {% else %}
  701.                                                         {% set globalNote = 0 %}
  702.                                                     {% endif %}
  703.                                                     <div class="review-total">{{ globalNote|number_format(1, '.') }}</div>
  704.                                                     <div class="review-text">moyenne des notes</div>
  705.                                                     <span class="rated">
  706.                                                         {% for i in 1..5 %}
  707.                                                             {% if i <= globalNote|round %}
  708.                                                                 <i class="fa fa-star"></i>
  709.                                                             {% else %}
  710.                                                                 <i class="far fa-star"></i>
  711.                                                             {% endif %}
  712.                                                         {% endfor %}
  713.                                                     </span>
  714.                                                     {% if notes['globalNote']['count'] %}
  715.                                                         <p>Note de
  716.                                                             {{ globalNote|number_format(1, '.') }}
  717.                                                             basée sur
  718.                                                             {{ notes['globalNote']['count'] }}
  719.                                                             note
  720.                                                             {% if notes['globalNote']['count'] > 1 %}s
  721.                                                             {% endif %}.</p>
  722.                                                     {% else %}
  723.                                                         <p>Aucune note pour le moment</p>
  724.                                                     {% endif %}
  725.                                                 </div>
  726.                                                 <!-- /.review-sidebar -->
  727.                                             </div>
  728.                                             <div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-12">
  729.                                                 <div
  730.                                                     class="review-box">
  731.                                                     <!-- review-list -->
  732.                                                     <div class="review-list">
  733.                                                         {% set globalQualityService = notes['qualityService']['count'] ? notes['qualityService']['totalNote'] / notes['qualityService']['count'] : notes['qualityService']['count'] %}
  734.                                                         <div class="review-for">Qualité du service</div>
  735.                                                         <div class="review-rating">
  736.                                                             <span class="rated">
  737.                                                                 {% for i in 1..5 %}
  738.                                                                     {% if i <= globalQualityService %}
  739.                                                                         <i class="fa fa-star"></i>
  740.                                                                     {% else %}
  741.                                                                         <i class="far fa-star"></i>
  742.                                                                     {% endif %}
  743.                                                                 {% endfor %}
  744.                                                             </span>
  745.                                                         </div>
  746.                                                         <div class="review-number">{{ globalQualityService|number_format(1, '.') }}</div>
  747.                                                     </div>
  748.                                                     <!-- /.review-list -->
  749.                                                     <!-- review-list -->
  750.                                                     <div class="review-list">
  751.                                                         {% set globalPrice = notes['price']['count'] ? notes['price']['totalNote'] / notes['price']['count'] : notes['price']['count'] %}
  752.                                                         <div class="review-for">Prix</div>
  753.                                                         <div class="review-rating">
  754.                                                             <span class="rated">
  755.                                                                 {% for i in 1..5 %}
  756.                                                                     {% if i <= globalPrice %}
  757.                                                                         <i class="fa fa-star"></i>
  758.                                                                     {% else %}
  759.                                                                         <i class="far fa-star"></i>
  760.                                                                     {% endif %}
  761.                                                                 {% endfor %}
  762.                                                             </span>
  763.                                                         </div>
  764.                                                         <div class="review-number">{{ globalPrice|number_format(1, '.') }}</div>
  765.                                                     </div>
  766.                                                     <!-- /.review-list -->
  767.                                                     <!-- review-list -->
  768.                                                     <div class="review-list">
  769.                                                         {% set globalSpeed = notes['speed']['count'] ? notes['speed']['totalNote'] / notes['speed']['count'] : notes['speed']['count'] %}
  770.                                                         <div class="review-for">Rapidité</div>
  771.                                                         <div class="review-rating">
  772.                                                             <span class="rated">
  773.                                                                 {% for i in 1..5 %}
  774.                                                                     {% if i <= globalSpeed %}
  775.                                                                         <i class="fa fa-star"></i>
  776.                                                                     {% else %}
  777.                                                                         <i class="far fa-star"></i>
  778.                                                                     {% endif %}
  779.                                                                 {% endfor %}
  780.                                                             </span>
  781.                                                         </div>
  782.                                                         <div class="review-number">{{ globalSpeed|number_format(1, '.') }}</div>
  783.                                                     </div>
  784.                                                     <div class="review-list">
  785.                                                         {% set globalConformite = notes['conformDescription']['count'] ? notes['conformDescription']['totalNote'] / notes['conformDescription']['count'] : notes['conformDescription']['count'] %}
  786.                                                         <div class="review-for">Description conforme</div>
  787.                                                         <div class="review-rating">
  788.                                                             <span class="rated">
  789.                                                                 {% for i in 1..5 %}
  790.                                                                     {% if i <= globalConformite %}
  791.                                                                         <i class="fa fa-star"></i>
  792.                                                                     {% else %}
  793.                                                                         <i class="far fa-star"></i>
  794.                                                                     {% endif %}
  795.                                                                 {% endfor %}
  796.                                                             </span>
  797.                                                         </div>
  798.                                                         <div class="review-number">{{ globalConformite|number_format(1, '.') }}</div>
  799.                                                     </div>
  800.                                                     <div class="review-list">
  801.                                                         {% set globalCommunication = notes['communication']['count'] ? notes['communication']['totalNote'] / notes['communication']['count'] : notes['communication']['count'] %}
  802.                                                         <div class="review-for">Communication</div>
  803.                                                         <div class="review-rating">
  804.                                                             <span class="rated">
  805.                                                                 {% for i in 1..5 %}
  806.                                                                     {% if i <= globalCommunication %}
  807.                                                                         <i class="fa fa-star"></i>
  808.                                                                     {% else %}
  809.                                                                         <i class="far fa-star"></i>
  810.                                                                     {% endif %}
  811.                                                                 {% endfor %}
  812.                                                             </span>
  813.                                                         </div>
  814.                                                         <div class="review-number">{{ globalCommunication|number_format(1, '.') }}</div>
  815.                                                     </div>
  816.                                                     <!-- /.review-list -->
  817.                                                 </div>
  818.                                             </div>
  819.                                         </div>
  820.                                     </div>
  821.                                 </div>
  822.                             </div>
  823.                             <div class="card border card-shadow-none widget-vendor-list ">
  824.                                 <div class="card-body pl-0 pr-0">
  825.                                     <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
  826.                                         <h3 class="mb20">Avis</h3>
  827.                                     </div>
  828.                                     {# <pre>
  829.                                         {{ dump(productAvis|slice(0, 3)) }}
  830.                                     </pre> #}
  831.                                     {% for key,productAvi in productAvis|slice(0, 3) %}
  832.                                         {% if productAvi.isDesactivatedByAdmin == null and productAvi.isDesactivatedByAdmin == false %}
  833.                                             <div class="card border card-shadow-none ">
  834.                                                 <!-- review-user -->
  835.                                                 <div class="card-header bg-white mb0">
  836.                                                     <div class="review-user">
  837.                                                         <div class="user-img">
  838.                                                             <img src="{{ asset(constant('App\\Services\\File::IMAGE_CLIENT_DIR') ~ productAvi.client.image) }}" alt="{{ productAvi.client.firstName }}" class="rounded-circle" style="width:50px;height:50px;object-fit:cover"></div>
  839.                                                         <div class="user-meta">
  840.                                                             <h5 class="user-name mb-0">{{ productAvi.client.firstName }}<span class="user-review-date">{{ productAvi.createdAt|date('d/m/Y') }}</span>
  841.                                                             </h5>
  842.                                                             <div class="given-review">
  843.                                                                 <span class="rated">
  844.                                                                         <i class="fa fa-star"></i>
  845.                                                                     {% for i in 2..5 %}
  846.                                                                         {% if i <= productAvi.globalNote|round %}
  847.                                                                             <i class="fa fa-star"></i>
  848.                                                                         {% else %}
  849.                                                                             <i class="far fa-star"></i>
  850.                                                                         {% endif %}
  851.                                                                     {% endfor %}
  852.                                                                 </span>
  853.                                                             </div>
  854.                                                         </div>
  855.                                                     </div>
  856.                                                 </div>
  857.                                                 <!-- /.review-user -->
  858.                                                 <div class="card-body">
  859.                                                     <!-- review-descripttions -->
  860.                                                     <div class="review-descriptions mb-2" id="cli_{{key}}">
  861.                                                         <p>
  862.                                                             <i>{{ productAvi.text }}</i>
  863.                                                         </p>
  864.                                                         <div class="cont_img_comment">
  865.                                                         {% for imageComment in productAvi.imageComments.toArray() %}
  866.                                                             <img src={{ asset(constant('App\\Services\\File::IMAGE_COMMENT_DIR') ~ imageComment.url) }} class="img_comment">
  867.                                                         {% endfor %}
  868.                                                         </div>
  869.                                                     </div>
  870.                                                     {% if productAvi.responseCompany %}
  871.                                                         <div class="review-descriptions mb-2" id="prest_{{key}}">
  872.                                                             Réponse du prestataire :<br>
  873.                                                             <i>{{ productAvi.responseCompany }}</i>
  874.                                                         </div>
  875.                                                     {% endif %}
  876.                                                     <!-- /.review-descripttions -->
  877.                                                 </div>
  878.                                             </div>
  879.                                         {% endif %}
  880.                                     {% else %}
  881.                                         <p class="p-3">Aucun avis pour le moment</p>
  882.                                     {% endfor %}
  883.                                 </div>
  884.                             </div>
  885.                         </div>
  886.                         {% if app.user and app.user.roles[0] == 'ROLE_USER' %}
  887.                             {% set ifAvis = filter_service.getAvisUserExist(app.user, product) %}
  888.                             {% if ifAvis == false %}
  889.                                 <div class="card border card-shadow-none leave-review" id="review-form">
  890.                                     <div class="card-header bg-white mb0">
  891.                                         <h3 class="mb0">Evaluez votre commande</h3>
  892.                                     </div>
  893.                                     <div class="card-body">
  894.                                         <div class="review-rating-select">
  895.                                             <div class="rate-selection">
  896.                                                 <span class="text-dark">Qualité du service</span>
  897.                                                 <span id="rateYo1" class="jq-ry-container ml-4" style="width: 70px;">
  898.                                                     <div class="jq-ry-group-wrapper">
  899.                                                         <div class="jq-ry-normal-group jq-ry-group"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3">
  900.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  901.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  902.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  903.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  904.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  905.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  906.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  907.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  908.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  909.                                                             </svg>
  910.                                                         </div>
  911.                                                         <div class="jq-ry-rated-group jq-ry-group" id="rate1" style="width: 72%;"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227">
  912.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  913.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  914.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  915.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  916.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  917.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  918.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  919.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  920.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  921.                                                             </svg>
  922.                                                         </div>
  923.                                                     </div>
  924.                                                 </span>
  925.                                             </div>
  926.                                             <div class="rate-selection">
  927.                                                 <span class="text-dark">Fiabilité</span>
  928.                                                 <span id="rateYo2" class="jq-ry-container ml-4" style="width: 70px;">
  929.                                                     <div class="jq-ry-group-wrapper">
  930.                                                         <div class="jq-ry-normal-group jq-ry-group"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3">
  931.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  932.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  933.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  934.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  935.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  936.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  937.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  938.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  939.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  940.                                                             </svg>
  941.                                                         </div>
  942.                                                         <div class="jq-ry-rated-group jq-ry-group" id="rate2" style="width: 72%;"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227">
  943.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  944.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  945.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  946.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  947.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  948.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  949.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  950.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  951.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  952.                                                             </svg>
  953.                                                         </div>
  954.                                                     </div>
  955.                                                 </span>
  956.                                             </div>
  957.                                             <div class="rate-selection">
  958.                                                 <span class="text-dark">Prix</span>
  959.                                                 <span id="rateYo3" class="jq-ry-container ml-4" style="width: 70px;">
  960.                                                     <div class="jq-ry-group-wrapper">
  961.                                                         <div class="jq-ry-normal-group jq-ry-group"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3">
  962.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  963.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  964.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  965.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  966.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  967.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  968.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  969.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  970.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  971.                                                             </svg>
  972.                                                         </div>
  973.                                                         <div class="jq-ry-rated-group jq-ry-group" id="rate3" style="width: 72%;"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227">
  974.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  975.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  976.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  977.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  978.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  979.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  980.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  981.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  982.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  983.                                                             </svg>
  984.                                                         </div>
  985.                                                     </div>
  986.                                                 </span>
  987.                                             </div>
  988.                                             <div class="rate-selection">
  989.                                                 <span class="text-dark">Rapidité</span>
  990.                                                 <span id="rateYo4" class="jq-ry-container ml-4" style="width: 70px;">
  991.                                                     <div class="jq-ry-group-wrapper">
  992.                                                         <div class="jq-ry-normal-group jq-ry-group"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3">
  993.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  994.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  995.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  996.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  997.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  998.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  999.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1000.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1001.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1002.                                                             </svg>
  1003.                                                         </div>
  1004.                                                         <div class="jq-ry-rated-group jq-ry-group" id="rate4" style="width: 72%;"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227">
  1005.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1006.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1007.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1008.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1009.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1010.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1011.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1012.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1013.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1014.                                                             </svg>
  1015.                                                         </div>
  1016.                                                     </div>
  1017.                                                 </span>
  1018.                                             </div>
  1019.                                             <div class="rate-selection">
  1020.                                                 <span class="text-dark">Conforme à la description</span>
  1021.                                                 <span id="rateYo5" class="jq-ry-container ml-4" style="width: 70px;">
  1022.                                                     <div class="jq-ry-group-wrapper">
  1023.                                                         <div class="jq-ry-normal-group jq-ry-group"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3">
  1024.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1025.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1026.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1027.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1028.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1029.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1030.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1031.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1032.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1033.                                                             </svg>
  1034.                                                         </div>
  1035.                                                         <div class="jq-ry-rated-group jq-ry-group" id="rate5" style="width: 72%;"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227">
  1036.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1037.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1038.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1039.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1040.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1041.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1042.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1043.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1044.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1045.                                                             </svg>
  1046.                                                         </div>
  1047.                                                     </div>
  1048.                                                 </span>
  1049.                                             </div>
  1050.                                             <div class="rate-selection">
  1051.                                                 <span class="text-dark">Communication</span>
  1052.                                                 <span id="rateYo6" class="jq-ry-container ml-4" style="width: 70px;">
  1053.                                                     <div class="jq-ry-group-wrapper">
  1054.                                                         <div class="jq-ry-normal-group jq-ry-group"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3">
  1055.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1056.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1057.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1058.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1059.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1060.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1061.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1062.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#d3d3d3" style="margin-left: 0px;">
  1063.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1064.                                                             </svg>
  1065.                                                         </div>
  1066.                                                         <div class="jq-ry-rated-group jq-ry-group" id="rate6" style="width: 72%;"><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227">
  1067.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1068.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1069.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1070.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1071.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1072.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1073.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1074.                                                             </svg><!--?xml version="1.0" encoding="utf-8"?--><svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewbox="0 12.705 512 486.59" x="0px" y="0px" xml:space="preserve" width="14px" height="14px" fill="#ff9227" style="margin-left: 0px;">
  1075.                                                                 <polygon points="256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 "></polygon>
  1076.                                                             </svg>
  1077.                                                         </div>
  1078.                                                     </div>
  1079.                                                 </span>
  1080.                                             </div>
  1081.                                         </div>
  1082.                                         {{ form_start(formComment) }}
  1083.                                         <div class="row">
  1084.                                             {# <div style="color:red">{{ form_errors(formComment) }}</div> #}
  1085.                                             <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12 mt30">
  1086.                                                 {# <div class="form-group">
  1087.                                                     {{ form_label(form.imageComment, '', {'label_attr': {'class': 'control-label'}}) }}
  1088.                                                     {{ form_widget(form.imageComment) }}
  1089.                                                 </div> #}
  1090.                                                 {# <div class="col-md-12"> #}
  1091.                                                     {{form_widget(formComment)}}
  1092.                                                 {# </div> #}
  1093.                                                 {# <div class="form-group">
  1094.                                                     {{ form_label(formComment.text, '', {'label_attr': {'class': 'control-label'}}) }}
  1095.                                                     {{ form_widget(formComment.text, {'attr': {'class': 'form-control', 'rows': 5}}) }}
  1096.                                                 </div> #}
  1097.                                             </div>
  1098.                                             <!-- Button -->
  1099.                                             <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
  1100.                                                 <div class="form-group">
  1101.                                                     <button id="submit" name="submit" class="btn btn-default">Ajouter mon avis</button>
  1102.                                                 </div>
  1103.                                             </div>
  1104.                                         </div>
  1105.                                         {# {{ form_rest(formComment) }} #}
  1106.                                         {{ form_end(formComment) }}
  1107.                                     </div>
  1108.                                 </div>
  1109.                             {% endif %}
  1110.                         {% endif %}
  1111.                     </div>
  1112.                     <!-- /.review-content -->
  1113.                 </div>
  1114.                 <!-- /.location -->
  1115.                 <!-- list-sidebar -->
  1116.                 <div class="col-xl-4 col-lg-3 col-md-3 col-sm-12 col-12">
  1117.                     <div
  1118.                         class="sidebar-venue">
  1119.                         <!-- FORMULAIRE DU PANIER -->
  1120.                         {% set isService = false %}
  1121.                         {% for productSubCategory in product.subCategories %}
  1122.                             {% if productSubCategory.isService == true %}
  1123.                                 {% set isService = true %}
  1124.                             {% endif %}
  1125.                         {% endfor %}
  1126.                         {% if isService != true %}
  1127.                             {% include "front/product/cart/cart_form.html.twig" with {'product' : product} %}
  1128.                         {% endif %}
  1129.                         {% if isService == true %}
  1130.                             <!-- TEST DU TYPE DE SERVICE (location ou réservation) -->
  1131.                             {% set isLocation = false %}
  1132.                             {% for singleCategory in product.subcategories %}
  1133.                                 {% if singleCategory.name == "Location de salle" or singleCategory.name == "Location de vehicule"  %}
  1134.                                     {% set isLocation = true %}
  1135.                                 {% endif %}
  1136.                             {% endfor %}
  1137.                             <!-- FORMULAIRE DE LOCATION -->
  1138.                             {% if isLocation == true or product.typeLocation is not null %}
  1139.                                 {% include "front/product/location/location_form.html.twig" with {'product' : product} %}
  1140.                             {% endif %}
  1141.                             <!-- FORMULAIRE DE RESERVATION DE SERVICES -->
  1142.                             {% if isLocation == false and product.typeLocation is null %}
  1143.                                 {% include "front/product/reservation/reservation_form.html.twig" with {'product' : product} %}
  1144.                             {% endif %}
  1145.                         {% endif %}
  1146.                         <div class="vendor-owner-profile mb30">
  1147.                             <div class="vendor-owner-profile-head">
  1148.                                 <h3 class="mb-0">Livraison</h3>
  1149.                             </div>
  1150.                             <div class="vendor-owner-profile-content">
  1151.                                 <ul class="list-group list-group-flush">
  1152.                                     <li class="list-group-item">
  1153.                                         <span class="mr-2">
  1154.                                             <i class="fas fa-fw fa-map-marker-alt"></i>
  1155.                                         </span>
  1156.                                         {% for department in product.departments %}
  1157.                                             {{ department.name }}
  1158.                                             {% if not loop.last %},
  1159.                                             {% endif %}
  1160.                                         {% else %}
  1161.                                             Toute la France
  1162.                                         {% endfor %}
  1163.                                     </li>
  1164.                                 </ul>
  1165.                             </div>
  1166.                         </div>
  1167.                         <!-- venue-admin -->
  1168.                         <div class="vendor-owner-profile mb30">
  1169.                             <div class="vendor-owner-profile-head">
  1170.                                 <h3 class="mb-4">Prestataire</h3>
  1171.                             </div>
  1172.                             <div class="vendor-owner-profile-content">
  1173.                                 <ul class="list-group list-group-flush">
  1174.                                     <li class="list-group-item">
  1175.                                         <span class="mr-2">
  1176.                                             <a href="{{ path('front_company_single', {'companySlug': product.company.companySlug, 'id': product.company.id}) }}" class="btn btn-default btn-sm ml-2 text-center">Voir le prestataire</a>
  1177.                                         </span>
  1178.                                     </li>
  1179.                                 </ul>
  1180.                             </div>
  1181.                         </div>
  1182.                     </div>
  1183.                 </div>
  1184.             </div>
  1185.             <!-- /.list-sidebar -->
  1186.         </div>
  1187.     </div>
  1188.     <!-- vendor-thumbnail section -->
  1189.     <div class="space-small">
  1190.         <div class="container">
  1191.             <div class="row">
  1192.                 <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
  1193.                     <h2>Autres services du prestataire</h2>
  1194.                 </div>
  1195.             </div>
  1196.             <div class="row">
  1197.                 {% for otherProduct in otherProducts %}
  1198.                     <div class="col-xl-4 col-lg-4 col-md-6 col-sm-6 col-12">
  1199.                         <div class="container-block-Pcompanies mb-3">
  1200.                             <div class="container-imageP zoomimg">
  1201.                                 <a href="{{ path('front_product_single', {'slug': otherProduct.subCategories[0].categories[0].slug, 'subCategorySlug': otherProduct.subCategories[0].subCategorySlug, 'product_id': otherProduct.id, 'productSlug': otherProduct.productSlug}) }}">
  1202.                                     {% if otherProduct.photos is not empty %}
  1203.                                         <img src="{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR') ~ otherProduct.photos.first.url) }}" alt="{{ otherProduct.name }}" class="img-fluid" style="object-fit: cover; border-radius: .5rem .5rem 0 0;">
  1204.                                     {% endif %}
  1205.                                 </a>
  1206.                             </div>
  1207.                             <div class="container-info-presta" style="padding-bottom: 80px;">
  1208.                                 <h2 class="vendor-title">
  1209.                                     <a href="{{ path('front_product_single', {'slug': otherProduct.subCategories[0].categories[0].slug, 'subCategorySlug': otherProduct.subCategories[0].subCategorySlug, 'product_id': otherProduct.id, 'productSlug': otherProduct.productSlug}) }}" class="title">{{ otherProduct.name }}</a>
  1210.                                 </h2>
  1211.                                 <p class="vendor-address">
  1212.                                     {% for department in otherProduct.departments %}
  1213.                                         {{ department.name }}
  1214.                                         {% if not loop.last %},
  1215.                                         {% endif %}
  1216.                                     {% else %}
  1217.                                         Toute la France
  1218.                                     {% endfor %}
  1219.                                 </p>
  1220.                                 <p>
  1221.                                     <i class="fas fa-money-bill-wave"></i>
  1222.                                     Prix
  1223.                                     <strong>{{ otherProduct.price|number_format(2, '.', '') }}</strong>
  1224.                                     €</p>
  1225.                                 <p>
  1226.                                     <i class="fa fa-star rated"></i>
  1227.                                     {{ otherProduct.avis|length }} Avis</p>
  1228.                                 {% if otherProduct.quantity %}
  1229.                                     <p>{{ otherProduct.quantity }}
  1230.                                         Quantité restante</p>
  1231.                                 {% else %}
  1232.                                     <p style="color: transparent;">Quantité restante</p>
  1233.                                 {% endif %}
  1234.                             </div>
  1235.                             <div class="wishlist-sign">
  1236.                                 <a href="#" class="btn-wishlist">
  1237.                                     <i class="fa fa-heart"></i>
  1238.                                 </a>
  1239.                             </div>
  1240.                             <a href="{{ path('front_product_single', {'slug': otherProduct.subCategories[0].categories[0].slug, 'subCategorySlug': otherProduct.subCategories[0].subCategorySlug, 'product_id': otherProduct.id, 'productSlug': otherProduct.productSlug}) }}" class="title">
  1241.                                 <button class="btnVoirP btn">Voir le produit</button>
  1242.                             </a>
  1243.                         </div>
  1244.                     </div>
  1245.                 {% else %}
  1246.                     <div class="col-md-12 mt-5 text-center">
  1247.                         <p>Aucun autre produit.</p>
  1248.                     </div>
  1249.                 {% endfor %}
  1250.             </div>
  1251.             {# <div class="row">
  1252.                 {% for otherProduct in otherProducts %}
  1253.                     <div class="col-xl-4 col-lg-4 col-md-6 col-sm-6 col-12">
  1254.                         <div
  1255.                             class="vendor-thumbnail">
  1256.                             <!-- Vendor thumbnail -->
  1257.                             <div
  1258.                                 class="vendor-img zoomimg">
  1259.                                 <!-- Vendor img -->
  1260.                                 <a href="{{ path('front_product_single', {'slug': otherProduct.subCategories[0].categories[0].slug, 'subCategorySlug': otherProduct.subCategories[0].subCategorySlug, 'product_id': otherProduct.id, 'productSlug': otherProduct.productSlug}) }}">
  1261.                                     {% if otherProduct.photos is not empty %}
  1262.                                         <img src="{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR') ~ otherProduct.photos.first.url) }}" alt="{{ otherProduct.name }}" class="img-fluid">
  1263.                                     {% endif %}
  1264.                                 </a>
  1265.                                 <div class="wishlist-sign">
  1266.                                     <a href="#" class="btn-wishlist">
  1267.                                         <i class="fa fa-heart"></i>
  1268.                                     </a>
  1269.                                 </div>
  1270.                             </div>
  1271.                             <!-- /.Vendor img -->
  1272.                             <div
  1273.                                 class="vendor-content">
  1274.                                 <!-- Vendor Content -->
  1275.                                 <h2 class="vendor-title">
  1276.                                     <a href="{{ path('front_product_single', {'slug': otherProduct.subCategories[0].categories[0].slug, 'subCategorySlug': otherProduct.subCategories[0].subCategorySlug, 'product_id': otherProduct.id, 'productSlug': otherProduct.productSlug}) }}" class="title">{{ otherProduct.name }}</a>
  1277.                                 </h2>
  1278.                                 <p class="vendor-address">
  1279.                                     {% for department in otherProduct.departments %}
  1280.                                         {{ department.name }}
  1281.                                         {% if not loop.last %},
  1282.                                         {% endif %}
  1283.                                     {% else %}
  1284.                                         Toute la France
  1285.                                     {% endfor %}
  1286.                                 </p>
  1287.                             </div>
  1288.                             <div class="vendor-meta">
  1289.                                 <div class="vendor-meta-item vendor-meta-item-bordered">
  1290.                                     <span class="vendor-price">
  1291.                                         {{ otherProduct.price|number_format(2, '.', '') }}€
  1292.                                     </span>
  1293.                                     <span class="vendor-text">Prix</span>
  1294.                                 </div>
  1295.                                 <div class="vendor-meta-item vendor-meta-item-bordered">
  1296.                                     {% if otherProduct.quantity %}
  1297.                                         <span class="vendor-guest">
  1298.                                             {{ otherProduct.quantity }}
  1299.                                         </span>
  1300.                                         <span class="vendor-text">Quantité restante</span>
  1301.                                     {% endif %}
  1302.                                 </div>
  1303.                                 {% set notes = 0 %}
  1304.                                 {% for avi in otherProduct.avis %}
  1305.                                     {% set notes = notes + avi.globalNote %}
  1306.                                 {% endfor %}
  1307.                                 {% set noteTotal = (notes > 0) ? notes / otherProduct.avis|length : 0 %}
  1308.                                 <div class="vendor-meta-item vendor-meta-item-bordered">
  1309.                                     <span class="rating-star">
  1310.                                         {% for i in 1..5 %}
  1311.                                             {% if i < noteTotal %}
  1312.                                                 <i class="fa fa-star rated"></i>
  1313.                                             {% else %}
  1314.                                                 <i class="fa fa-star rate-mute"></i>
  1315.                                             {% endif %}
  1316.                                         {% endfor %}
  1317.                                     </span>
  1318.                                     <span class="rating-count vendor-text">({{ otherProduct.avis|length }})</span>
  1319.                                 </div>
  1320.                             </div>
  1321.                             <!-- /.Vendor Content -->
  1322.                         </div>
  1323.                         <!-- /.Vendor thumbnail -->
  1324.                     </div>
  1325.                 {% else %}
  1326.                     <div class="col-md-12 mt-5 text-center">
  1327.                         <p>Aucun autre produit.</p>
  1328.                     </div>
  1329.                 {% endfor %}
  1330.             </div> #}
  1331.         </div>
  1332.     </div>
  1333.     {# Question #}
  1334.     <div class="col-sm-12 col-md-5 col-lg-4 col-xl-3 position-fixed" id="chatbar" style="bottom:0;right:50px;z-index: 1000">
  1335.         <div class="panel panel-primary myradiuss">
  1336.                 {# <div class="d-flex justify-content-between panel-heading p-2" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" id="accordion" style="background:#A066F2;border-radius: 8px 8px 0 0;cursor:pointer">
  1337.                     <span style="color:#fff">
  1338.                         <i class="fas fa-comments"></i>
  1339.                         Une question sur ce
  1340.                         {% if product.company == 'product' %}produit{% else %}service{% endif%}
  1341.                         ?</span>
  1342.                     <div class="btn-group pull-right">
  1343.                         <a type="button" class="btn btn-default btn-xs">
  1344.                             <i class="fas fa-chevron-down"></i>
  1345.                         </a>
  1346.                     </div>
  1347.                 </div> #}
  1348.                 <div class="panel-collapse collapse" id="collapseOne" style="border:1px solid #A066F2">
  1349.                     {# <div class="modal-header">
  1350.                         {# <h5 class="modal-title" id="exampleModalLongTitle">Créer un ticket</h5> #}
  1351.                         {# <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  1352.                         <span aria-hidden="true">&times;</span>
  1353.                         </button> 
  1354.                     </div> #}
  1355.                     <div class="titreSMS"><h3 style="margin-bottom: 0">Discutez avec le prestataire</h3></div>
  1356.                     {{ form_start(formTicket) }}
  1357.                     <span class="collapseMessage" data-toggle="collapse" data-parent="#accordion" href="#collapseOne">X</span>
  1358.                     <div class="modal-body">
  1359.                         {# supprime d'apres le retour 12/08/22
  1360.                         <div class="col-xl-12 col-lg-12 col-md-12 col-sm-6 col-12">
  1361.                             <div class="form-group">
  1362.                                 {{ form_row(formTicket.subject) }}
  1363.                             </div>
  1364.                         </div> #}
  1365.                         <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
  1366.                             <div class="form-group">
  1367.                                 {{ form_row(formTicket.messagings) }}
  1368.                             </div>
  1369.                         </div>
  1370.                         <div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-12">
  1371.                             <div class="form-group">
  1372.                                 <input class='form-control' name="productID" type="hidden" value={{ product.id }} readonly>
  1373.                             </div>
  1374.                         </div>
  1375.                     </div>
  1376.                     <div class="modal-footer">
  1377.                         {# <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button> #}
  1378.                         <button type="submit" class="btn btn-primary">Envoyer</button>
  1379.                     </div>
  1380.                     {{ form_end(formTicket) }}
  1381.                     {# <div class="p-3" id="messageSuccessContact" style="background:green;color:#fff;display:none">Message envoyé !</div>
  1382.                     {{ form_start(formContact, {'attr': {'id': 'contactFormProduct'}}) }}
  1383.                     <div class="panel-body" style="background:#fff">
  1384.                         <div class="chat">
  1385.                             {{ form_widget(formContact.message, {'attr': {'rows': 12}}) }}
  1386.                         </div>
  1387.                     </div>
  1388.                     <div class="panel-footer">
  1389.                         <div class="input-group">
  1390.                             {{ form_widget(formContact.email) }}
  1391.                             <span class="input-group-btn">
  1392.                                 <button type="submit" class="btn btn-warning btn-sm" id="btn-chat">Envoyer</button>
  1393.                             </span>
  1394.                         </div>
  1395.                     </div>
  1396.                     {{ form_end(formContact) }} #}
  1397.                 </div>
  1398.             </div>
  1399.         </div>
  1400.     </div>
  1401.     {# Modal chat #}
  1402.     <!-- Button trigger modal -->
  1403.         {% if app.user %}
  1404.         <div class="position-fixed" id="MyChat" data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
  1405.             <i class="fas fa-comments MyIconChat"></i>
  1406.         </div>
  1407.         {# <div class="position-fixed" id="MyChat" data-toggle="modal" data-target="#modalChat">
  1408.             <i class="fas fa-comments MyIconChat"></i>
  1409.             </a>
  1410.         </div> #}
  1411.          {% else %}
  1412.          <script src="">
  1413.              function connect(){
  1414.                 window.open("{{ path('connection-test', {'product_id': product.id, 'productSlug': product.productSlug }) }}", "pub", "menubar=no");
  1415.             }
  1416.          </script>
  1417.             <div class="position-fixed" id="MyChat">
  1418.                 {# <a href="{{ path('front_product_single', {'slug': product.subCategories[0].categories[0].slug, 'subCategorySlug': product.subCategories[0].subCategorySlug, 'product_id': product.id, 'productSlug': product.productSlug}) }}" onclick="connect();"> #}
  1419.                 <a href="{{ path('connection-test', {'product_id': product.id, 'productSlug': product.productSlug }) }}" onclick="connect();" rel="noopener" target="_blank">
  1420.                 <i class="fas fa-comments MyIconChat"></i>
  1421.                 </a>
  1422.             </div>
  1423.         {% endif %}
  1424.     
  1425.     {# Modal chat #}
  1426.     {% endblock %}
  1427.      {% block _avis_imageComments_widget %}
  1428.         <p>Ici, vous pouvez ajouter vos image, sa taille ne doit pas dépasser 400ko !</p>
  1429.         <div class="form-group">
  1430.             <button class="btn btn-primary" id="add_image" data-target="#block_{{id}}" type="button">Ajouter une image</button>
  1431.         </div>
  1432.         {{form_widget(form)}}
  1433.         <input type="hidden" id="widgets-counter" value="0">
  1434.         <input type="hidden" id="conteur-input" value="0">
  1435.     {% endblock %}
  1436.     {% block _avis_imageComments_entry_row %}
  1437.         {{form_widget(form)}}
  1438.     {% endblock %}
  1439.     {% block _avis_imageComments_entry_widget %}
  1440.         <div class="form-group" id="block_{{id}}">
  1441.             <div class="row">
  1442.                 <div class="col-10 mt-3">
  1443.                     <div class="row">
  1444.                         <div class="col-md-12 image-errors">
  1445.                             {{ form_widget(form.url, {'attr': {'class': 'form-control file-input'}}) }}
  1446.                             {{ form_errors(form.url, {'attr': {'class': 'form-control message'}}) }}
  1447.                         </div>
  1448.                     </div>
  1449.                 </div>
  1450.                 <div class="col-2 mt-3">
  1451.                     <button type="button" data-action="delete" data-target="#block_{{id}}" class="btn btn-danger">X</button>
  1452.                 </div>
  1453.             </div>
  1454.         </div>
  1455.     {% endblock %}
  1456.     {% block javascript %}
  1457.         <script title="zoom img comment">
  1458.             {% for key,productAvi in productAvis|slice(0, 3) %}
  1459.                 if ($('.img_comment').length) {
  1460.                     $('#cli_{{key}} .img_comment').magnificPopup({
  1461.                         items: [{% for imageComment in productAvi.imageComments.toArray() %}{
  1462.                                 src: "{{ asset(constant('App\\Services\\File::IMAGE_COMMENT_DIR') ~ imageComment.url) }}",
  1463.                                 title: 'Photo ' + {{ loop.index }}
  1464.                             },{% endfor %}],
  1465.                         gallery: {
  1466.                             enabled: true
  1467.                         },
  1468.                         type: 'image' // this is a default type
  1469.                     });
  1470.                 }
  1471.             {% endfor %}
  1472.         </script>
  1473.         <script>
  1474.             document.getElementById("profil_user_image").addEventListener('change', function() {
  1475.                 var reader = new FileReader();
  1476.                 reader.onload = function (e) {
  1477.                     // get loaded data and render thumbnail.
  1478.                     console.log(e.target)
  1479.                     document.getElementById("image-preview").style.background = `url(${e.target.result})no-repeat center`;
  1480.                     document.getElementById("image-preview").style.backgroundSize = `cover`;
  1481.                 };
  1482.                 // read the image file as a data URL.
  1483.                 reader.readAsDataURL(this.files[0]);
  1484.             });
  1485.         </script>
  1486.         {{ parent() }}
  1487.         {# Script zoom option #}
  1488.         <script>
  1489.             let backgroundFlou = document.querySelector('.backgroundTrans');
  1490.             let exitBtn = document.querySelector('.exitZoomOpt');
  1491.             //Affiche image clikee
  1492.             function afficheImgOption(idbtn) {
  1493.                 let img = document.getElementById(idbtn + "img");
  1494.                 //console.log(img);
  1495.                 //img.classList.add('showImgOption');
  1496.                 img.style.display = "block";
  1497.                 backgroundFlou.style.display = "block";
  1498.                 exitBtn.style.display = "block";
  1499.             }    
  1500.             //Fermer par contoure image
  1501.             backgroundFlou.addEventListener('click', function () {
  1502.                 let imgZoomOp = document.querySelectorAll(".imgZoomOption");
  1503.                 imgZoomOp.forEach(function(item,index){
  1504.                     imgZoomOp[index].style.display = "none";
  1505.                 })
  1506.                 backgroundFlou.style.display = "none";
  1507.                 exitBtn.style.display = "none";
  1508.             })
  1509.             
  1510.             //Fermer par boutton X
  1511.             exitBtn.addEventListener('click', function () {
  1512.                 let imgZoomOp = document.querySelectorAll(".imgZoomOption");
  1513.                 imgZoomOp.forEach(function(item,index){
  1514.                     imgZoomOp[index].style.display = "none";
  1515.                 })
  1516.                 backgroundFlou.style.display = "none";
  1517.                 exitBtn.style.display = "none";
  1518.             })
  1519.         </script>
  1520. <script>
  1521. var counte = [];
  1522. $('#add_image').click(function () {
  1523. const index = + $('#widgets-counter').val();
  1524. var tab = this.dataset.target;
  1525. var valeur = tab + "_" + index;
  1526. if (counte.length < 3) {
  1527. counte.push(valeur);
  1528. const tmpl = $('#avis_imageComments').data('prototype').replace(/__name__/g, index);
  1529. $('#avis_imageComments').append(tmpl);
  1530. $('#widgets-counter').val(index + 1);
  1531. }
  1532. handleDeleteButtons();
  1533. })
  1534. function handleDeleteButtons() {
  1535. $('button[data-action="delete"]').click(function (event) {
  1536. event.preventDefault();
  1537. const target = this.dataset.target;
  1538. var num = counte.indexOf(target);
  1539. $(target).remove();
  1540. if (num != -1) {
  1541. counte.splice(num, 1);
  1542. }
  1543. });
  1544. }
  1545. function updateCounter() {
  1546. const count = + $('#comment_imageComment div.form-group').length;
  1547. $('#widgets-counter').val(count);
  1548. }
  1549. updateCounter();
  1550. handleDeleteButtons();
  1551. // OnFileValidation();
  1552. var previewPicture  = function (e) {
  1553.     // e.files contient un objet FileList
  1554.     const [picture] = e.files
  1555.     // "picture" est un objet File
  1556.     if (picture) {
  1557.         // On change l'URL de l'image
  1558.         document.getElementById("img_profil").src = URL.createObjectURL(picture)
  1559.     }
  1560. }
  1561.             </script>
  1562.         <script tite="gestion options front" src="{{ asset('js/gestion_option.js') }}">
  1563.         </script>
  1564.         <script>
  1565. $(document).ready(function () {
  1566.     $('.popup-youtube, .popup-vimeo, .popup-gmaps').magnificPopup({
  1567.         disableOn: 700,
  1568.         type: 'iframe',
  1569.         mainClass: 'mfp-fade',
  1570.         removalDelay: 160,
  1571.         preloader: false,
  1572.         fixedContentPos: false
  1573.     });
  1574. });
  1575. {# Moins Plus Qty #}
  1576. function wcqib_refresh_quantity_increments() {
  1577.     jQuery("div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)").each(function (a, b) {
  1578.         var c = jQuery(b);
  1579.         c.addClass("buttons_added"),
  1580.             c.children().first().before('<input type="button" value="-" class="minus" />'),
  1581.             c.children().last().after('<input type="button" value="+" class="plus" />')
  1582.     })
  1583. }
  1584. String.prototype.getDecimals || (String.prototype.getDecimals = function () {
  1585.     var a = this,
  1586.         b = ("" + a).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);
  1587.     return b ? Math.max(0, (b[1] ? b[1].length : 0) - (b[2] ? + b[2] : 0)) : 0
  1588. }),
  1589.     jQuery(document).ready(function () {
  1590.         wcqib_refresh_quantity_increments()
  1591.     }),
  1592.     jQuery(document).on("updated_wc_div", function () {
  1593.         wcqib_refresh_quantity_increments()
  1594.     }),
  1595.     jQuery(document).on("click", ".plus, .minus", function () {
  1596.         var a = jQuery(this).closest(".quantity").find(".qty"),
  1597.             b = parseFloat(a.val()),
  1598.             c = parseFloat(a.attr("max")),
  1599.             d = parseFloat(a.attr("min")),
  1600.             e = a.attr("step");
  1601.         b && "" !== b && "NaN" !== b || (b = 0),
  1602.             "" !== c && "NaN" !== c || (c = ""),
  1603.             "" !== d && "NaN" !== d || (d = 0),
  1604.             "any" !== e && "" !== e && void 0 !== e && "NaN" !== parseFloat(e) || (e = 1),
  1605.             jQuery(this).is(".plus") ? c && b >= c ? a.val(c) : a.val((b + parseFloat(e)).toFixed(e.getDecimals())) : d && b <= d ? a.val(d) : b > 0 && a.val((b - parseFloat(e)).toFixed(e.getDecimals())),
  1606.             a.trigger("change")
  1607.     });
  1608. {# Moins Plus Qty #}
  1609. if ($('#open-popup-images').length) {
  1610.     $('#open-popup-images').magnificPopup({
  1611.         items: [{% for photo in product.photos %}{
  1612.         src: "{{ asset(constant('App\\Services\\File::IMAGE_PRODUCT_DIR') ~ photo.url) }}",
  1613.         title: 'Photo ' + {{ loop.index }}
  1614.     },{% endfor %}],
  1615.         gallery: {
  1616.         enabled: true
  1617.     },
  1618.         type: 'image' // this is a default type
  1619.     });
  1620. }
  1621.         </script>
  1622.         <script>
  1623. window.addEventListener('load', (event) => {
  1624.     localStorage.clear();
  1625. });
  1626. function modiffOption(id_option,url) {
  1627.     console.log('zaaa',url);
  1628.     fetch(`${url}/option/${id_option}`)
  1629.     .then(response=> response.json())
  1630.     .then(data=>{
  1631.         
  1632.         $(".nice-select").attr("style", "display: none !important");
  1633.         $("#id_optionmodal").val(id_option);
  1634.         $("#name_optionmodal").val(data.options.name);
  1635.         $("#image_optionmodal").val(data.options.image1);
  1636.         var imageopt=`<img id="optionbtn1img" src="/upload/produits/${data.options.image1}">`;
  1637.         $("#optionsimage").html(imageopt);
  1638.         console.log('image',imageopt);
  1639.         console.log('subcates',data.options);
  1640.         console.log('olor',data.options.colorsOption);
  1641.         if ( typeof data.options.colorsOption != "undefined" && data.options.colorsOption != null && data.options.colorsOption.length != null && data.options.colorsOption.length > 0) {
  1642.             var colorso ="";
  1643.             for (let i = 0; i < data.options.colorsOption.length; i++) {
  1644.                 colorso +='<option>'+ data.options.colorsOption[i]+'</option>'
  1645.             }
  1646.             $("#optionscolor").html(colorso);
  1647.             $(".optionscolor").attr("style", "display: block !important");
  1648.             $("#optionscolor").attr("style", "display: block !important");
  1649.         }else{
  1650.             $(".optionscolor").attr("style", "display: none !important");
  1651.         }
  1652.         if (typeof data.options.format != "undefined" && data.options.format != null && data.options.format.length != null && data.options.format.length > 0) {
  1653.             var formatopt ="";
  1654.             for (let i = 0; i < data.options.format.length; i++) {
  1655.                 formatopt +='<option>'+data.options.format[i]+'</option>'
  1656.             }
  1657.             $("#optionsform").html(formatopt);
  1658.             $(".optionsform").attr("style", "display: block !important");
  1659.             $("#optionsform").attr("style", "display: block !important");
  1660.         }
  1661.         else{
  1662.             $(".optionsform").attr("style", "display: none !important");
  1663.         }
  1664.         if (typeof data.options.finition != "undefined" && data.options.finition != null && data.options.finition.length != null && data.options.finition.length > 0) {
  1665.             var finitions ="";
  1666.             for (let i = 0; i < data.options.finition.length; i++) {
  1667.                 finitions +='<option>'+data.options.finition[i]+'</option>'
  1668.             }
  1669.             $("#optionsfinition").html(finitions);
  1670.             $(".optionsfinition").attr("style", "display: block !important");
  1671.             $("#optionsfinition").attr("style", "display: block !important");
  1672.         }
  1673.         else{
  1674.             $(".optionsfinition").attr("style", "display: none !important");
  1675.         }
  1676.         if (typeof data.options.papier != "undefined" && data.options.papier != null && data.options.papier.length != null && data.options.papier.length > 0) {
  1677.             var papiers ="";
  1678.             for (let i = 0; i < data.options.papier.length; i++) {
  1679.                 papiers +='<option>'+data.options.papier[i]+'</option>'
  1680.             }
  1681.             $("#optionspapier").html(papiers);
  1682.             $(".optionspapier").attr("style", "display: block !important");
  1683.             $("#optionspapier").attr("style", "display: block !important");
  1684.         }
  1685.         else{
  1686.             $(".optionspapier").attr("style", "display: none !important");
  1687.         }
  1688.         if (typeof data.options.quantite != "undefined" && data.options.quantite != null && data.options.quantite.length != null && data.options.quantite.length > 0) {
  1689.             var quantites ="";
  1690.             for (let i = 0; i < data.options.quantite.length; i++) {
  1691.                 quantites +='<option>'+data.options.quantite[i]+'</option>'
  1692.             }
  1693.             $("#optionsquantite").html(quantites);
  1694.             $(".optionsquantite").attr("style", "display: block !important");
  1695.             $("#optionsquantite").attr("style", "display: block !important");
  1696.         }
  1697.         else{
  1698.             $(".optionsquantite").attr("style", "display: none !important");
  1699.         }
  1700.         if (typeof data.options.etiquette != "undefined" && data.options.etiquette != null && data.options.etiquette.length != null && data.options.etiquette.length > 0) {
  1701.             var etiquettes ="";
  1702.             for (let i = 0; i < data.options.etiquette.length; i++) {
  1703.                 etiquettes +='<option>'+data.options.etiquette[i]+'</option>'
  1704.             }
  1705.             $("#optionsetiquette").html(etiquettes);
  1706.             $(".optionsetiquette").attr("style", "display: block !important");
  1707.             $("#optionsetiquette").attr("style", "display: block !important");
  1708.         }
  1709.         else{
  1710.             $(".optionsetiquette").attr("style", "display: none !important");
  1711.         }
  1712.         if (typeof data.options.ruban != "undefined" && data.options.ruban != null && data.options.ruban.length != null && data.options.ruban.length > 0) {
  1713.             var rubans ="";
  1714.             for (let i = 0; i < data.options.ruban.length; i++) {
  1715.                 rubans +='<option>'+data.options.ruban[i]+'</option>'
  1716.             }
  1717.             $("#optionsruban").html(rubans);
  1718.             $(".optionsruban").attr("style", "display: block !important");
  1719.             $("#optionsruban").attr("style", "display: block !important");
  1720.         }
  1721.         else{
  1722.             $(".optionsruban").attr("style", "display: none !important");
  1723.         }
  1724.         
  1725.         $("#modalOption").modal("show");
  1726.             
  1727.     });
  1728.     
  1729. }
  1730. // function envoiGroupOption(params) {
  1731. //     console.log("io fa tonga");
  1732. //      var valeuroptions = localStorage.getItem('produit_option');
  1733. //     $("#storageGroupsOption").val(valeuroptions);
  1734. // }
  1735. function validemodaloption() {
  1736.     //$("#optionscolor").val();
  1737.      $("#modalOption").modal("hide");
  1738.     console.log($("#optionscolor").val(),$("#id_optionmodal").val());
  1739.      const data = {
  1740.             idoption: $("#id_optionmodal").val(),
  1741.             nomoption: $("#name_optionmodal").val(),
  1742.             imageoption: $("#image_optionmodal").val(),
  1743.             color: $("#optionscolor").val(),
  1744.             form: $("#optionsform").val(),
  1745.             finition: $("#optionsfinition").val(),
  1746.             papier: $("#optionspapier").val(),
  1747.             quantite: $("#optionsquantite").val(),
  1748.             etiquette: $("#optionsetiquette").val(),
  1749.             ruban: $("#optionsruban").val(),
  1750.         };
  1751.     //     let datas = new FormData();
  1752.     //   return  datas.append("data", JSON.stringify(data));
  1753.     
  1754.     localStorage.setItem($("#id_optionmodal").val(), JSON.stringify(data));
  1755. }
  1756. // Fonction afiches tous option
  1757. function voirtoutOption(id_product,url) {
  1758.     console.log('kokokoko',url);
  1759.     console.log('isID',id_product);
  1760.     // var id_product=314;
  1761.     $("#valeurOpion").html("");
  1762.     fetch(`${url}/tous-options-product/${id_product}`)
  1763.     .then(response=> response.json())
  1764.     .then(data=>{
  1765.         console.log('tous option', data);
  1766.         $("#valeurOpion").append(data);
  1767.     });
  1768.     
  1769. }
  1770. function validemodalgroupe() {
  1771. $("#modalOptionGP").modal("hide");
  1772.  var goption= document.getElementsByClassName('goption');
  1773.  var labels =new Array();
  1774.  for (let i = 0; i < goption.length; i++) {
  1775.     var id_goption = goption[i].id.split("_");
  1776.     var label= document.getElementsByClassName('label_'+id_goption[1]);
  1777.     var hidden= document.getElementsByClassName('hidden_'+id_goption[1]);
  1778.     var qte= document.getElementsByClassName('qte_'+id_goption[1]);
  1779.     
  1780.     // console.log('labeb',label);
  1781.     var compter=0;
  1782.     
  1783.      var lab =new Array();
  1784.      var qt =new Array();
  1785.     for (let l = 0; l < label.length; l++) {
  1786.        console.log('type', label[l].type);
  1787.          if (label[l].type=="checkbox" && label[l].checked) {
  1788.             
  1789.             lab[compter] = hidden[l].value;
  1790.             qt[compter] = qte[l].value;
  1791.             compter++
  1792.         }
  1793.         if (label[l].type=="select-one" && label[l].value != "") {    
  1794.             lab[compter] = label[l].value;
  1795.             qt[compter] = qte[l].value;
  1796.             compter++
  1797.         }
  1798.     }
  1799.     labels[i] = {idoption: id_goption[1], labelo: lab, qte: qt};
  1800.  }
  1801.     console.log('valin label',labels);
  1802.     
  1803.     localStorage.setItem('produit_option', JSON.stringify(labels));
  1804. }
  1805.         // Ajouter au panier
  1806. document.addEventListener('DOMContentLoaded', function () {
  1807.     if (!document.getElementById('form_add_bascket')) {
  1808.         return;
  1809.     }
  1810.     var form = document.getElementById('form_add_bascket');
  1811.     // var url = window.location.href.split('/');
  1812.     // var param_url = url[0]+'//'+url[2];
  1813.     // var checkOpt = document.querySelectorAll('.option-product');
  1814.     // var dataOptios = [];
  1815.     // for (var i = 0; i < checkOpt.length; i++) {
  1816.     // checkOpt[i].addEventListener('change', (option) => {
  1817.     //     // console.log('pppp',this);
  1818.     //     var idop = option.target.getAttribute('data-id');
  1819.     //     // console.log("izzz",param_url, idop);
  1820.     //     fetch(`${param_url}/option/${idop}`)
  1821.     //     .then(response=> response.json())
  1822.     //     .then(data=>{
  1823.     //         console.log('qqqqqq',data.options);
  1824.     //         console.log('nn',option.target.checked);
  1825.     //         if (option.target.checked) {
  1826.                 
  1827.     //             var dataOption={
  1828.     //                     idoption: data.options.id ? data.options.id : null,
  1829.     //                     nomoption: data.options.name ? data.options.name : null,
  1830.     //                     imageoption: data.options.image1 ? data.options.image1 : null,
  1831.     //                     color: data.options.colorsOption[0] ? data.options.colorsOption[0] : null,
  1832.     //                     form: data.options.format[0] ? data.options.format[0] : null,
  1833.     //                     finition: data.options.finition[0] ? data.options.finition[0] : null,
  1834.     //                     papier: data.options.papier[0] ? data.options.papier[0] : null,
  1835.     //                     quantite: data.options.quantite[0] ? data.options.quantite[0] : null,
  1836.     //                     etiquette: data.options.etiquette[0] ? data.options.etiquette[0] : null,
  1837.     //                     ruban: data.options.ruban[0] ? data.options.ruban[0] : null ,
  1838.     //                     }
  1839.     //             dataOptios.push(dataOption);
  1840.     //         }else{
  1841.     //             console.log('miala checked');
  1842.     //             console.log('donnée',dataOptios);
  1843.     //             for (let g = 0; g < dataOptios.length; g++) {    
  1844.     //                 if (dataOptios[g].idoption == idop) {
  1845.     //                     console.log('données_hita',dataOptios[g].idoption);
  1846.     //                 }
  1847.     //             }
  1848.     //         }
  1849.     //     });
  1850.     // })
  1851.     // }    
  1852.     
  1853.     form.addEventListener('submit', (e) => {
  1854.         e.preventDefault();
  1855.          let form = e.target;
  1856.         const formData = new FormData(form);
  1857.         // for (let h = 0; h < dataOptios.length; h++) {    
  1858.         //     //  formData.append("OpId_"+j, values[j]);
  1859.         //     //  console.log("valuo",values[j]);
  1860.         //     console.log('tonga_aty',dataOptios[h]);
  1861.         // }  
  1862.      var valeuroptions=localStorage.getItem('produit_option');
  1863.      localStorage.removeItem('produit_option');
  1864.      console.log("localstor", valeuroptions);
  1865.      formData.append("groupOption", valeuroptions);
  1866.     //  var table=[];
  1867.     //  for (let o = 0; o < valeuroptions.length; o++) {
  1868.     //     table[]= valeuroptions[o];    
  1869.     //  }
  1870.     //  console.log('valertab', table);
  1871.       if (Object.keys(localStorage).length != 0) {
  1872.         
  1873.           var values = [];
  1874.           keys = Object.keys(localStorage);
  1875.           i = keys.length;
  1876.   
  1877.           while ( i-- ) {
  1878.               values.push( localStorage.getItem(keys[i]) );
  1879.               localStorage.removeItem(keys[i]);
  1880.           }       
  1881.           formData.append("tail",values.length);
  1882.           
  1883.           for (let j = 0; j < values.length; j++) {    
  1884.              formData.append("OpId_"+j, values[j]);
  1885.              console.log("valuo",values[j]);
  1886.           }
  1887.       }
  1888.         fetch(form.action, {
  1889.             method: form.method,
  1890.             body: formData
  1891.         }).then(response => response.json())
  1892.         .then(data => {
  1893.             if (data.message === 'ok') {
  1894.                 if (data.response === 'added') {
  1895.                     const btnAdd = document.getElementById('btn_add');
  1896.                     btnAdd.classList.replace('btn-primary', 'btn-danger');
  1897.                     btnAdd.textContent = 'Supprimer du panier';
  1898.                     const msgElt = document.getElementById('message_form');
  1899.                     msgElt.classList.replace('text-danger', 'text-success');
  1900.                     msgElt.classList.add('text-center');
  1901.                     msgElt.textContent = 'Produit ajouté au panier !';
  1902.                     
  1903.                     let nbProducts = parseInt(document.getElementById('nb_basket').innerHTML);
  1904.                     nbProducts++;
  1905.                     document.getElementById('nb_basket').textContent = nbProducts;
  1906.                 } else if (data.response === 'removed') {
  1907.                     const btnAdd = document.getElementById('btn_add');
  1908.                     btnAdd.classList.replace('btn-danger', 'btn-primary');
  1909.                     btnAdd.textContent = 'Ajouter au panier';
  1910.                     const msgElt = document.getElementById('message_form');
  1911.                     msgElt.classList.replace('text-danger', 'text-success');
  1912.                     msgElt.classList.add('text-center');
  1913.                     msgElt.textContent = 'Produit supprimé du panier !';
  1914.                     let nbProducts = parseInt(document.getElementById('nb_basket').innerHTML);
  1915.                     nbProducts--;
  1916.                     document.getElementById('nb_basket').textContent = nbProducts;
  1917.                 } else if (data.response === 'error') {
  1918.                     const msgElt = document.getElementById('message_form');
  1919.                     msgElt.textContent = data.response;
  1920.                 }
  1921.             } else if (data.message === 'error') {
  1922.                 if (data.response === 'Quantité non disponible'){
  1923.                     const msgElt = document.getElementById('message_form');
  1924.                     msgElt.classList.replace('text-success', 'text-danger');
  1925.                     msgElt.classList.add('text-center');
  1926.                     msgElt.textContent = 'Quantité pas disponible';
  1927.                     return;
  1928.                 }
  1929.                 if (data.response === 'Quantité option non disponible') {
  1930.                     const msgElt = document.getElementById('message_form');
  1931.                     msgElt.classList.replace('text-success', 'text-danger');
  1932.                     msgElt.classList.add('text-center');
  1933.                     msgElt.textContent = 'Il y a une quantité d\'option pas disponible';
  1934.                     return;
  1935.                 }
  1936.             }
  1937.         });
  1938.         return false;
  1939.     })
  1940.     const btnWish = document.getElementById('btn_add_wish');
  1941.     if (btnWish) {
  1942.         btnWish.addEventListener('click', () => {
  1943.             fetch("{{ path('front_add_wish', {'id': product.id}) }}", { method: "POST" }).then(response => response.json()).then(data => {
  1944.                 if (data.message === 'ok') {
  1945.                     if (data.response === 'added') {
  1946.                         btnWish.style.color = '#fff';
  1947.                         btnWish.style.backgroundColor = '#ff4d4d';
  1948.                         document.getElementById('text_btn').textContent = "Supprimer";
  1949.                     } else if (data.response === 'removed') {
  1950.                         btnWish.style.color = '#ff4d4d';
  1951.                         btnWish.style.backgroundColor = '#fff';
  1952.                         document.getElementById('text_btn').textContent = "Ajouter";
  1953.                     }
  1954.                 }
  1955.             });
  1956.         })
  1957.     }
  1958. })
  1959.         </script>
  1960.         <script>
  1961. const formContact = document.getElementById('contactFormProduct');
  1962. formContact.addEventListener('submit', (e) => {
  1963. e.preventDefault();
  1964. let form = e.target;
  1965. const formData = new FormData(form);
  1966. fetch(form.action, {
  1967. method: form.method,
  1968. body: formData
  1969. }).then(response => response.json()).then(data => {
  1970. if (data.status === 'ok') {
  1971. document.getElementById('messageSuccessContact').style.display = 'block';
  1972. formContact.reset();
  1973. }
  1974. });
  1975. return false;
  1976. })
  1977.         </script>
  1978.         <script src="{{ asset('js/jquery.rateyo.min.js') }}"></script>
  1979.         <script>
  1980.             $(function () {
  1981. $("#rateYo1, #rateYo2, #rateYo3, #rateYo4, #rateYo5, #rateYo6 ").rateYo({rating: 3.6});
  1982. });
  1983. $("#rateYo1").rateYo().on("rateyo.change", function (e, data) {
  1984. var $rateYo = $("#rateYo1").rateYo("rating");
  1985. $('#avis_serviceQuality').val($rateYo);
  1986. });
  1987. $("#rateYo2").rateYo().on("rateyo.change", function (e, data) {
  1988. var $rateYo = $("#rateYo2").rateYo("rating");
  1989. $('#avis_fiability').val($rateYo);
  1990. });
  1991. $("#rateYo3").rateYo().on("rateyo.change", function (e, data) {
  1992. var $rateYo = $("#rateYo3").rateYo("rating");
  1993. $('#avis_price').val($rateYo);
  1994. });
  1995. $("#rateYo4").rateYo().on("rateyo.change", function (e, data) {
  1996. var $rateYo = $("#rateYo4").rateYo("rating");
  1997. $('#avis_speed').val($rateYo);
  1998. });
  1999. $("#rateYo5").rateYo().on("rateyo.change", function (e, data) {
  2000. var $rateYo = $("#rateYo5").rateYo("rating");
  2001. $('#avis_conformDescription').val($rateYo);
  2002. });
  2003. $("#rateYo6").rateYo().on("rateyo.change", function (e, data) {
  2004. var $rateYo = $("#rateYo6").rateYo("rating");
  2005. $('#avis_communication').val($rateYo);
  2006. });
  2007.         </script>
  2008.         {% set isService = false %}
  2009.         {% for productSubCategory in product.subCategories %}
  2010.             {% if productSubCategory.isService == true %}
  2011.                 {% set isService = true %}
  2012.             {% endif %}
  2013.         {% endfor %}
  2014.         {% if isService == true %}
  2015.             <!-- LOCATIONS -->
  2016.             {% set isLocation = false %}
  2017.             {% for singleCategory in product.subcategories %}
  2018.                 {% if singleCategory.name == "Location de salle" or singleCategory.name == "Location de vehicule"  %}
  2019.                     {% set isLocation = true %}
  2020.                 {% endif %}
  2021.             {% endfor %}
  2022.             {% if isLocation is defined %}
  2023.                 <!-- LOCATIONS -->
  2024.                 {% if isLocation == true or product.typeLocation is not null %}
  2025.                     {% set locations = [] %}
  2026.                     {% for location in product.locations %}
  2027.                         {#% if annonce.categorie.libelle != 'SERVICES' %#}
  2028.                         {#% Si la location est en attente ou si la location est acceptée, elle est ajoutée au tableau locations %#}
  2029.                             {% if location.isAccepted is same as(null) or location.isAccepted is same as(true)%}
  2030.                         {% set locations = locations|merge([{debut: location.startAt, fin: location.endAt, typeLocation: location.product.typeLocation ? location.product.typeLocation.label : "" }]) %}
  2031.                     {% endif %}
  2032.                         {#% else %}
  2033.                             {% set locations = locations|merge([{debut: location.dateDebut|date("d/m/Y H:i"), fin: location.dateFin|date("d/m/Y H:i"), statut: location.statutLocation.id }]) %}
  2034.                         {% endif %#}
  2035.                     {% endfor %}
  2036.                     <script>
  2037.                         const checkOptLocation = document.querySelectorAll('.cheklocationclass');
  2038.                         
  2039.                         for (var i = 0; i < checkOptLocation.length; i++) {
  2040.                             checkOptLocation[i].addEventListener('change', (option) => {
  2041.                                 if (option.target.checked) {
  2042.                                     const priceOptionre = option.target.getAttribute('data-price');
  2043.                                     console.log('yyyaaa',$("#totalPricese").html());
  2044.                                     var total= parseFloat($("#totalPricese").html()) + parseFloat(priceOptionre);
  2045.                                     $("#totalPricese").html(total);
  2046.                                 }else{
  2047.                                     const priceOptionre = option.target.getAttribute('data-price');
  2048.                                     var total= parseFloat($("#totalPricese").html()) - parseFloat(priceOptionre);
  2049.                                     $("#totalPricese").html(total);
  2050.                                 }
  2051.                             })
  2052.                         }
  2053.                     </script>
  2054.                     <script>
  2055.                         let locations = {{ locations|json_encode|raw }};
  2056.                     </script>
  2057.                     {% if product.typeLocation %}
  2058.                         {% if product.typeLocation.label == 'heure' %}
  2059.                             <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>
  2060.                             <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.8.1/baguetteBox.min.js"></script>
  2061.                             <script src="{{asset('/js/jquery.datetimepicker.full.js')}}"></script>
  2062.                             <script src="{{ asset('/js/calendrierLocationHeure.js') }}"></script>
  2063.                         {% else %}
  2064.                             <script src="{{ asset('/js/calendrierJours.js') }}"></script>
  2065.                         {% endif %}
  2066.                     {% else %}
  2067.                         <script src="{{ asset('/js/calendrierJours.js') }}"></script>
  2068.                     {% endif %}
  2069.                 {% endif %}
  2070.                 <!-- RESERVATIONS -->
  2071.                 {% if isLocation is same as(false) and product.typeLocation is null %}
  2072.                     {% set reservationsList = [] %}
  2073.                     {% for reservation in product.reservations %}
  2074.                         {% if reservation.isAccepted is same as(null) or reservation.isAccepted is same as(true)%}
  2075.                             {% set reservationsList = reservationsList|merge([{date_livraison: reservation.reservationPlannedAt}]) %}
  2076.                         {% endif %}
  2077.                     {% endfor %}
  2078.                      {# <script>
  2079.                         const checkOptResevatio = document.querySelectorAll('.chekboxclass');
  2080.                         // console.log('ffafffa', checkOptResevatio);
  2081.                         for (var i = 0; i < checkOptResevatio.length; i++) {
  2082.                             checkOptResevatio[i].addEventListener('change', (option) => {
  2083.                                 console.log('vvvvvvv', option.target.checked, parseFloat($("#totalPricere").html()));
  2084.                                 if (option.target.checked) {
  2085.                                     const priceOptionre = option.target.getAttribute('data-price');
  2086.                                     var total= parseFloat($("#totalPricere").html()) + parseFloat(priceOptionre);
  2087.                                     $("#totalPricere").html(total);
  2088.                                 }else{
  2089.                                     const priceOptionre = option.target.getAttribute('data-price');
  2090.                                     var total= parseFloat($("#totalPricere").html()) - parseFloat(priceOptionre);
  2091.                                     $("#totalPricere").html(total);
  2092.                                 }
  2093.                             })
  2094.                         }
  2095.                      </script> #}
  2096.                     <script>
  2097.                         let reservationsList = {{ reservationsList|json_encode|raw }};
  2098.                     </script>
  2099.                     <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment-with-locales.min.js"></script>
  2100.                     <script src="https://cdnjs.cloudflare.com/ajax/libs/baguettebox.js/1.8.1/baguetteBox.min.js"></script>
  2101.                     <script src="{{asset('/js/jquery.datetimepicker.full.js')}}"></script>
  2102.                     <script src="{{ asset('/js/calendrierReservation.js') }}"></script>
  2103.                 {% endif %}
  2104.             {% endif %}
  2105.         {% endif %}
  2106.     {% endblock %}