src/Flexy/FrontBundle/Themes/CoWorking/templates/reservation/reservation-meeting-next.html.twig line 1
{% extends '@Flexy/FrontBundle/Themes/CoWorking/templates/layout.html.twig' %}{% block stylesheets %}{{ parent() }}<link rel="stylesheet" href="{{ asset('themes/coworking/css/reservation.css') }}" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.css" /><style>.card{box-shadow: rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px ;}.custom-tooltip .tooltip-inner {background-color: #fff; /* Remplacez #ff0000 par la couleur de votre choix */text-align: left;color: #000; /* Couleur du texte à l'intérieur de l'info-bulle */}/* Tooltip */.tooltip {background-color: #fff; /* Couleur de fond */color: #fff; /* Couleur du texte */border: 1px solid #fff; /* Bordure */border-radius: 4px; /* Coins arrondis */padding: 5px 10px; /* Espacement intérieur */font-size: 13px; /* Taille de la police */box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.2); /* Ombre */}/* Tooltip - flèche */.tooltip .arrow::before {border-top-color: #fff; /* Couleur de fond */}/* Tooltip - position */.tooltip.top {margin-top: -3px; /* Positionnement par rapport à l'élément parent */}.menu {display: flex;justify-content: space-around;}h5 {color: #7b7b7b !important;}.category {flex: 1;margin: 0 10px;border: 1px solid #ccc;border-radius: 5px;padding: 10px;}h2 {font-size: 13px;margin-bottom: 5px;padding: 5px;}.menu .category ul {list-style-type: none;padding: 0;}.menu .category li {margin-bottom: 5px;font-size: 12px; /* Taille de police légèrement augmentée */}/* Style additionnel pour un meilleur aspect */.menu {background-color: #f9f9f9;padding: 20px;border-radius: 10px;}.category {background-color: #fff;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);}.list-group li {font-size: 11px;color: #333;}/* Ajout de styles de survol pour un effet interactif */.list-group li:hover {color: #FFCB00 !important; /* Changement de couleur au survol */cursor: pointer; /* Curseur de la souris en pointeur */}/* Animation de survol */.list-group li:hover {transform: scale(1.1); /* Agrandissement au survol */transition: transform 0.2s ease; /* Transition fluide */}.form-control {border-radius: 9px;padding: 0px !important}.form-check {min-height: 1.9rem !important;}.modal-backdrop.fade.show {display: none;}/* css checkbox*//* hide checkbox */input[type="checkbox"] {display: none;}/* if checkbox is checked, then do these things */input[type="checkbox"]:checked + label {color: white;background:#FFD86E;border-radius: 5px;padding: 0px 10px 0px 10px;}/* styles when hovering over options */label:hover {cursor: pointer;/* transitions and animations */-webkit-transition: color .5s ease;-moz-transition: color .5s ease;-ms-transition: color .5s ease;-o-transition: color .5s ease;transition: color .5s ease;}.boutton-step{padding:10px;text-decoration:none;width:230px;font-size: 12px;font-family: 'PT Sans', sans-serif;letter-spacing:2px;}input.button {width:130px;height:50px;margin: 20px 0 30px 0;padding: 0px 20px 0px 20px;background: #e6e6e6;border-radius:5px;border: 1px solid #ccc;font-family: OpenSans, sans-serif;font-size:16pt;color:#444;}.Addons label{font-size:12px !important;font-family: 'roboto';font-weight: 500;border: 1px solid #80808024;margin: 2px;padding: 0px 5px 0px 5px;border-radius: 5px;}.multistep-container .active-button li:not(:first-child) .round-btn:before {position: absolute;content: '';width: 141px;height: 3px;background-color: #E9F2FA;left: -120px;}.multistep-container .active-button li {display: inline-block;width: 140px;}.form-check {line-height: 22px;}.col-md-12.col-lg-12.col-sm-12.d-flex.justify-content-end.align-items-end.mb-3{flex: 0 0 86%;}p.badge.badge-light {background-color: black;}li.etape1:before {background: #7ED670 !important; /* Change the background color */color: white !important;}.titre-page{margin-top:10px;font-size: 20px;line-height:45.29px;color: #000000;}.radio-buttons {display: flex;}.radio-buttons input[type="radio"] {display: none;}.radio-buttons label {display: block;margin-right: 40px;cursor: pointer;}.radio-buttons label img {border-radius: 10px;width: 100px;height: 110px;box-shadow: rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px;}.radio-buttons input[type="radio"]:checked + label img {border: 2px solid #FFCB00 ; /* Style pour indiquer la sélection, vous pouvez personnaliser */}.form-select{width: 100% !important;}.custom-radio {padding-right: 20px; /* Ajoutez le padding ici */}</style>{% endblock %}{% block body %}<img src="{{asset('themes/coworking/front/images/sallereunion.jpg')}}" style="width: 100%;height: 520px;" class="img-fluid" /><div class="container"><div class="row justify-content-between"><div class="col-sm-8 reservation-steeps"><div class="row"><div class="col-sm-8"><h6 class="titre-page">Réservation</h6></div><div class="col-sm-4" style="margin-top:10px;"><a href="/themes/coworking/front/images/prixSalles.pdf" class="btn-res text-center text-light text-uppercase bg-dark" style="float: right;padding: 8px;border-radius: 6px;font-size:13px;" target="_blank"> NOS TARIFS</a></div></div><div class="container"><div class="container d-flex justify-content-center align-items-center"><ul id="progressbar"><li class="etape1"> <span> Type</span> </li><li class="active" > Formule + extra </li><li> Dates</li><li> Confirmation</li></ul></div><div class="col-xl-12" style="top: 20px;"><div class="multistep-container"><div class="mutistep-form-area"><div class="form-box"><div class="container" ><div id="form-attribue" style="line-height: 20px;" class="mt-4"><div class="form-check"><input class="form-check-input" type="radio" name="choix" id="repas_demande" value="repas"><label class="form-check-label" for="repas_demande"><h5 style="font-weight:bold; margin-top: 2px;" >Voulez-vous choisir un extra ?</h5></label></div><div class="container"><div class="row"><div class="col-md-4"><div class="card">{% for break in breakfast %}{%if break.photo is not empty %}<img style="widh:100%" src="{{asset('/uploads/coworking/' ~ break.photo )}}" class="card-img-top" alt="Breakfast Image">{% endif %}{% endfor %}<div ><ul class="list-group">{% for break in breakfast %}<li class="list-group-item" data-placement="top" data-toggle="tooltip" title="<b>{{ break.type }}</b><br>{{ break.description|raw|nl2br }}"> {{ break.name }}</li>{% endfor %}</ul></div></div></div><div class="col-md-4"><div class="card">{% for lun in lunch %}{%if lun.photo is not empty %}<img style="widh:100%" src="{{asset('/uploads/coworking/' ~ lun.photo )}}" class="card-img-top" alt="Lunch Image">{% endif %}{% endfor %}<ul class="list-group">{% for lun in lunch %}<li class="list-group-item" data-placement="top" data-toggle="tooltip" title="<b>{{ lun.type }}</b><br> {{lun.description|raw|nl2br}}">{{ lun.name }}</li>{% endfor %}</ul></div></div><div class="col-md-4"><div class="card">{% for after in afternoonBreak %}{%if after.photo is not empty %}<img style="widh:100%" src="{{asset('/uploads/coworking/' ~ after.photo )}}" class="card-img-top" alt="Lunch Image">{% endif %}{% endfor %}<ul class="list-group">{% for after in afternoonBreak %}<li class="list-group-item" data-placement="top" data-toggle="tooltip" title="<b>{{ after.type }}</b> <br> {{ after.description|raw|nl2br }}">{{ after.name }}</li>{% endfor %}</ul></div></div></div></div><div class="form-group" style="margin-top: 10px;"><div id="repas" style="padding: 0 20px !important;"><div class="row"><div class="col-md-6"><div class="form-group"><label for="select_repas_matin">Pause matin</label><select class="form-select" id="select_repas_matin" name="select_repas_matin" disabled><option value="">Choisissez un repas pour le matin</option>{% for break in breakfast %}<option data-id="{{break.id}}" value="{{break.price}}">{{break.name}} ({{break.price}} DH)</option>{% endfor %}</select></div></div><div class="col-md-6"><div class="form-group" id="quantity_input" style="display: none;"><label for="quantity"><small>Quantité </small></label><input type="number" class="form-control" id="quantity" name="quantity" min="0" style="width: 50px;"></div><div id="total_price" style="display: none;"><span class="badge badge-light">Total : <span id="total_amount" class="total-amount"></span> DH</span></div></div></div><div class="row"><div class="col-md-6"><div class="form-group"><label for="select_repas_dejeuner"> Déjeuner </label><select class="form-select" id="select_repas_dejeuner" name="select_repas_dejeuner" disabled><option value="">Choisissez un repas pour le déjeuner </option>{% for lun in lunch %}<option data-id="{{lun.id}}" value="{{lun.price}}">{{lun.name}} ({{lun.price}} DH)</option>{% endfor %}</select></div></div><div class="col-md-6"><div class="form-group" id="quantity_dejeune" style="display: none;" ><label for="quantity"><small>Quantité </small></label><input type="number" class="form-control" id="quantity_input_dejeuner" name="quantity_input_dejeuner" min="0" style="width: 50px;"></div><div id="total_price_dejeune" style="display: none;"><span class="badge badge-light">Total : <span id="total_amount_dejeune" class="total-amount"></span> DH</span></div></div></div><div class="row"><div class="col-md-6"><div class="form-group"><label for="select_repas_apres_midi"> Pause après-midi </label><select class="form-select" id="select_repas_apres_midi" name="select_repas_apres_midi" disabled><option value="">Choisissez un repas pour la pause après-midi </option>{% for after in afternoonBreak %}<option data-id="{{after.id}}" value="{{after.price}}">{{after.name}} ({{after.price}} DH)</option>{% endfor %}</select></div></div><div class="col-md-6"><div class="form-group" id="quantity_input_apres" style="display: none;" ><label for="quantity"><small>Quantité</small></label><input type="number" class="form-control" id="quantity_apres" name="quantity_apres" min="0" style="width: 50px;"></div><div id="total_price_apres" style="display: none;"><span class="badge badge-light">Total : <span id="total_amount_apres" class="total-amount"></span> DH</span></div></div><div class="col-md-6"></div><div id="total_sum_section" class="col-md-6"><p class="badge badge-light">Total : <span id="total_sum"></span> DH</p></div></div></div><div class="form-check mt-4"><input class="form-check-input" type="radio" name="choix" value="demande"><label class="form-check-label" for="repas_demande"><h5 style="font-weight:bold; " >Non merci </h5></label></div></div></form></div></div><div class="button-row"><form action="{{path('reservationstep2',{id:id})}}" id="myForm" method="GET" data-turbo="false"><input type="hidden" name="days" id="formule_" value="{{ days }}"/><input type="hidden" name="Plage" id="horaire_" value="{{ Plage }}"/><input type="hidden" name="amount_extra" id="amount_extra" value=""/><input type="hidden" name="id_extra" id="id_extra" value=""/><input type="hidden" name="time" id="time_" value="{{ time }}"/><input type="hidden" name="device" id="device_" value="{{ device }}"/><input type="hidden" name="nbrApproximatif" id="nbrApproximatif" value="{{ nbrApproximatif }}"/><a href="javascript:void(0)" onclick="history.back()" style="border:1px solid #FFCB00 !important; color:black !important;background: #ffff !important;" class="btn-res text-center text-light text-uppercase bg-dark ReserveNext__ boutton-step" >Étape précédente</a> <button type="submit" class="btn-res text-center text-light text-uppercase bg-dark ReserveNext__" style="background: #FFCB00 !important;padding:5px; border: none; text-decoration:none; width:177px; font-size:12px; font-family:'PT Sans', sans-serif; letter-spacing:2px;">Étape suivante</button></form></div></div></div></div></div></div></div><div class="col-sm-4 reservation-steeps-panier" style="overflow-y: auto;">{{render(path("ajax_cart"))}}</div></div></div>{% endblock %}{% block javascripts %}<!-- MAIN CONTENT --><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script><script>$(document).ready(function(){$('#myForm').on('submit', function(event) {if (!$('input[name="choix"]:checked').length) {alert('Veuillez sélectionner une option.');event.preventDefault();}});$('[data-toggle="tooltip"]').tooltip({placement: 'top', // Position de l'info-bulletrigger: 'hover', // Déclencheur de l'info-bulledelay: { "show": 500, "hide": 100 }, // Délai d'affichage et de masquage en millisecondeshtml: true, // Autoriser le contenu HTML dans l'info-bulletemplate: '<div class="tooltip custom-tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>' // Utilisation d'un modèle personnalisé pour l'info-bulle});$('body').on("click",".delete-cart-item",function() {var idProduct = $(this).attr("data-id");var price = $(this).attr("data-price");var name = $(this).attr("data-name");var actionType = "remove";$.ajax({url:"{{path('ajax_cart')}}",data:{idProduct:idProduct,price:price,name:name,actionType:actionType},success:function(result){console.log(result);$(".reservation-steeps-panier").html(result);}});});// Fonction de mise à jour du prix total pour le repas du matin$('#select_repas_matin, #quantity').change(function() {if ($(this).val() === "0") {$('#select_repas_matin').val("");}updateTotalPrice('#select_repas_matin', '#quantity', '#total_amount', '#total_price');calculateTotalSum();updateIdExtra(); // Mettre à jour l'ID extra});// Fonction de mise à jour du prix total pour le repas du déjeuner$('#select_repas_dejeuner, #quantity_input_dejeuner').change(function() {if ($(this).val() === "0") {$('#select_repas_dejeuner').val(""); // Réinitialiser la sélection si la quantité est 0}updateTotalPrice('#select_repas_dejeuner', '#quantity_input_dejeuner', '#total_amount_dejeune', '#total_price_dejeune');calculateTotalSum();updateIdExtra(); // Mettre à jour l'ID extra});// Fonction de mise à jour du prix total pour la pause de l'après-midi$('#select_repas_apres_midi, #quantity_apres').change(function() {updateTotalPrice('#select_repas_apres_midi', '#quantity_apres', '#total_amount_apres', '#total_price_apres');calculateTotalSum();updateIdExtra(); // Mettre à jour l'ID extra});function updateIdExtra() {var selectedIds = [];$('#select_repas_dejeuner, #select_repas_matin , #select_repas_apres_midi').each(function() {var selectedOption = $(this).find(':selected');if (selectedOption.length > 0) {var dataId = selectedOption.data('id');selectedIds.push(dataId);}});$('#id_extra').val(selectedIds.join(',')); // Mettre à jour la valeur de l'input caché avec les data-ids séparés par une virgule}// Fonction de mise à jour du prix totalfunction updateTotalPrice(selectElement, quantityElement, totalAmountElement, totalPriceElement) {var selectedOptionValue = parseInt($(selectElement).val());var quantity = parseInt($(quantityElement).val());if (!isNaN(selectedOptionValue) && !isNaN(quantity)) {var totalPrice = selectedOptionValue * quantity;$(totalAmountElement).text(totalPrice);$(totalPriceElement).show();} else {$(totalPriceElement).hide();}}// Fonction de calcul de la somme totalefunction calculateTotalSum() {var totalSum = 0;$('.total-amount').each(function() {var amount = parseInt($(this).text());if (!isNaN(amount)) {totalSum += amount;}});$('#total_sum').text(totalSum);$('#amount_extra').val(totalSum);}// Écouter le changement de la sélection pour le repas du matin$('#repas_demande').change(function() {if ($(this).is(':checked')) {$('#quantity_input').show();$('#select_repas_matin').prop('disabled', false);} else {$('#quantity_input').hide();$('#select_repas_matin').prop('disabled', true);$('#total_price').hide();}});// Écouter le changement de la sélection pour le déjeuner$('#repas_demande').change(function() {if ($(this).is(':checked')) {$('#quantity_dejeune').show();$('#select_repas_dejeuner').prop('disabled', false);} else {$('#quantity_input_dejeuner').hide();$('#select_repas_dejeuner').prop('disabled', true);$('#total_price_dejeune').hide();}});// Écouter le changement de la sélection pour l'après-midi$('#repas_demande').change(function() {if ($(this).is(':checked')) {$('#quantity_input_apres').show();$('#select_repas_apres_midi').prop('disabled', false);} else {$('#quantity_input_apres').hide();$('#select_repas_apres_midi').prop('disabled', true);$('#total_price_apres').hide();}});$('input[name="choix"]').change(function(){if($(this).val() == "demande"){$('#select_repas_apres_midi').prop('selectedIndex', 0);$('#select_repas_dejeuner').prop('selectedIndex', 0);$('#select_repas_matin').prop('selectedIndex', 0);$('#quantity').val(0);$('#quantity_input_dejeuner').val(0);$("#quantity_apres").val(0);$("#total_amount").text(0);$("#total_amount_dejeune").text(0);$("#total_amount_apres").text(0);$("#total_sum").text(0);$("#amount_extra").val(0);$("#select_repas_matin").prop('disabled', true);$("#select_repas_dejeuner").prop('disabled', true);$("#select_repas_apres_midi").prop('disabled', true);}else if($(this).val() == "non"){$('#select_repas_apres_midi').prop('selectedIndex', 0);$('#select_repas_dejeuner').prop('selectedIndex', 0);$('#select_repas_matin').prop('selectedIndex', 0);$('#quantity').val(0);$('#quantity_input_dejeuner').val(0);$("#quantity_apres").val(0);$("#total_amount").text(0);$("#total_amount_dejeune").text(0);$("#total_amount_apres").text(0);$("#total_sum").text(0);$("#amount_extra").val(0);$("#select_repas_matin").prop('disabled', true);$("#select_repas_dejeuner").prop('disabled', true);$("#select_repas_apres_midi").prop('disabled', true);}else if($(this).val() == "repas"){$("#select_repas_matin").prop('disabled', false);$("#select_repas_dejeuner").prop('disabled', false);$("#select_repas_apres_midi").prop('disabled', false);}});/*$('input[name="repas"]').change(function(){if($(this).val() === 'pause_matin') {// $("#select_repas_matin").val($('option:nth-child(1)').prop('selected', true));$("#select_repas_matin").prop('disabled', false);$("#select_repas_dejeuner").prop('disabled', true);$("#select_repas_apres_midi").prop('disabled', true);} else if($(this).val() == 'dejeuner') {// $("#select_repas_dejeuner").val($('option:nth-child(1)').prop('selected', true));$("#select_repas_dejeuner").prop('disabled', false);$("#select_repas_matin").prop('disabled', true);$("#select_repas_apres_midi").prop('disabled', true);} else if($(this).val() == 'pause_apres_midi') {// $("#select_repas_apres_midi").val($('option:nth-child(1)').prop('selected', true));$("#select_repas_apres_midi").prop('disabled', false);$("#select_repas_dejeuner").prop('disabled', true);$("#select_repas_matin").prop('disabled', true);}});*/function updateSession() {let meals = {breakfast: {name: $("#select_repas_matin option:selected").text(),price: $("#select_repas_matin").val(),quantity: $("#quantity").val() || 0},lunch: {name: $("#select_repas_dejeuner option:selected").text(),price: $("#select_repas_dejeuner").val(),quantity: $("#quantity_input_dejeuner").val() || 0},afternoonBreak: {name: $("#select_repas_apres_midi option:selected").text(),price: $("#select_repas_apres_midi").val(),quantity: $("#quantity_apres").val() || 0}};// Envoi des données à Symfony via AJAX$.ajax({url: "{{path('save_meals_session')}}",type: "POST",contentType: "application/json",data: JSON.stringify(meals),success: function (response) {console.log("Session updated", response);},error: function (xhr, status, error) {console.error("Error:", error);}});}// Écoute des changements sur les sélections de repas$("#select_repas_matin, #quantity, #select_repas_dejeuner, #quantity_input_dejeuner, #select_repas_apres_midi, #quantity_apres").on("change", updateSession);});</script>{% endblock %}