{% extends 'front/base_front.html.twig' %}{% block title %}{{ 'Pages.Cart.Label'|trans({}, 'messages_front') }}{% endblock %}{% block container %} <section id="tour_booking_submission" class="section_padding"> <div class="container"> {% if cart is not null and cart.products is defined and cart.products | length > 0 %} <form action="{{ path('app_shared_cart_pay') }}" id="myForm" method="post"> <div class="row"> <input type="hidden" id="name" class="form-control bg_input" placeholder="Name" name="name" value="{{ (customer!=null)?customer.name:'' }}" /> <input type="hidden" name="phone" class="form-control bg_input" id="phone_customer" placeholder="Phone" value="{{ (customer!=null)?customer.phone:'' }}" /> <input type="hidden" name="email" class="form-control bg_input" placeholder="Email" id="email" value="{{ (customer!=null)?customer.Email:'' }}" /> </div> {{ include('front/_flash_content.html.twig') }} <div class="row"> <div class="tour_details_right_sidebar_wrapper"> <div class="tour_detail_right_sidebar"> <div class="tour_details_right_boxed"> <div class="tour_details_right_box_heading"> <h4>{{ 'Pages.Cart.Label'|trans({}, 'messages_front') }}</h4> </div> <div> {% set userCurrency = app.session.get('userCurrency') %} {% set exchangeRate = app.session.get('exchangeRate') ?? 1.0 %} <table class="table mt-3"> <thead class="color_theme"> <tr> <th> {{ 'Entities.Product.Label'|trans }}</th> <th></th> <th> {{ 'Entities.Common.Fields.Amount'|trans }}</th> <th></th> </tr> </thead> <tbody> {% set subTotal = 0 %} {% set cartAvailable = true %} {% for key, line in cart.products %} {% set subTotal = subTotal + line.price %} <tr> <td> <img class="img-product-cart" src="{{ line.image }}" alt="{{ line.label }}"/> </td> <td> {% if line['module'] == 'Flight' %} {% include 'front/cart/_cart_flight_line.html.twig' %} {% else %} {% if line['available']=="true" %} <span class="alert-dispo">{{ 'Pages.Cart.Messages.Available'|trans({}, 'messages_front') }}</span> {% else %} {% set cartAvailable = false %} <span class="alert-sur-demande">{{ 'Pages.Cart.Messages.OnDemand'|trans({}, 'messages_front') }}</span> {% endif %} <span><b>{{ line.label }}</b></span><br/> {% endif %} <ul> {% for element in line['elements'] %} <li class="text-small row"> <div> <i class="fa fa-angle-right"></i> {{ element["label"] }} {% if "adultsCount" in element and element["adultsCount"] > 0 %} {{ element["adultsCount"] }} ADT {% endif %} {% if "childrenCount" in element and element["childrenCount"] > 0 %} , {{ element["childrenCount"] }} ENF {% endif %} </div> {# {% elseif element.nbAdult is defined %} #} {# <div class="col-md-6"> #} {# {% if element.nbAdult %} #} {# <div class="row"> #} {# <div class="col-md-6"> #} {# {{ element.nbAdult }} * <i #} {# class="bi bi-person-fill"> </i> #} {# </div> #} {# <div class="col-md-6"> #} {# {{ element.nbAdult * element.unitPriceAdult }} #} {# <sup>{{ cart['currency'] }}</sup> #} {# </div> #} {# </div> #} {# {% endif %} #} {# {% if element.nbChild >0 %} #} {# <div class="row"> #} {# <div class="col-md-6"> #} {# {{ element.nbChild }} * <i #} {# class="fas fa-child"> </i> #} {# </div> #} {# <div class="col-md-6"> #} {# {{ element.nbAdult * element.unitPriceChild }} #} {# <sup>{{ cart['currency'] }}</sup> #} {# </div> #} {# </div> #} {# {% endif %} #} {# </div> #} {# {% endif %} #} </li> {% endfor %} </ul> {% if line["beneficiary"]["name"] %} <div class="text-muted"> <small> {{ 'Pages.HotelOfferDetail.Messages.PrimaryGuest'|trans({}, 'messages_front') }} : {{ line["beneficiary"]["name"] }} </small> </div> {% endif %} {# {{ dump(line) }} #} </td> <td><b>{{ line.price | format_currency(cart['currency']) }}</b></td> <td> <a href="{{ path("app_shared_cart_delete", {idx: key}) }}"> <i class="fa fa-trash"></i> </a> </td> </tr> {% endfor %} <tr style="color:#ed5b35; "> <th></th> <th class="text-end"> {{ 'Pages.Cart.Messages.Total'|trans({}, 'messages_front') }} </th> <th> {{ subTotal |number_format(3,'.',' ') }} <sup>{{ cart['currency'] }}</sup> {% if userCurrency != cart['currency'] %} <br> <span class="text-secondary">≈ {{ subTotal * exchangeRate | format_currency(userCurrency) }}</span> {% endif %} </th> <th></th> </tr> </tbody> </table> </div> </div> <div class="booking_tour_form mt-2"> <div class="tour_details_boxed" style="margin-top: 0;"> {% if customer.class == "CustomerPhysical" %} {% if cartAvailable %} <h3>{{ 'Pages.Cart.Alerts.MessagePaymentMethod'|trans({} , 'messages_front') }} </h3> <div class="form-check"> <input class="form-check-input" type="radio" name="paymentMode" id="paymentMode" required value="CreditCard" > <label class="form-check-label" for="flexRadioDefault1"> {{ 'Pages.Cart.Fields.CreditCard'|trans({} , 'messages_front') }} </label> </div> <div class="form-check"> <input class="form-check-input" type="radio" required name="paymentMode" id="paymentMode" value="Deferred"> <label class="form-check-label" for="flexRadioDefault4"> {{ 'Pages.Cart.Fields.DeferredPayment'|trans({} , 'messages_front') }} <small></small> </label> </div> <div class="row"> <div class="col-md-9"> <div class="form-check write_spical_check"> <input class="form-check-input" type="checkbox" required value="" id="acceptTerms"/> <label class="form-check-label" for="flexCheckDefaultf1"> <span class="main_spical_check"> <span>{{ 'Pages.Cart.Alerts.MessageAcceptAll'|trans({} , 'messages_front') }} <a target="_blank" href="{{ path('app_main_static_page', {slug : "conditions_de_vente"}) }}"> {{ 'Pages.Cart.Alerts.TermsConditions'|trans({} , 'messages_front') }}</a> </span> </span> </label> </div> </div> </div> {% else %} <div class="alert alert-warning"> {{ 'Pages.Cart.Alerts.NotAvailableCart'|trans({}, 'messages_front') }} </div> {% endif %} {% endif %} <div class="text-end"> <button type="submit" class="btn btn_theme" id="submitButton">{{ 'Entities.Common.Buttons.Confirm'|trans }} </button> </div> <div class="row text-end mt-2"> <a href="{{ path('app_main') }}">{{ 'Pages.Cart.Messages.Continue'|trans({}, 'messages_front') }}</a> </div> </div> </div> </div> </div> </div> </form> {% else %} <div class="row"> <div class="alert alert-danger alert-dismissible" role="alert"> {{ 'Pages.Cart.Messages.EmptyCart'|trans({}, 'messages_front') }} </div> <div class="col-lg-6 offset-lg-3 col-md-12 col-sm-12 col-12"> <div class="error_content text-center"> <img src="{{ asset('assets/images/errors/empty_cart.png') }}" alt="img" width="300 px"> </div> </div> </div> {% endif %} </div> </section>{% endblock %}{% block javascripts_footer %} {{ parent() }} <script> document.addEventListener("DOMContentLoaded", function () { var phoneInput = document.getElementById("phone"); var phoneError = document.getElementById("phoneError"); var form = document.getElementById("myForm"); form.addEventListener("submit", function (event) { var phoneValue = phoneInput.value.trim(); if (!isValidPhoneNumber(phoneValue)) { event.preventDefault(); // Prevent form submission phoneError.textContent = "Invalid phone number"; // Display error message } else { phoneError.textContent = ""; // Clear error message } }); function isValidPhoneNumber(phone) { // Define your phone number validation pattern using a regular expression var phonePattern = /^\d{8}$/; // Example: Allows 8 digits return phonePattern.test(phone); } }); </script>{% endblock %}