import ce from"./CM_rwhw0.js";import de from"./D2IdTiPY.js";import me from"./Cf4dmcJT.js";import fe from"./C4K6RMg6.js";import pe from"./BGpxXY4c.js";import _e from"./Ck69XxM5.js";import ge from"./DyCHKxtu.js";import{d as be,a as ve,k as he,b0 as $,N as Ee,r as g,e as j,b1 as we,f as k,h as E,t as x,v as S,g as s,z as P,x as w,F as M,i as b,A as ye,C as Ce,T as Re,G as Ne,o as p,n as y,V as q,I as Te,Q as ke,a5 as Se,_ as De}from"./BxiWQxwE.js";const u={REGISTER:"register",UPDATE_PROFILE:"update-profile",CHANGE_PASSWORD:"change-password"},H={CLIENT_ID:"deka_site",FORMULA_TYPE:"Deka"},Oe={class:"account"},Ae={class:"heading m"},xe={class:"actions"},Pe=["disabled"],Ie=["disabled"],Fe={key:3,class:"error"},Ve=be({__name:"form",props:{action:{type:String,required:!0}},setup(v){const d=v,C=q(),{$gtm:R,$messages:i,$toast:D}=ve(),{getLoginUrl:I,subscriber:W,userProfile:F}=he(),{accessTokenCookie:Q}=$(),{getProfile:Y}=Ee(),N=g(!1),r=g({...W.value}),O=g(!1),a=g({account:{email:"",userName:"",password:""},password:{current:"",new:""},personal:{gender:"",firstName:"",lastName:"",prefix:"",birthdate:"",phoneNumber:""},addresses:{zipCode:"",houseNumber:"",addition:"",street:"",city:""},terms:{agree:""}}),m=g(!1),f=g(!1),V=/^\d{4}\s*[A-Z]{2}$/i,K=["prefix","addition"],X=async()=>{try{return O.value=!1,await $fetch("/api/address",{method:"POST",body:{zipCode:r.value.addresses.zipCode,houseNumber:Number(r.value.addresses.houseNumber),addition:r.value.addresses.addition}})}catch(t){return console.warn("No address found: error - ",t),O.value=!0,null}},Z=j(()=>d.action===u.REGISTER?i("registration.registerCta"):i("registration.save"));we(()=>r.value.addresses,async()=>{if(V.test(r.value.addresses.zipCode)&&r.value.addresses.houseNumber){const t=await X();t&&(r.value.addresses.street=t.street??"",r.value.addresses.city=t.city??"")}},{debounce:500,deep:!0});const U=()=>{var e,o,n,l,T;const t={account:{userName:r.value.account.email,password:r.value.account.password},clientId:H.CLIENT_ID,formulaType:H.FORMULA_TYPE,customer:{addresses:[{addition:r.value.addresses.addition,city:r.value.addresses.city,houseNumber:r.value.addresses.houseNumber,id:r.value.addresses.id,isDelivery:!0,isInvoice:!1,street:r.value.addresses.street,zipCode:r.value.addresses.zipCode}],birthDate:String((o=(e=r.value)==null?void 0:e.personal)==null?void 0:o.birthdate),firstname:r.value.personal.firstName,gender:r.value.personal.gender,lastname:r.value.personal.lastName,phoneNumberFirst:r.value.personal.phoneNumber,preferences:{alternatives:0,numberOfAdults:0,numberOfChildren:0,numberOfDogs:0,numberOfCats:0,hasNewsLetter:(n=r.value.optin)==null?void 0:n.hasNewsLetter,dekaMobileBarCode:"",isProfilingAllowed:(l=r.value.optin)==null?void 0:l.isProfilingAllowed,payId:""},prefix:r.value.personal.prefix}};return(d.action===u.UPDATE_PROFILE||d.action===u.CHANGE_PASSWORD)&&(t.customer={...t.customer,id:r.value.id},(T=r.value.password)!=null&&T.new&&(t.account.password=r.value.password.new),t.customer.business&&Object.values(t.customer.business).every(Boolean)&&(t.customer.business={...r.value.business})),t},J=async()=>{m.value=!0;const t=U();try{f.value=!1,await $fetch(C.public.customer,{method:"PUT",onRequestError({error:e}){console.error("Request Error:",e),console.info("Request Error Details:",{message:e.message,name:e.name,stack:e.stack})},onResponseError({response:e,error:o}){console.error("Response Error:",o),console.info("Response Error Details:",{status:e==null?void 0:e.status,statusText:e==null?void 0:e.statusText,body:e==null?void 0:e.body})},headers:{"Content-Type":"application/json",Api_key:C.public.authentication.apiKey,Authorization:`Bearer ${Q.value}`},body:t,async onResponse({response:e}){const o=e.status;if(console.info("Update subscriber: Status Code:",o),o===200){R("register.sign_up_form_update",{"profile-id":r.value.id}),D.add({id:1,title:i("registration.updated.title"),text:i("registration.updated.message")});const n=await Y();n!=null&&n.profile&&(n.profile.customer&&(n.profile.customer.birthDate=ke(String(n.profile.customer.birthDate))),F.value=n.profile),await y(`${Se.MY_ENVIRONMENT}`);return}o!==200&&(f.value=!0,D.add({id:2,text:i("error.commonLong")}))}})}catch(e){console.error("Failed to Update subscriber, Error:",e),f.value=!0}finally{m.value=!1}},ee=async()=>{const{accessTokenCookie:t}=$();if(!(t!=null&&t.value)){await y(I("/"),{external:!0});return}const e=q(),o=new URL(`${e.public.account}account/delete`);o.searchParams.append("id_token_hint",t.value??""),await y(o.toString(),{external:!0})},te=async()=>{m.value=!0;const t=U();try{f.value=!1,await $fetch(C.public.customer,{method:"POST",onRequestError({error:e}){console.error("Request Error:",e),console.info("Request Error Details:",{message:e.message,name:e.name,stack:e.stack})},onResponseError({response:e,error:o}){console.error("Response Error:",o),console.info("Response Error Details:",{status:e==null?void 0:e.status,statusText:e==null?void 0:e.statusText,body:e==null?void 0:e.body})},headers:{"Content-Type":"application/json",Api_key:C.public.authentication.apiKey},body:t,onResponse({response:e}){var n,l;const o=e.status;if(console.info("Create subscriber: Status Code:",o),o===200){R("register.generate_lead",{user_id:(l=(n=F.value)==null?void 0:n.customer)==null?void 0:l.id}),R("register.sign_up_form",{"form-subscribe-additional":r.value.optin.isProfilingAllowed?"true":"false","form-subscribe":r.value.optin.hasNewsLetter?"true":"false"}),N.value=!0;return}o!==200&&(D.add({id:1,text:i("error.checkDataForm")}),f.value=!0,console.error("Failed - Create subscriber, Status Code: ",o,e))}})}catch(e){console.error("Failed to create subscriber, Error:",e),f.value=!0}finally{m.value=!1}},L=async()=>{if(_(null,!0),!se()){re();return}if(d.action===u.REGISTER){await te();return}await J()},oe=async()=>{N.value=!1,await y(I("/"),{external:!0})},G=async()=>{N.value=!1,await y("/")},re=()=>{const t=document.querySelector(".error");t&&(t==null||t.scrollIntoView({behavior:"smooth",block:"center"}))},se=()=>(Object.keys(a.value).forEach(t=>Object.entries(a.value[t]).forEach(([e,o])=>{if(o!==""){if(o==="Dit veld is verplicht"){if(e==="current"||e==="new"){A(`Password ${e} is verplicht.`);return}const n=o.toLowerCase().replace("dit",Te(e));A(n);return}A(o)}})),!Object.keys(a.value).some(t=>Object.values(a.value[t]).some(e=>e!==""))),h=(t=null)=>{const e=t==null?void 0:t.target,[o,n]=e.id.split("-");a.value[o][n]&&(a.value[o][n]="")},z=j(()=>{var t,e;return((t=r.value.password)==null?void 0:t.current)===((e=r.value.password)==null?void 0:e.new)}),A=t=>R("register.sign_up_form",{"form-alert":t}),_=(t=null,e=!1)=>{if(e)for(const o of Object.keys(a.value)){const n=a.value[o];for(const l of Object.keys(n))B(o,l)}else{const o=t==null?void 0:t.target,[n,l]=o.id.split("-");B(n,l)}},ae=(t,e)=>{d.action===u.UPDATE_PROFILE&&z.value||(t==="new"||t==="current")&&e.length<6&&(a.value.password[t]=i("registration.form.errors.password.password")??"")},B=(t,e)=>{const o=r.value[t][e];if(!(d.action===u.REGISTER&&["current","new"].includes(e))){if(d.action===u.UPDATE_PROFILE||d.action===u.CHANGE_PASSWORD){if(e==="password")return;if(["current","new"].includes(e)){ae(e,o);return}}if(!K.includes(e)){if(o===""){a.value[t][e]=i("registration.form.errors.mandatory")??"";return}switch(e){case"email":(!o.includes("@")||!o.includes(".")||o.length<6)&&(a.value[t][e]=i("registration.form.errors.email")??"");break;case"password":o.length<6&&(a.value[t][e]=i("registration.form.errors.password.password")??"");break;case"gender":["M","F","U"].includes(o)||(a.value[t][e]=i("registration.form.errors.gender")??"");break;case"firstName":o.length<2&&(a.value[t][e]=i("registration.form.errors.firstName")??"");break;case"lastName":o.length<2&&(a.value[t][e]=i("registration.form.errors.lastName")??"");break;case"phoneNumber":o.length<10&&(a.value[t][e]=i("registration.form.errors.phoneNumber")??"");break;case"zipCode":V.test(o)||(a.value[t][e]=i("registration.form.errors.postalCode")??"");break;case"houseNumber":o.length<1&&o.length<5&&(a.value[t][e]=i("registration.form.errors.homeNumber")??"");break;case"agree":o||(a.value[t][e]=i("registration.form.errors.terms")??"");break}}}};return(t,e)=>{const o=ce,n=de,l=me,T=fe,ne=pe,ie=_e,ue=ge,le=Ne;return p(),k(M,null,[E("div",Oe,[E("h1",Ae,S(s(i)("registration.title")),1),E("form",{onSubmit:P(L,["prevent"])},[v.action!==s(u).REGISTER?(p(),x(o,{key:0,modelValue:s(r).password,"onUpdate:modelValue":e[0]||(e[0]=c=>s(r).password=c),email:s(r).account.email,errors:s(a).password??{},"hide-cta":!0,matches:s(z),expand:v.action===s(u).CHANGE_PASSWORD,onBlur:_,onFocus:h},null,8,["modelValue","email","errors","matches","expand"])):w("",!0),v.action===s(u).REGISTER?(p(),x(n,{key:1,modelValue:s(r).account,"onUpdate:modelValue":e[1]||(e[1]=c=>s(r).account=c),errors:s(a).account??{},onBlur:_,onFocus:h},null,8,["modelValue","errors"])):w("",!0),v.action!==s(u).CHANGE_PASSWORD?(p(),k(M,{key:2},[b(l,{modelValue:s(r).personal,"onUpdate:modelValue":e[2]||(e[2]=c=>s(r).personal=c),errors:s(a).personal??{},onBlur:_,onFocus:h},null,8,["modelValue","errors"]),b(T,{modelValue:s(r).addresses,"onUpdate:modelValue":e[3]||(e[3]=c=>s(r).addresses=c),errors:s(a).addresses??{},"not-found":s(O),onBlur:_,onFocus:h},null,8,["modelValue","errors","not-found"]),b(ne,{modelValue:s(r).optin,"onUpdate:modelValue":e[4]||(e[4]=c=>s(r).optin=c)},null,8,["modelValue"]),b(ie,{modelValue:s(r).terms,"onUpdate:modelValue":e[5]||(e[5]=c=>s(r).terms=c),errors:s(a).terms??{},onBlur:_,onFocus:h},null,8,["modelValue","errors"])],64)):w("",!0),E("div",xe,[d.action===s(u).UPDATE_PROFILE?(p(),k("button",{key:0,class:"button-red-outline",disabled:s(m),onClick:P(ee,["prevent"])},S(s(i)("registration.deleteAccount")),9,Pe)):w("",!0),E("button",{class:ye(["button-green",{loading:s(m)}]),disabled:s(m),onClick:P(L,["prevent"])},S(s(Z)),11,Ie)]),s(f)?(p(),k("small",Fe,S(s(i)("error.common")),1)):w("",!0)],32)]),(p(),x(Re,{to:"body"},[b(le,{id:"profile-dialog",open:s(N),onClose:G},{default:Ce(()=>[b(ue,{title:s(i)("registration.successDialog.title")??"",description:s(i)("registration.successDialog.description")??"","confirm-text":"registration.successDialog.login","cancel-text":"registration.successDialog.homePage",onConfirm:oe,onCancel:G},null,8,["title","description"])]),_:1},8,["open"])]))],64)}}}),Ue=De(Ve,[["__scopeId","data-v-9f656153"]]),He=Object.freeze(Object.defineProperty({__proto__:null,default:Ue},Symbol.toStringTag,{value:"Module"}));export{u as A,Ue as _,He as f};
