src/Flexy/FrontBundle/Themes/CoWorking/templates/reservation/reservation-offices-step.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>
.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;
}
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%;
}
@media (max-width:767px) {
html, body {
overflow-x: hidden !important;
}
body {
position: relative !important;
}
.col-sm-8.reservation-steeps {
padding:0%;
}
.multistep-container .mutistep-form-area .form-box{
position: relative;
top: 33px;
left: 0px;
}
.multistep-container .active-button li{
display: inline-block;
width: 100px;
}
.panel-sticky{
font-size:12px;
}
h6.display-6.header-steeps {
margin-left: 3%;
}
h6.datetime{
margin-left: 3%;
}
a#seeDetails {
margin-bottom: -11%;
}
a#seePrice {
float: right;
margin-right: 52%;
}
}
li.etape1:before {
background: #7ED670 !important; /* Change the background color */
color: white !important;
}
.message {
color: white;
background: rgb(199, 200, 204);
font-size: 15px;
padding: 20px;
border-radius: 10px;
text-align: center;
font-weight: bold;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
height: 100px; /* Adjust the height as necessary */
display: flex;
align-items: center;
justify-content: center;
}
</style>
{% endblock %}
{% block body %}
<img src="{{asset('themes/coworking/front/images/office.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 style="margin-top:10px">Réservation
{% set displayed_categories = [] %}
{% for bureau in products %}
{% for cat in bureau.categoriesProduct %}
{% if cat.id == subcategory and cat.id not in displayed_categories %}
{{cat.name }}
{% endif%}
{% set displayed_categories = displayed_categories|merge([cat.id]) %}
{% endfor %}
{% endfor %}
</h6>
</div>
<div class="col-sm-4" style="margin-top:10px;">
<a href="/themes/coworking/front/images/BUREAUX.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="row">
<div class="container d-flex justify-content-center align-items-center">
<ul id="progressbar">
<li class="etape1" > <span> Type</span> </li>
<li class="active" > <span> Formule</span></li>
<li> Date </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" >
<!-- <h5>Veuillez choisir un bureau :</h5>
<select name="select" id="select" class="form-control selectpiker">
<option value="">Sélectionner votre choix </option>
{% for bureau in products %}
{% for cat in bureau.categoriesProduct %}
{% if cat.id == subcategory %}
<option value="{{bureau.id }}">BUREAU {{ bureau.name }}</option>
{% endif %}
{% endfor %}
{% endfor %}
</select>-->
<div id="form-attribue" style="line-height: 30px;" class="mt-4">
<h5>Veuillez choisir une formule </h5>
{% for attr in attributValues %}
{% if attr.code == "simple" %}
<div class="form-check" >
<input class="form-check-input option radio1 " data-days="10" data-id="{{subcategory}}" data-name="{{subcategoryName}}" data-price="{{attr.price}}" type="radio" name="radioGroup" class="option" id="radio1" value="{{attr.attribut.name}}" />
<label class="form-check-label" data-days="10" data-id="{{subcategory}}" data-name="{{subcategoryName}}" data-price="{{attr.price}}" for="radio1">{{attr.attribut.name}}</label><br>
<small>
{{attr.attribut.description}}
</small>
</div>
{% endif %}
{% endfor %}
{% set addedValues = [] %}
{% if attributValues|length > 0 %}
<div class="form-check">
<input class="form-check-input" type="radio" name="radioGroup" id="radio2" />
<label class="form-check-label" for="radio2">Location “Pass jours”</label><br>
<small>Cette formule est déclinée comme suit :</small>
<select style="padding: 4px;" class="col-6 option " id="serviceFormule" >
<option value="" data-price="" >Sélectionner un choix</option>
{% for attr in attributValues %}
{% if attr.code == "multiple" %}
{% set optionId = attr.attribut.name ~ "-" ~ attr.attribut.description ~ "-" ~ subcategory ~ "-" ~ subcategoryName ~ "-" ~ attr.price %}
{% if optionId not in addedValues %}
{% set _ = addedValues|merge([optionId]) %}
<option value="{{attr.attribut.name}}" data-days="{{attr.attribut.description}}" data-id="{{subcategory}}" data-name="{{subcategoryName}}" data-price="{{attr.price}}" >{{attr.attribut.name}}</option>
{% endif %}
{% endif %}
{% endfor %}
</select>
</div>
{% endif %}
{% for attr in attributValues %}
{% if attr.code == "personalized" %}
<div class="form-check">
<input class="form-check-input option radio1 " data-days="30" data-id="{{subcategory}}" data-name="{{subcategoryName}}" {% if(attr.price is null) %} data-price="0" {% else %} data-price="{{attr.price}}" {% endif %} type="radio" name="radioGroup" {% if(attr.attribut.name=="Période personnalisée") %} value="Mois" {% else %} value="{{attr.attribut.name}}" {% endif %} id="radioMois" />
<label class="form-check-label" data-days="30" data-id="{{subcategory}}" data-name="{{subcategoryName}}" {% if(attr.price is null) %} data-price="0" {% else %} data-price="{{attr.price}}" {% endif %} for="radio{{ attr.attribut.id}}"> {{ attr.attribut.name}} </label><br>
<small> {{ attr.attribut.description}}</small>
</div>
{% endif %}
{% endfor %}
<h5 style="font-weight:bold; margin-top: 10px;">Services supplémentaires </h5>
<h6 style="font-weight:bold; margin-top: 10px;">Voulez-vous ajouter des services supplémentaires?</h6>
<!--<small style="color:grey">Disponible en location au mois ou à la journée</small>-->
<div class="row">
<div class="col-sm-12 Addons">
{% for service in services %}
<input id="{{ service.name}}" data-id="{{service.id}}" data-name="{{service.name}}" data-price="{{service.price}}" type="checkbox" class="CK" name="services" value="{{ service.id}} "><label for="service"> {{ service.name}} </label>
{% endfor %}<br>
{% set isSimple = false %}
{% for attr in attributValues %}
{% if attr.code == "simple" %}
{% set isSimple = true %}
{% endif %}
{% endfor %}
{% for servicesCommun in servicesCommuns %}
{% if not isSimple %}
{% if servicesCommun.id not in [94, 92, 69] %}
<input id="{{ servicesCommun.name }}" data-id="{{ servicesCommun.id }}" data-name="{{ servicesCommun.name }}" data-price="{{ servicesCommun.price }}" type="checkbox" class="CK" name="serviceCommun" value="{{ servicesCommun.id }} ">
<label for="service"> {{ servicesCommun.name }} </label>
{% endif %}
{% else %}
<input id="{{ servicesCommun.name }}" data-id="{{ servicesCommun.id }}" data-name="{{ servicesCommun.name }}" data-price="{{ servicesCommun.price }}" type="checkbox" class="CK" name="serviceCommun" value="{{ servicesCommun.id }} ">
<label for="service"> {{ servicesCommun.name }} </label>
{% endif %}
{% endfor %}
{#{% for servicesCommun in servicesCommuns %}
<input id="{{ servicesCommun.name}}" data-id="{{servicesCommun.id}}" data-name="{{servicesCommun.name}}" data-price="{{servicesCommun.price}}" type="checkbox" class="CK" name="serviceCommun" value="{{ servicesCommun.id}} "><label for="service"> {{ servicesCommun.name}} </label>
{% endfor %}#}
</div>
<!-- <div class="col-sm-12">
<small style="color:grey; margin-top: 5px;">Autre</small>
<input type="text" class="form-control" id="information" placeholder="Saisissez votre texte ici" style="height: 30px;border-radius: 4px;">
</div>-->
<!-- <h5 style="font-weight:bold;margin-top: 10px; ">Informations additionnelles </h5>
<h6 style="font-weight:bold; margin-top: 10px;">Avez vous des demandes spécifiques ? </h6>
<textarea class="form-control" name="demande_specifique" id="textAreaExample1" rows="1" placeholder="Saisissez votre texte Ici" style="font-size: 12px;"></textarea>
-->
<div class="message" style=" display: none;">Les Services supplémentaires sont indisponibles pour cette sélection.</div>
</div>
<div class="button-row">
<a href="{{path("reservationbureaux")}}" class="btn-res text-center text-light text-uppercase bg-dark ReserveNext__" style=" border:1px solid #FFCB00 !important; color:black !important;background: #ffff !important;padding:10px; text-decoration:none; width:230px; font-size:12px; font-family:'PT Sans', sans-serif; letter-spacing:2px;">Étape précédente</a>
<a href="{{path("reservationstep2office",{id:subcategory})}}" id="reservationLink" class="btn-res text-center text-light text-uppercase bg-dark ReserveNext__" style="background: #FFCB00 !important;padding:10px; text-decoration:none; width:230px; font-size:12px; font-family:'PT Sans', sans-serif; letter-spacing:2px;">Étape suivante</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="panier" class="col-sm-4 reservation-steeps-panier" style="overflow-y: auto; ">
{{render(path("ajax_cart"))}}
</div>
</div>
{% endblock %}
{% block javascripts %}
<!-- MAIN CONTENT -->
<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>
//recuperer la valeur des jours dans le formulaire .
document.getElementById('reservationLink').addEventListener('click', function() {
var days=0;
var selectedOption = document.getElementById('serviceFormule');
var selected = selectedOption.value;
if(selected != ""){
days = selectedOption.options[selectedOption.selectedIndex].getAttribute('data-days');
}else{
var radioButtons = document.getElementsByName('radioGroup');
for (var i = 0; i < radioButtons.length; i++) {
if (radioButtons[i].checked) {
days = parseInt(radioButtons[i].getAttribute('data-days'));
break;
}
} }
if (days === 0) {
event.preventDefault(); // Empêche le lien de se déclencher
alert("Vous n'avez rien sélectionné. Veuillez sélectionner une option.");
}
var link = document.getElementById('reservationLink');
link.href = "{{ path('reservationstep2office', {id: subcategory, 'paramFormule': 'days'}) }}".replace('days', days);
});
$(document).ready(function(){
/*$("#select").change(function(){
var selectedValue = $(this).val();
$.ajax({
url: '/reservation/ajax-formule-reservation',
type: 'GET', // ou 'GET' en fonction de votre besoin
data: { office : selectedValue },
success: function(response) {
// Vider le contenu de la div #form-attribue
$('#form-attribue').empty();
setTimeout(function() {
// Cacher la div loader après le délai spécifié (par exemple, 2 secondes)
// Afficher le résultat dans la div
$('#form-attribue').html(response);
}, 1000); // Délai de 2 secondes (2000 millisecondes)
},
error: function(xhr, status, error) {
// Gérez les erreurs ici
console.error(error);
}
});
});*/
$('#serviceFormule').change(function(){
var radio = document.getElementById('radio2');
radio.checked = true;
$('.Addons').show();
$('.message').hide();
});
var radioButtons = document.getElementsByName('radioGroup');
var selectElement = document.getElementById('serviceFormule');
radioButtons.forEach(function(radio) {
radio.addEventListener('click', function() {
if (radio.id === 'radio2') {
selectElement.disabled = false;
selectElement.val($('option:nth-child(1)').prop('selected', true));
$('.Addons').show();
$('.message').hide()
}
else if(radio.id === 'radio1'){
$('.Addons').hide();
$('.message').show();
}
else {
selectElement.selectedIndex = 0; // Sélection du premier élément
selectElement.disabled = true;
$('.Addons').show();
$('.message').hide();
}
});
});
$('body').on("click",".option",function() {
/*var selectedServiceIds = [];
var formule ="";
formule = $(".radio1").val();*/
if ($(this).is(':checked')) {
var formule = $(this).val();
}
$('.CK:checked').each(function() {
// Ajouter l'ID du service sélectionné à la liste
//selectedServiceIds.push($(this).data('id'));
var currentCheckbox = $(this);
$.ajax({
url: '/reservation/ajax-service-price',
type: 'GET', // ou 'GET' en fonction de votre besoin
data: {
serviceId : $(this).data('id'),
formule : formule
},
success: function(response) {
currentCheckbox.attr('data-price', response);
var idProduct = currentCheckbox.attr("data-id");
var price = currentCheckbox.attr("data-price");
var name = currentCheckbox.attr("data-name");
if(price != 0){
var actionType = "add";
currentCheckbox.next('label').css({'color': 'white', 'background': 'rgb(255, 216, 110)'});
}else{
var actionType = "remove";
currentCheckbox.next('label').css({'color': 'white', 'background': '#C7C8CC'});
}
$.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);
}
});
},
error: function(xhr, status, error) {
// Gérez les erreurs ici
console.error(error);
}
});
});
var idProduct = $(this).attr("data-id");
var price = $(this).attr("data-price");
var name = $(this).attr("data-name");
var actionType = "add";
$.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);
}
});
});
$('body').on("change","select.option",function() {
var selectedServiceIds = [];
if($("#serviceFormule").val() != "" || $("#radio3").val() != ""){
if($("#serviceFormule").val() != "" ){
formule =$("#serviceFormule").val();
}else{
formule = $(".radio1").val();
}
}
// Parcourir toutes les cases cochées avec la classe CK
$('.CK:checked').each(function() {
// Ajouter l'ID du service sélectionné à la liste
// selectedServiceIds.push($(this).data('id'));
var currentCheckbox = $(this);
$.ajax({
url: '/reservation/ajax-service-price',
type: 'GET', // ou 'GET' en fonction de votre besoin
data: {
serviceId : $(this).data('id'),
formule : formule
},
success: function(response) {
currentCheckbox.attr('data-price', response);
var idProduct = currentCheckbox.attr("data-id");
var price = currentCheckbox.attr("data-price");
var name = currentCheckbox.attr("data-name");
if(price != 0){
var actionType = "add";
currentCheckbox.next('label').css({'color': 'white', 'background': 'rgb(255, 216, 110)'});
}else{
var actionType = "remove";
currentCheckbox.next('label').css({'color': 'white', 'background': '#C7C8CC'});
}
$.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);
}
});
},
error: function(xhr, status, error) {
// Gérez les erreurs ici
console.error(error);
}
});
});
var idProduct = $(this).find("option:selected").attr("data-id");
var price = $(this).find("option:selected").attr("data-price");
var name = $(this).find("option:selected").attr("data-name");
var actionType = "add";
$.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);
}
});
});
$('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);
}
});
});
// Ajouter la délégation d'événements pour le clic sur le label 'service'
$('#form-attribue').on('click', 'label[for="service"]', function() {
var checkBox = $(this).prev();
var value = checkBox.val();
if (checkBox.is(":checked")) {
checkBox.prop('checked', false);
console.log("Case à cocher décochée : " + value);
checkBox.next('label').css({ 'color': '#626262' ,'background': 'none'});
var idProduct = checkBox.attr("data-id");
var price = checkBox.attr("data-price");
var name = checkBox.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);
}
});
} else {
checkBox.prop('checked', true);
// console.log("Case à cocher cochée : " + value);
var formule = "";
if($("#serviceFormule").val() != "" || $("#radio1").val() != ""){
if($("#serviceFormule").val() != "" ){
formule =$("#serviceFormule").val();
}
else if ($('#radio1').is(':checked')) {
formule = $(".radio1").val();
}
else if ($('#radio1').is(':checked')) {
formule = $("#radio1").val();
}
else if ($('#radioMois').is(':checked')) {
formule = $("#radioMois").val();
}
var serviceId = $(this).prev().data('id');
var dataElement = $(this).prev();
$.ajax({
url: "{{path('ajaxServicePrice')}}",
type: 'GET', // ou 'GET' en fonction de votre besoin
data: {
serviceId : value,
formule : formule
},
success: function(response) {
// alert(response);
dataElement.attr("data-price", response);
var idProduct = dataElement.attr("data-id");
var price = dataElement.attr("data-price");
var name = dataElement.attr("data-name");
var actionType = "add";
if(price != 0 ){
$.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);
}
});
checkBox.next('label').css({ 'color': 'white' ,'background': '#FFD86E'});
}else {
// Si le prix est égal à zéro, changer le fond du checkbox en gris
checkBox.next('label').css({'color': 'white', 'background': '#C7C8CC'});
}
},
error: function(xhr, status, error) {
// Gérez les erreurs ici
console.error(error);
}
});
}
}
});
var radioButtons = document.getElementsByName('radioGroup');
for (var i = 0; i < radioButtons.length; i++) {
if (radioButtons[i].checked) {
var selectedValue = radioButtons[i].value;
break;
}
}
console.log(selectedValue); // Vous pouvez utiliser la valeur comme vous le souhaitez ici
});
</script>
{% endblock %}