templates/front/cart/index.html.twig line 1

Open in your IDE?
  1. {% extends 'front/base_front.html.twig' %}
  2. {% block title %}{{ 'Pages.Cart.Label'|trans({}, 'messages_front') }}{% endblock %}
  3. {% block container %}
  4.     <section id="tour_booking_submission" class="section_padding">
  5.         <div class="container">
  6.             {% if cart is not null and cart.products is defined and  cart.products | length > 0 %}
  7.                 <form action="{{ path('app_shared_cart_pay') }}" id="myForm" method="post">
  8.                     <div class="row">
  9.                         <input type="hidden" id="name" class="form-control bg_input"
  10.                                placeholder="Name" name="name"
  11.                                value="{{ (customer!=null)?customer.name:'' }}"
  12.                         />
  13.                         <input type="hidden" name="phone" class="form-control bg_input" id="phone_customer"
  14.                                placeholder="Phone"
  15.                                value="{{ (customer!=null)?customer.phone:'' }}"
  16.                         />
  17.                         <input type="hidden" name="email" class="form-control bg_input"
  18.                                placeholder="Email"
  19.                                id="email"
  20.                                value="{{ (customer!=null)?customer.Email:'' }}"
  21.                         />
  22.                     </div>
  23.                     {{ include('front/_flash_content.html.twig') }}
  24.                     <div class="row">
  25.                         <div class="tour_details_right_sidebar_wrapper">
  26.                             <div class="tour_detail_right_sidebar">
  27.                                 <div class="tour_details_right_boxed">
  28.                                     <div class="tour_details_right_box_heading">
  29.                                         <h4>{{ 'Pages.Cart.Label'|trans({}, 'messages_front') }}</h4>
  30.                                     </div>
  31.                                     <div>
  32.                                         {% set userCurrency = app.session.get('userCurrency') %}
  33.                                         {% set exchangeRate = app.session.get('exchangeRate') ?? 1.0 %}
  34.                                         <table class="table mt-3">
  35.                                             <thead class="color_theme">
  36.                                             <tr>
  37.                                                 <th> {{ 'Entities.Product.Label'|trans }}</th>
  38.                                                 <th></th>
  39.                                                 <th> {{ 'Entities.Common.Fields.Amount'|trans }}</th>
  40.                                                 <th></th>
  41.                                             </tr>
  42.                                             </thead>
  43.                                             <tbody>
  44.                                             {% set subTotal = 0 %}
  45.                                             {% set cartAvailable = true %}
  46.                                             {% for key, line in cart.products %}
  47.                                                 {% set subTotal = subTotal + line.price %}
  48.                                                 <tr>
  49.                                                     <td>
  50.                                                         <img class="img-product-cart" src="{{ line.image }}"
  51.                                                              alt="{{ line.label }}"/>
  52.                                                     </td>
  53.                                                     <td>
  54.                                                         {% if line['module'] == 'Flight' %}
  55.                                                             {% include 'front/cart/_cart_flight_line.html.twig' %}
  56.                                                         {% else %}
  57.                                                                 {% if line['available']=="true" %}
  58.                                                                     <span class="alert-dispo">{{ 'Pages.Cart.Messages.Available'|trans({}, 'messages_front') }}</span>
  59.                                                                 {% else %}
  60.                                                                     {% set cartAvailable = false %}
  61.                                                                     <span class="alert-sur-demande">{{ 'Pages.Cart.Messages.OnDemand'|trans({}, 'messages_front') }}</span>
  62.                                                                 {% endif %}
  63.                                                                 <span><b>{{ line.label }}</b></span><br/>
  64.                                                         {% endif %}
  65.                                                         <ul>
  66.                                                             {% for element in line['elements'] %}
  67.                                                                 <li class="text-small row">
  68.                                                                     <div>
  69.                                                                         <i class="fa fa-angle-right"></i> {{ element["label"] }}
  70.                                                                         {% if "adultsCount" in element and element["adultsCount"] > 0 %}
  71.                                                                             {{ element["adultsCount"] }} ADT
  72.                                                                         {% endif %}
  73.                                                                         {% if "childrenCount" in element and  element["childrenCount"] > 0 %}
  74.                                                                             , {{ element["childrenCount"] }} ENF
  75.                                                                         {% endif %}
  76.                                                                     </div>
  77.                                                                     {#                                                                    {% elseif element.nbAdult is defined %} #}
  78.                                                                     {#                                                                        <div class="col-md-6"> #}
  79.                                                                     {#                                                                            {% if  element.nbAdult %} #}
  80.                                                                     {#                                                                                <div class="row"> #}
  81.                                                                     {#                                                                                    <div class="col-md-6"> #}
  82.                                                                     {#                                                                                        {{ element.nbAdult }} * <i #}
  83.                                                                     {#                                                                                                class="bi bi-person-fill"> </i> #}
  84.                                                                     {#                                                                                    </div> #}
  85.                                                                     {#                                                                                    <div class="col-md-6"> #}
  86.                                                                     {#                                                                                        {{ element.nbAdult * element.unitPriceAdult }} #}
  87.                                                                     {#                                                                                        <sup>{{ cart['currency'] }}</sup> #}
  88.                                                                     {#                                                                                    </div> #}
  89.                                                                     {#                                                                                </div> #}
  90.                                                                     {#                                                                            {% endif %} #}
  91.                                                                     {#                                                                            {% if element.nbChild >0 %} #}
  92.                                                                     {#                                                                                <div class="row"> #}
  93.                                                                     {#                                                                                    <div class="col-md-6"> #}
  94.                                                                     {#                                                                                        {{ element.nbChild }} * <i #}
  95.                                                                     {#                                                                                                class="fas fa-child"> </i> #}
  96.                                                                     {#                                                                                    </div> #}
  97.                                                                     {#                                                                                    <div class="col-md-6"> #}
  98.                                                                     {#                                                                                        {{ element.nbAdult * element.unitPriceChild }} #}
  99.                                                                     {#                                                                                        <sup>{{ cart['currency'] }}</sup> #}
  100.                                                                     {#                                                                                    </div> #}
  101.                                                                     {#                                                                                </div> #}
  102.                                                                     {#                                                                            {% endif %} #}
  103.                                                                     {#                                                                        </div> #}
  104.                                                                     {#                                                                    {% endif %} #}
  105.                                                                 </li>
  106.                                                             {% endfor %}
  107.                                                         </ul>
  108.                                                         {% if line["beneficiary"]["name"] %}
  109.                                                             <div class="text-muted">
  110.                                                                 <small>
  111.                                                                     {{ 'Pages.HotelOfferDetail.Messages.PrimaryGuest'|trans({}, 'messages_front') }}
  112.                                                                     : {{ line["beneficiary"]["name"] }}
  113.                                                                 </small>
  114.                                                             </div>
  115.                                                         {% endif %}
  116.                                                         {#                                                        {{ dump(line) }} #}
  117.                                                     </td>
  118.                                                     <td><b>{{ line.price | format_currency(cart['currency']) }}</b></td>
  119.                                                     <td>
  120.                                                         <a href="{{ path("app_shared_cart_delete", {idx: key}) }}">
  121.                                                             <i class="fa fa-trash"></i>
  122.                                                         </a>
  123.                                                     </td>
  124.                                                 </tr>
  125.                                             {% endfor %}
  126.                                             <tr style="color:#ed5b35; ">
  127.                                                 <th></th>
  128.                                                 <th class="text-end"> {{ 'Pages.Cart.Messages.Total'|trans({}, 'messages_front') }} </th>
  129.                                                 <th>
  130.                                                     {{ subTotal |number_format(3,'.',' ') }}
  131.                                                     <sup>{{ cart['currency'] }}</sup>
  132.                                                     {% if userCurrency != cart['currency'] %}
  133.                                                         <br>
  134.                                                         <span class="text-secondary">&thickapprox; {{ subTotal * exchangeRate | format_currency(userCurrency) }}</span>
  135.                                                     {% endif %}
  136.                                                 </th>
  137.                                                 <th></th>
  138.                                             </tr>
  139.                                             </tbody>
  140.                                         </table>
  141.                                     </div>
  142.                                 </div>
  143.                                 <div class="booking_tour_form mt-2">
  144.                                     <div class="tour_details_boxed" style="margin-top: 0;">
  145.                                         {% if customer.class == "CustomerPhysical" %}
  146.                                             {% if cartAvailable %}
  147.                                                 <h3>{{ 'Pages.Cart.Alerts.MessagePaymentMethod'|trans({} , 'messages_front') }} </h3>
  148.                                                 <div class="form-check">
  149.                                                     <input class="form-check-input" type="radio"
  150.                                                            name="paymentMode" id="paymentMode" required
  151.                                                            value="CreditCard"
  152.                                                     >
  153.                                                     <label class="form-check-label" for="flexRadioDefault1">
  154.                                                         {{ 'Pages.Cart.Fields.CreditCard'|trans({} , 'messages_front') }}
  155.                                                     </label>
  156.                                                 </div>
  157.                                                 <div class="form-check">
  158.                                                     <input class="form-check-input" type="radio" required
  159.                                                            name="paymentMode" id="paymentMode" value="Deferred">
  160.                                                     <label class="form-check-label" for="flexRadioDefault4">
  161.                                                         {{ 'Pages.Cart.Fields.DeferredPayment'|trans({} , 'messages_front') }}
  162.                                                         <small></small>
  163.                                                     </label>
  164.                                                 </div>
  165.                                                 <div class="row">
  166.                                                     <div class="col-md-9">
  167.                                                         <div class="form-check write_spical_check">
  168.                                                             <input class="form-check-input" type="checkbox" required
  169.                                                                    value="" id="acceptTerms"/>
  170.                                                             <label class="form-check-label" for="flexCheckDefaultf1">
  171.                                                 <span class="main_spical_check">
  172.                                                     <span>{{ 'Pages.Cart.Alerts.MessageAcceptAll'|trans({} , 'messages_front') }}
  173.                                                         <a target="_blank"
  174.                                                            href="{{ path('app_main_static_page', {slug : "conditions_de_vente"}) }}">
  175.                                                             {{ 'Pages.Cart.Alerts.TermsConditions'|trans({} , 'messages_front') }}</a>
  176.                                                     </span>
  177.                                                 </span>
  178.                                                             </label>
  179.                                                         </div>
  180.                                                     </div>
  181.                                                 </div>
  182.                                             {% else %}
  183.                                                 <div class="alert alert-warning">
  184.                                                     {{ 'Pages.Cart.Alerts.NotAvailableCart'|trans({}, 'messages_front') }}
  185.                                                 </div>
  186.                                             {% endif %}
  187.                                         {% endif %}
  188.                                         <div class="text-end">
  189.                                             <button type="submit" class="btn btn_theme"
  190.                                                     id="submitButton">{{ 'Entities.Common.Buttons.Confirm'|trans }}
  191.                                             </button>
  192.                                         </div>
  193.                                         <div class="row text-end mt-2">
  194.                                             <a href="{{ path('app_main') }}">{{ 'Pages.Cart.Messages.Continue'|trans({}, 'messages_front') }}</a>
  195.                                         </div>
  196.                                     </div>
  197.                                 </div>
  198.                             </div>
  199.                         </div>
  200.                     </div>
  201.                 </form>
  202.             {% else %}
  203.                 <div class="row">
  204.                     <div class="alert alert-danger alert-dismissible" role="alert">
  205.                         {{ 'Pages.Cart.Messages.EmptyCart'|trans({}, 'messages_front') }}
  206.                     </div>
  207.                     <div class="col-lg-6 offset-lg-3 col-md-12 col-sm-12 col-12">
  208.                         <div class="error_content text-center">
  209.                             <img src="{{ asset('assets/images/errors/empty_cart.png') }}" alt="img" width="300 px">
  210.                         </div>
  211.                     </div>
  212.                 </div>
  213.             {% endif %}
  214.         </div>
  215.     </section>
  216. {% endblock %}
  217. {% block javascripts_footer %}
  218.     {{ parent() }}
  219.     <script>
  220.         document.addEventListener("DOMContentLoaded", function () {
  221.             var phoneInput = document.getElementById("phone");
  222.             var phoneError = document.getElementById("phoneError");
  223.             var form = document.getElementById("myForm");
  224.             form.addEventListener("submit", function (event) {
  225.                 var phoneValue = phoneInput.value.trim();
  226.                 if (!isValidPhoneNumber(phoneValue)) {
  227.                     event.preventDefault(); // Prevent form submission
  228.                     phoneError.textContent = "Invalid phone number"; // Display error message
  229.                 } else {
  230.                     phoneError.textContent = ""; // Clear error message
  231.                 }
  232.             });
  233.             function isValidPhoneNumber(phone) {
  234.                 // Define your phone number validation pattern using a regular expression
  235.                 var phonePattern = /^\d{8}$/; // Example: Allows 8 digits
  236.                 return phonePattern.test(phone);
  237.             }
  238.         });
  239.     </script>
  240. {% endblock %}