{% extends 'base.html.twig' %}
{% block title %}{{page.translate(locale).title}}{% endblock %}
{% block meta_desc %}{{page.translate(locale).introduction[:150]|striptags|raw }}...{% endblock %}
{% block stylesheets %}
<link rel="stylesheet" type="text/css" href="css/bootstrap-datepicker.css" />
{% endblock %}
{% block body %}
{% include "components/areas/page/welcome.html.twig" %}
<main class="booking-main" >
<section class="page-content section-reservation-page">
<div class="container">
<div class="reservation-page">
<div class="flex-ctn">
<div class="map">
<div style="width: 100%; height: 100%;">
<iframe frameborder="0" scrolling="no" marginheight="0"
marginwidth="0"
class="lazy"
data-src="https://maps.google.com/maps?width=100%25&height=300&hl=en&q=Le%20Grand%20Bissargues,%2004110+(Colombine)&t=k&z=18&ie=UTF8&iwloc=B&output=embed">
</iframe>
</div>
</div>
<div class="sidebar">
<div class="text">
<h2>{{page.translate(locale).title}}</h2>
<div>{{page.translate(locale).introduction|raw}}</div>
<ul>
{% trans %}Vous pouvez aussi réserver en nous contactant via les coordonnés ci-dessous :{% endtrans %}
<li><i class="fas fa-map-marked-alt"></i> {{statics.about.address}}</li>
<li><i class="fas fa-phone-alt" aria-hidden="true"></i> {{statics.about.phone}}</li>
<li><i class="fas fa-envelope" aria-hidden="true"></i> {{statics.about.email}}</li>
</ul>
</div>
<div id="accordion-tarif" class="accordion">
<div class="card">
<div class="card-header" id="heading-tarif">
<h4 class="mb-0">
<button class="btn btn-link" data-toggle="collapse" data-target="#collapse-tarif" aria-expanded="true" aria-controls="collapse-tarif">
<span>{% trans %}NOS TARIFS{% endtrans %}</span>
<i class="fas fa-plus"></i>
</button>
</h4>
</div>
<div id="collapse-tarif" class="collapse" aria-labelledby="heading-tarif" data-parent="#accordion-tarif">
<div class="card-body">
<div class="prices-ctn">
{% for saison in constraint.saisons %}
<div class="price-item">
<i class="{{saison.icon}}"></i>
<h5>{{saison.translate(locale).title}}</h5>
<div>
<p>{% trans %}Période(s){% endtrans %} :</p>
{% for period in saison.periods %}
<span>{{period.startDate|date('d/m/Y')}} - {{period.endDate|date('d/m/Y')}}</span> <br>
{% endfor %}
</div>
<span class="price-badge">{{saison.price|format(2,',',' ')}} € / {% trans %}nuit{% endtrans %}</span>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
<div id="accordion-details" class="accordion">
<div class="card">
<div class="card-header" id="heading-details">
<h4 class="mb-0">
<button class="btn btn-link" data-toggle="collapse" data-target="#collapse-details" aria-expanded="true" aria-controls="collapse-details">
<span>{% trans %}A SAVOIR{% endtrans %}</span>
<i class="fas fa-plus"></i>
</button>
</h4>
</div>
<div id="collapse-details" class="collapse" aria-labelledby="heading-details" data-parent="#accordion-details">
<div class="card-body">
<table class="table">
<tbody>
<tr>
<th scope="row">{% trans %}Chambre{% endtrans %} :</th>
<td>{% trans %}Personnes{% endtrans %} : {{constraint.maxNumber}}</td>
<td>{% trans %}Surface{% endtrans %} : {{constraint.surface}} m²</td>
</tr>
<tr>
<th scope="row">{% trans %}Arrivée & Départ{% endtrans %} :</th>
<td>{% trans %}Arrivée{% endtrans %} : {{constraint.startHour|date('H:i')}}</td>
<td>{% trans %}Départ{% endtrans %} : {{constraint.endHour|date('H:i')}}</td>
</tr>
<tr>
<th scope="row">{% trans %}Conditions{% endtrans %} :</th>
<td>{% trans %}Nombre de nuits min{% endtrans %} : {{constraint.minDuration}} <br> {% trans %}Nombre de nuits max{% endtrans %} : {{constraint.maxDuration}}</td>
<td><a href="{{path('booking_conditions')}}" target="_blank">{% trans %}Voir nos conditions{% endtrans %} <i class="fas fa-link"></i></a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<h2>{% trans %}Formulaire de réservation{% endtrans %}</h2>
<div class="widget widget_check_availability">
<ul class="nav nav-tabs">
<li class="step active">
{% trans %}Votre séjour{% endtrans %}
</li>
<li class="step">
{% trans %}Vos informations{% endtrans %}
</li>
<li class="step">
{% trans %}Détails{% endtrans %}
</li>
</ul>
<div class="check_availability">
{% form_theme bookingForm _self %}
{{form_start(bookingForm, {'attr': {'id': 'booking-ms-form'}} )}}
<input type="hidden" name="booking-recaptcha_response" id="booking-recaptchaResponse"/>
<input type="hidden" name="action" value="validate_captcha"/>
<div id="booking-details" class="tab fade in active">
<h6 class="check_availability_title">{% trans %}Détails de votre séjour{% endtrans %}</h6>
<div class="">
<div class="check_availability-field">
<div class="flex-label">
{{form_label(bookingForm.startDate)}}
{{form_label(bookingForm.endDate)}}
</div>
<div class="input-group input-daterange d-flex" id="datepicker">
{{form_widget(bookingForm.startDate)}}
<span class="input-group-addon"><i class="fa fa-calendar" aria-hidden="true"></i></span>
{{form_widget(bookingForm.endDate)}}
</div>
</div>
</div>
<div id="long-stay" class="check_availability-field" style="display:none">
<p class="alert alert-success">{% trans %}Vous bénéficiez de{% endtrans %} <b><span id="discount">-{{constraint.longStayDiscount * 100}}%</span></b> {% trans %}pour séjour de 7 nuits ou plus{% endtrans %} !</p>
</div>
<div class="row">
<div class="check_availability-field col-md-6 col-xs-12">
{{form_row(bookingForm.number, {'constraint' : constraint})}}
</div>
<div class="check_availability-field col-md-6 col-xs-12">
{{form_row(bookingForm.children, {'constraint' : constraint})}}
</div>
</div>
<div id="calcul" class="check_availability-field alert alert-info" style="display:none;">
<p class="nigth-count">
<span id="nights">...</span>{% trans %}nuits{% endtrans %} {% trans %}à{% endtrans %} <b><span id="price">...</span> €</b>/{% trans %}nuit{% endtrans %}
</p>
<p id="housework-ctn" class="d-none">
+ {% trans %}Ménage{% endtrans %} : <span id="housework">...</span> €
</p>
<p>
+ {% trans %}Taxe de séjour{% endtrans %} : <span id="staytax">...</span> €
</p>
<p>
{% trans %}Prix/nuit{% endtrans %} : <span id="dayprice">...</span> € {% trans %}soit{% endtrans %}, <span id="peopleprice"></span> € {% trans %}par personne{% endtrans %}.
</p>
<p class="amount-count">
{% trans %}Total{% endtrans %} : <span id="amount">...</span> €
</p>
</div>
<div class="form-step-action">
<button type="button" class="form-prev prevBtn" id="prevBtn">
<i class="fas fa-chevron-left"></i> {% trans %}Précédent{% endtrans %}
</button>
<button type="button" class="form-next nextBtn" id="nextBtn" data-locale="{{locale}}">
{% trans %}Suivant{% endtrans %} <i class="fas fa-chevron-right"></i>
</button>
</div>
</div>
<div id="booker-infos" class="tab fade in">
<h6 class="check_availability_title">{% trans %}Vos informations{% endtrans %}</h6>
<div class="check_availability-field">
{{form_row(bookingForm.gender)}}
</div>
<div class="form-group-flex">
<div class="check_availability-field">
{{form_row(bookingForm.firstName)}}
</div>
<div class="check_availability-field">
{{form_row(bookingForm.lastName)}}
</div>
</div>
<div class="form-group-flex">
<div class="check_availability-field">
{{form_row(bookingForm.email)}}
</div>
<div class="check_availability-field">
{{form_row(bookingForm.phone)}}
</div>
</div>
<div class="check_availability-field">
{{form_row(bookingForm.comment)}}
</div>
<div class="form-step-action">
<button type="button" class="form-prev prevBtn" id="prevBtn" >
<i class="fas fa-chevron-left"></i> {% trans %}Précédent{% endtrans %}
</button>
<button type="button" class="form-next nextBtn" id="nextBtn">
{% trans %}Suivant{% endtrans %} <i class="fas fa-chevron-right"></i>
</button>
</div>
</div>
<div id="payment-details" class="tab fade in">
<h6 class="check_availability_title">{% trans %}Détails{% endtrans %}</h6>
<div class="recap">
<p><b>{% trans %}Récapitulatif{% endtrans %} :</b></p>
<p>
{% trans %}Location du{% endtrans %} <b><span class="recap-start"></span></b> {% trans %}au{% endtrans %} <b><span class="recap-end"></span></b>.
<br>
{% trans %}Soit{% endtrans %} <b><span class="recap-days"></span></b> {% trans %}nuit.s pour un montant de{% endtrans %} <b><span class="recap-price"></span>€</b>.
</p>
<label><b>{% trans %}Modalités{% endtrans %} :</b></label>
<p>{% trans %}Un dépôt de garantie de{% endtrans %} <b>{{constraint.deposit / 100}}€</b>.</p>
<p>{% trans %}Un acompte de{% endtrans %} <b><span class="recap-advance"></span>€</b>.</p>
<p>{% trans %}La taxe de séjour incluse dans le montant total.{% endtrans %}</p>
<p>{% trans %}Le ménage est inclu dans le montant total.{% endtrans %}</p>
<p><em>{% trans %}Plus de détails dans le mail récapitulatif ou dans nos{% endtrans %} <b><a href="{{path('booking_conditions')}}" target="_blank">{% trans %}CGV{% endtrans %}</a></b></em>.</p>
</div>
<div class="check_availability-field">
{{form_row(bookingForm.paymentMethod)}}
</div>
<div class="check_availability-field">
{{form_row(bookingForm.approval)}}
</div>
<div class="check_availability-field">
{{form_row(bookingForm.rgpd)}}
</div>
<div class="check_availability-field">
{{form_row(bookingForm.amount)}}
</div>
<div class="form-actions">
<button type="button" class="form-prev prevBtn" id="prevBtn">
<i class="fas fa-chevron-left"></i> {% trans %}Précédent{% endtrans %}
</button>
<button type="submit" name="submit" class="read-more nextBtn" id="nextBtn" />
{% trans %}Je réserve {% endtrans %}
<i class="fas fa-paper-plane"></i>
</button>
</div>
</div>
{{form_end(bookingForm)}}
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</section>
</main>
{% endblock %}
{% block javascripts %}
<script src="js/msform.js"></script>
<script src="js/ajaxForm.js"></script>
<script type="text/javascript" src="js/bootstrap-datepicker.js"></script>
<script>
$(document).ready(function(){
{% if locale == "fr" %}
$.fn.datepicker.dates['fr'] = {
days: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"],
daysShort: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."],
daysMin: ["d", "l", "ma", "me", "j", "v", "s"],
months: ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"],
monthsShort: ["janv.", "févr.", "mars", "avril", "mai", "juin", "juil.", "août", "sept.", "oct.", "nov.", "déc."],
today: "Aujourd'hui",
monthsTitle: "Mois",
clear: "Effacer",
};
{% endif %}
{% if locale == "es" %}
$.fn.datepicker.dates['es'] = {
days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
daysShort: ["Dom", "Lun", "Mar", "Mié", "Juv", "Vie", "Sáb"],
daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sá"],
months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
today: "Hoy",
monthsTitle: "Mes",
clear: "Borrar",
};
{% endif %}
{% if locale == "de" %}
$.fn.datepicker.dates['de'] = {
days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
daysShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
today: "Heute",
monthsTitle: "Monate",
clear: "Löschen",
};
{% endif %}
$('#datepicker').each(function(){
$(this).datepicker({
format:'dd/mm/yyyy',
startDate: '+{{constraint.blockedDaysAfterNow}}d',
language : '{{locale}}',
datesDisabled: [
{% for day in constraint.notAvailableDays %}
"{{ day.format('d/m/Y') }}",
{% endfor %}
],
endDate : '{{endDate|date('d/m/Y')}}'
});
});
// if ($('#booking_startDate').val() != "") {
// calculateAmount();
// }
$('#booking_startDate, #booking_endDate, #booking_number, #booking_children').on('change', calculateAmount);
$('#booking_number, #booking_children').on('keyup', calculateAmount);
});
function calculateAmount(){
const endDate = new Date( $('#booking_endDate').val().replace(/(\d+)\/(\d+)\/(\d{4})/, '$3-$2-$1') );
const startDate = new Date( $('#booking_startDate').val().replace(/(\d+)\/(\d+)\/(\d{4})/, '$3-$2-$1') );
if (startDate && endDate && $('#booking_endDate').val() != "" && $('#booking_number').val() != "") {
if (startDate < endDate) {
$.ajax({
type: 'POST',
url: "/booking/get-saison?start="+startDate.toLocaleDateString("en-US")+"&end="+endDate.toLocaleDateString("en-US")+"",
dataType: 'json'
})
.done(function (data) {
// Calculs
const DAY_TIME = 24 * 60 * 60 * 1000;
const interval = endDate.getTime() - startDate.getTime();
const days = interval / DAY_TIME;
const amount = days * parseInt(data.price);
// Nombre de nuits
if (days > 1) {
$('#nights').text(days);
}else{
$('#nights').text(days);
}
// Ménage
var housework = {{constraint.housework / 100}};
if (housework > 0) {
$('#housework').show();
$('#housework').text(housework);
}
// Nombre
var number = $('#booking_number').val();
// Children
var children = $('#booking_children').val();
if (children == "") {
children = 0;
}
// Tax de séjour
var stayTax = Math.ceil((({{constraint.stayTax}} / 100) * (number - children) * days));
// Prix par nuit
var dayPrice = Math.ceil(data.price + ((stayTax + housework) / days));
// Prix final
var totalAmount = Math.ceil(amount + housework + stayTax);
// Accompte
var advance = totalAmount * {{constraint.advancePayment}};
// Réduction
if (days >= 7 && {{constraint.longStayDiscount}} > 0) {
var discountAmount = Math.ceil(totalAmount / (1 + {{constraint.longStayDiscount}}));
$('#long-stay').show(100);
$('#amount').html(discountAmount + ' € <span style="text-decoration:line-through; margin-left:5px; font-size:12px;">'+totalAmount+'</span>');
$('.recap-price').text(discountAmount);
// Pas reduction Reduction
}else{
$('#long-stay').hide(100);
$('#amount').text(totalAmount);
$('.recap-price').text(totalAmount);
}
$('#calcul').show(100);
$('#staytax').text(stayTax);
$('#price').text(data.price);
$('#dayprice').text(dayPrice);
$('#peopleprice').text(Math.ceil(dayPrice / number));
// $('#saison').text(data.title);
$('.recap-start').text($('#booking_startDate').val());
$('.recap-end').text($('#booking_endDate').val());
$('.recap-days').text(days);
$('.recap-advance').text(advance);
$('.error-date').hide(100);
});
}else{
$('#booking_endDate').parent().append('<div class="error-date alert alert-danger"><small>Vous ne pouvez pas partir avant d\'être arrivé</small></div>')
}
}
}
</script>
{% endblock %}
{% block _booking_number_label %}
<label for="booking_number" class="required">{% trans %}Nombre de personnes{% endtrans %} ({{constraint.maxNumber}} max)</label>
{% endblock %}
{% block _booking_number_widget %}
<input type="number" id="booking_number" name="booking[number]" required="required" min="1" max="{{constraint.maxNumber}}" step="1" placeholder="{% trans %}Combien de personnes ?{% endtrans %}" class="form-control">
{% endblock %}
{% block _booking_children_label %}
<label for="booking_children" class="required">{% trans %}Dont enfant(s) (-18 ans){% endtrans %}</label>
{% endblock %}
{% block _booking_children_widget %}
<input type="number" id="booking_children" name="booking[children]" min="1" max="{{(constraint.maxNumber - 1)}}" step="1" placeholder="{% trans %}Combien d'enfants ?{% endtrans %}" class="form-control">
{% endblock %}