Aller au contenu

Aide – Prendre un rendez-vous téléphonique

Un question, un doute, besoin d’aide ? Réservez ici votre rendez-vous téléphonique et un expert vous assistera dans votre projet !

#lfc-rdv-4vhzaf{max-width:620px;border:1px solid #e5e5e5;border-radius:12px;padding:18px;background:#fff} #lfc-rdv-4vhzaf .lfc-rdv-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px} #lfc-rdv-4vhzaf label{display:block;font-weight:700;margin:0 0 5px} #lfc-rdv-4vhzaf input,#lfc-rdv-4vhzaf select,#lfc-rdv-4vhzaf textarea{width:100%;box-sizing:border-box;padding:9px;border:1px solid #d9d9d9;border-radius:6px;background:#fff} #lfc-rdv-4vhzaf textarea{min-height:90px} #lfc-rdv-4vhzaf .lfc-rdv-field{margin:0 0 12px} #lfc-rdv-4vhzaf .lfc-rdv-submit{padding:11px 18px;border:0;border-radius:6px;cursor:pointer;font-weight:700} #lfc-rdv-4vhzaf .lfc-rdv-notice{margin-top:12px;font-weight:700} #lfc-rdv-4vhzaf .lfc-rdv-slot-status{display:block;margin-top:6px;color:#555;font-size:13px;line-height:1.35} #lfc-rdv-4vhzaf.is-loading .lfc-rdv-slot-status:before{content:'';display:inline-block;width:12px;height:12px;margin-right:7px;border:2px solid #d1d5db;border-top-color:#111827;border-radius:50%;vertical-align:-2px;animation:lfc-rdv-spin .8s linear infinite} #lfc-rdv-4vhzaf .lfc-rdv-submit:disabled{opacity:.6;cursor:wait} @keyframes lfc-rdv-spin{to{transform:rotate(360deg)}} @media(max-width:640px){#lfc-rdv-4vhzaf .lfc-rdv-grid{grid-template-columns:1fr}}

Prendre rendez-vous

Choisissez un type Je souhaite de l'aide pour configurez mes façades de cuisine — 15 min
Choisissez une date
(function(){ const root=document.getElementById('lfc-rdv-4vhzaf'); if(!root) return; const form=root.querySelector('.lfc-rdv-form'), type=form.querySelector('[name="type_id"]'), date=form.querySelector('[name="date"]'), slot=form.querySelector('[name="slot"]'), notice=root.querySelector('.lfc-rdv-notice'), slotStatus=root.querySelector('.lfc-rdv-slot-status'), submit=form.querySelector('.lfc-rdv-submit'); const ajaxUrl='https://staging.cuisina9.fr/wp-admin/admin-ajax.php'; const strings={"title":"Prendre rendez-vous","type":"Type de rendez-vous","date":"Date","slot":"Cr\u00e9neau","choose_type":"Choisissez un type","choose_date":"Choisissez une date","loading":"Recherche des cr\u00e9neaux\u2026","no_slot":"Aucun cr\u00e9neau disponible pour cette date.","first_name":"Pr\u00e9nom","last_name":"Nom","email":"Email","phone":"T\u00e9l\u00e9phone","message":"Message optionnel","book":"Confirmer le rendez-vous","booking":"R\u00e9servation en cours\u2026","success":"Votre rendez-vous est confirm\u00e9. Vous allez recevoir un email de confirmation.","error":"Impossible de r\u00e9server ce cr\u00e9neau. Merci d\u2019en choisir un autre.","missing":"Merci de compl\u00e9ter les champs obligatoires.","email_subject_client":"Confirmation de votre rendez-vous \u2014 {site_name}","email_client_intro":"Bonjour {customer_name},","email_client_confirmed":"Votre rendez-vous est confirm\u00e9. Vous trouverez l\u2019invitation calendrier en pi\u00e8ce jointe.","email_client_phone_notice":"Vous serez appel\u00e9 sur le num\u00e9ro que vous avez saisi lors de la prise de rendez-vous.","email_client_details":"{type_label}\r\n{date_label}","email_client_footer":"\u00c0 bient\u00f4t, {site_name}","email_agent_subject":"Nouveau rendez-vous \u2014 {type_label} \u2014 {customer_name}","email_agent_title":"Nouveau rendez-vous confirm\u00e9","email_type_label":"Type","email_date_label":"Date","email_operator_label":"Op\u00e9rateur","email_client_label":"Client","email_phone_label":"T\u00e9l\u00e9phone","email_message_label":"Message"}; let slotsRequestId=0, slotsController=null; function setNotice(text){notice.textContent=text||'';} function setSlotStatus(text,loading){ if(slotStatus) slotStatus.textContent=text||''; root.classList.toggle('is-loading',!!loading); slot.setAttribute('aria-busy',loading?'true':'false'); if(submit) submit.disabled=!!loading; } function post(data,signal){return fetch(ajaxUrl,{method:'POST',credentials:'same-origin',headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'},body:new URLSearchParams(data).toString(),signal:signal}).then(r=>r.json());} function resetSlots(text){slot.innerHTML=''+(text||strings.choose_date)+'';slot.disabled=true;} function loadSlots(){ const reqId=++slotsRequestId; if(slotsController && slotsController.abort) slotsController.abort(); slotsController=window.AbortController ? new AbortController() : null; setNotice(''); resetSlots(strings.loading); setSlotStatus(strings.loading,true); if(!type.value || !date.value){ resetSlots(strings.choose_date); setSlotStatus('',false); return; } post({action:'lfc_rdv_slots',nonce:form.nonce.value,locale:form.locale.value,type_id:type.value,date:date.value},slotsController ? slotsController.signal : undefined).then(function(res){ if(reqId!==slotsRequestId) return; slot.innerHTML=''; setSlotStatus('',false); if(!res || !res.success || !res.data || !res.data.slots || !res.data.slots.length){ resetSlots(strings.no_slot); setSlotStatus(strings.no_slot,false); return; } const empty=document.createElement('option'); empty.value=''; empty.textContent=strings.slot; slot.appendChild(empty); res.data.slots.forEach(function(s){ const opt=document.createElement('option'); opt.value=s.start; opt.textContent=s.label; slot.appendChild(opt); }); slot.disabled=false; }).catch(function(err){ if(err && err.name==='AbortError') return; if(reqId!==slotsRequestId) return; resetSlots(strings.no_slot); setSlotStatus(strings.no_slot,false); }); } type.addEventListener('change',loadSlots); date.addEventListener('change',loadSlots); form.addEventListener('submit',function(e){ e.preventDefault(); setNotice(strings.booking); const data={action:'lfc_rdv_book'}; new FormData(form).forEach(function(v,k){data[k]=v;}); post(data).then(function(res){ if(res && res.success){ setNotice(strings.success); form.reset(); resetSlots(strings.choose_date); } else { setNotice((res && res.data && res.data.message) ? res.data.message : strings.error); loadSlots(); } }).catch(function(){ setNotice(strings.error); }); }); })();