{{if "random_int(1, 10)"|math == 10}} {{* Prune old bookings from time to time *}} {{:delete type="booking" where="date($$.date) < date('now', '-1 month')"}} {{/if}} {{if !$module.config.access}} {{:assign var="module.config.access" value="write"}} {{/if}} {{if !$module.config.list_access}} {{:assign var="module.config.list_access" value="all"}} {{/if}} {{#form on="cancel"}} {{#load key=$_POST.cancel type="booking" limit=1 assign="booking"}} {{:delete id=$id}} {{#load key=$event type="event"}} {{if $notify_email}} {{:assign my_date=$booking.date|parse_datetime|date_long:true fields=$booking.fields|array_to_list}} {{:mail to=$notify_email subject="%s — Annulation"|args:$label body="Nom : %s\nDate : %s\nAdresse e-mail : %s\nDétails :\n%s"|args:$booking.name:$my_date:$booking.email:$fields notification=true}} {{/if}} {{/load}} {{/load}} {{:redirect to="./?deleted=%s"|args:$_POST.cancel}} {{/form}} {{if $_GET.event}} {{#load type="event" key=$_GET.event assign="event" archived=false}} {{:assign event_selected=true}} {{else}} {{:error message="L'événement indiqué est introuvable"}} {{/load}} {{else}} {{#load type="event" archived=false group="$$.type HAVING COUNT(*) = 1" assign="event"}} {{/load}} {{/if}} {{:form_errors}} {{if $_GET.deleted}}

La réservation a bien été annulée.

{{/if}} {{if !$_GET.slot_time}}
{{* New booking *}} {{if $_GET.b}} {{if $_GET.booked}}

Votre réservation a bien été enregistrée.

{{/if}} {{#load type="booking" key=$_GET.b}} {{#load type="event" key=$event assign="e"}}{{/load}} {{:assign var="booking" label=$e.label name=$name event=$e.key key=$key date_str=$date|date_long date=$date|strtotime time_str=$date|date_hour}}
Vous avez réservé :

{{$e.label}}

{{$date|date_long}} à {{$date|date_hour}}

(Au nom de : {{$name}})
{{:button type="submit" name="cancel" value=$key label="Annuler cette réservation" shape="delete" class="main"}}
{{else}}

La réservation indiquée est introuvable, elle a peut-être déjà été annulée.

{{/load}} {{/if}}
{{if !$logged_user}} {{/if}} {{/if}} {{if $module.config.list_access === 'all'}} {{:assign can_list=true}} {{elseif $module.config.list_access === 'users' && $logged_user}} {{:assign can_list=true}} {{elseif $module.config.list_access === 'admins'}} {{#restrict section="users" level=$module.config.access}} {{:assign can_list=true}} {{/restrict}} {{/if}} {{if !$event && $can_list}}
{{if $event_selected}}

{{:linkbutton shape="left" label="Liste des événements" href="./"}}

{{/if}}

Réservations

Choisir un événement :

{{#load type="event" order="$$.label" archived=false}}

{{$label}}

{{else}}

Il n'y a aucun événement réservable.

{{/load}}
{{elseif $event}} {{#form on="book"}} {{if !$_GET.slot_time || !$_GET.slot_time|parse_datetime}} {{:error message="Date invalide"}} {{/if}} {{if $_GET.slot_key}} {{* Vérification que le créneau sélectionné existe bien *}} {{#load key=$_GET.slot_key type="slot" assign="slot"}} {{else}} {{:error message="Créneau introuvable"}} {{/load}} {{* Vérification qu'il y a encore des places dispo *}} {{#load event=$event.key where="datetime($$.date) = datetime(:date)" slot=$slot.key :date=$_GET.slot_time type="booking" count=true}} {{if $count >= $slot.seats}} {{:error message="Ce créneau est déjà plein, aucune place n'est disponible, désolé."}} {{/if}} {{/load}} {{/if}} {{if !$_POST.name|trim}} {{:error message="Le nom doit être renseigné."}} {{/if}} {{if $event.email && !$_POST.email|trim}} {{:error message="L'adresse e-mail doit être renseignée."}} {{/if}} {{if $_POST.email|trim && !$_POST.email|trim|check_email}} {{:error message="Adresse e-mail invalide."}} {{/if}} {{if $_POST.email|trim && !$logged_user}} {{:captcha verify=true}} {{/if}} {{:assign fields=null}} {{#foreach from=$event.fields key="i" item="field"}} {{:assign var="value" from="_POST.fields.%d"|args:$i}} {{:assign var="fields" append=$label value=$value}} {{if $field.required && $value|trim === ''}} {{:error message="Le champ '%s' doit être renseigné."|args:$field.label}} {{/if}} {{/foreach}} {{:assign key=""|uuid}} {{:assign name=$_POST.name|trim email=$_POST.email|trim|or:null my_date=$_GET.slot_time|parse_datetime|date_long:true}} {{:save type="booking" key=$key validate_schema="./booking.schema.json" slot=$slot.key event=$event.key date=$_GET.slot_time name=$name email=$email id_user=$logged_user.id fields=$fields }} {{if $event.notify_email}} {{:assign fields=$fields|array_to_list}} {{:assign body="Nouvelle réservation de :\n%s\n\nÉvénement : %s\nDate : %s\nAdresse e-mail : %s\nDétails :\n%s"|args:$name:$event.label:$my_date:$email:$fields}} {{:mail to=$event.notify_email subject="%s — Nouvelle réservation"|args:$event.label body=$body notification=true}} {{/if}} {{if $_POST.email|trim}} {{:assign url="%s?b=%s"|args:$module.url:$key}} {{:mail to=$_POST.email|trim subject="Réservation du %s"|args:$my_date body="Vous avez réservé pour : %s\n\nLe : %s\n\nPour annuler votre réservation, cliquez ici :\n%s"|args:$event.label:$my_date:$url notification=true}} {{/if}} {{:redirect to="./?b=%s&booked=1"|args:$key}} {{/form}} {{if $_GET.slot_key !== null && $_GET.slot_time}} {{:include file="./_confirm_slot_form.html"}} {{elseif $event.not_open_before && $now < $event.not_open_before|strtotime}}

Désolé, cet événement n'est pas encore ouvert aux réservations.
Merci de revenir le {{$event.not_open_before|date_long:true}}.

{{elseif $event.not_open_after && $now > $event.not_open_after|strtotime}}

Désolé, les réservations ne sont plus acceptées pour cet événement.

{{else}} {{:include file="./_create_slots_list.tpl" event=$event keep="slots"}} {{:include file="./_slots_list.html" event=$event slots=$slots event_selected=$event_selected}} {{/if}} {{else}}

La liste des événements est désactivée.

{{/if}}