1import{k as C,a3 as N,B as W,C as $,M as r,a8 as h,a5 as q,X as U,a6 as j,E as F}from"./DANDRwo6.js";import{a as M,u as O,B as m,b as H}from"./BOMqz7_n.js";import"./Bp5bZQ3C.js";const J={class:"min-h-screen bg-gray-50 pt-[110px] pb-8"},R={class:"max-w-3xl mx-auto px-4 sm:px-6 lg:px-8"},K={class:"bg-white rounded-lg shadow-sm p-8 text-center"},V={class:"bg-red-50 rounded-lg p-4 mb-6"},z={class:"text-sm text-red-700"},L={__name:"failure",setup(G){const u=N(),g=j(),c=C(u.query.txnId||u.query.txn_id||u.query.txnid||""),v=async a=>{try{console.log("ð Attempting to update payment status...",a);const t=await $fetch(`${m}/experience/updatePayment`,{method:"POST",body:a,headers:{Authorization:`Bearer ${localStorage.getItem("access_token")}`,"Content-Type":"application/json"}});console.log("â
Payment update response:",t)}catch(t){console.error("â Error updating payment status:",t),console.error("â Error details:",{status:t.status,statusText:t.statusText,message:t.message,url:`${m}/experience/updatePayment`})}},b=async()=>{try{console.log("â Sending payment failure message to WebSocket...");const a=localStorage.getItem("access_token"),t=localStorage.getItem("user_data"),s=localStorage.getItem("user_primary_key");if(!a||!s){console.log("â ï¸ User not logged in, skipping WebSocket payment failure message");return}const o={action:"payment_status",user_id:s,transaction_id:c.value||"N/A",timestamp:new Date().toISOString(),status:"failed",reason:"Payment processing failed or was cancelled",source:"payment_failure_page"};console.log("ð¤ Payment failure message payload:",o);const p="wss://chatbot.avathi.com/ws/chat",n=new WebSocket(p);n.onopen=()=>{console.log("ð WebSocket connected for payment failure message");try{n.send(JSON.stringify(o)),console.log("â
Payment failure message sent to WebSocket successfully")}catch(i){console.error("â Error sending payment failure to WebSocket:",i)}n.close()},n.onerror=i=>{console.error("â WebSocket error for payment failure:",i)},n.onclose=()=>{console.log("ð WebSocket closed for payment failure message")},console.log("â
Payment failure message sent to WebSocket - backend will handle UI response"),await w()}catch(a){console.error("â Error sending payment failure message:",a)}},S=async()=>{try{console.log("â Sending payment failure message to backend...");const a=localStorage.getItem("access_token"),t=localStorage.getItem("user_data"),s=localStorage.getItem("user_primary_key");if(!a||!t||!s){console.log("â ï¸ User not logged in, skipping payment failure message");return}await b(),console.log("â
Payment failure message sent successfully")}catch(a){console.error("â Error sending payment failure message:",a)}},k=()=>{g.push("/chat")},P=()=>{g.push("/chat")},I=()=>{g.push("/")},w=async()=>{var a,t,s,o,p,n,i,y;try{console.log("ð§ Sending failure notification email...");const l=localStorage.getItem("access_token"),f=localStorage.getItem("user_primary_key");if(!l||!f){console.log("â ï¸ User not logged in, skipping failure notification email");return}const _=localStorage.getItem("chat_booking_confirmation_data");let e=null;if(_)try{e=JSON.parse(_)}catch(B){console.error("Error parsing stored booking data:",B)}const d=e==null?void 0:e.selected_ticket_details,A=d?[{ticket_id:d.ticket_id||"",max_occupants_per_room:d.max_occupants_per_room||3,guest_type:[{qty:((a=e==null?void 0:e.guest_data)==null?void 0:a.adults)||0,price:d.adult_price||"0",type:1},...((t=e==null?void 0:e.guest_data)==null?void 0:t.children)>0?[{qty:e.guest_data.children,price:d.child_price||"0",type:2}]:[]]}]:[{ticket_id:"",max_occupants_per_room:3,guest_type:[{qty:((s=e==null?void 0:e.guest_data)==null?void 0:s.adults)||0,price:(e==null?void 0:e.total_amount)||"0",type:1}]}],x={eoexperience_primary_key:parseInt(e==null?void 0:e.exp_id)||null,total_amount:parseInt(e==null?void 0:e.total_amount)||0,eouser_primary_key:parseInt(f)||null,txn_id:c.value||(e==null?void 0:e.txn_id)||"",date_of_exp:((o=e==null?void 0:e.selected_date)==null?void 0:o.check_in)||(e==null?void 0:e.selected_date)||"",end_date:((p=e==null?void 0:e.selected_date)==null?void 0:p.check_out)||(e==null?void 0:e.selected_date)||"",ticket_details:A,discount_coupon:null,universal_coupon_code:"",payment_status:"failed"};console.log("ð§ Failure notification email data being sent:",x);const E=await H.post(`${m}/experience/mailSentApi`,x,{headers:{Authorization:`Bearer ${l}`,"Content-Type":"application/json"}});console.log("â
Failure notification email sent successfully:",E.data)}catch(l){console.error("â Error sending failure notification email:",l),console.error("â Email API error details:",{status:(n=l.response)==null?void 0:n.status,statusText:(i=l.response)==null?void 0:i.statusText,message:l.message,url:`${m}/experience/mailSentApi`,data:(y=l.response)==null?void 0:y.data})}};W(async()=>{console.log("ð¨ Payment failure page mounted!"),console.log("ð Route query params:",u.query),console.log("ð Transaction ID:",c.value),T("failed","Payment failed or was cancelled");const a=[];c.value&&(console.log("ð¤ Scheduling payment status update..."),a.push(v({txn_i
1d:c.value,status:"failed"}))),console.log("ð¤ Scheduling payment failure message..."),a.push(S()),Promise.allSettled(a).then(t=>{console.log("ð All API calls completed:",t),t.forEach((s,o)=>{s.status==="rejected"?console.error(`â API call ${o+1} failed:`,s.reason):console.log(`â
API call ${o+1} succeeded:`,s.value)})}).catch(t=>{console.error("â Unexpected error in API calls:",t)})});const T=(a,t="")=>{try{const s=localStorage.getItem("payment_tracking");if(!s){console.log("â ï¸ No payment tracking data found");return}const o=JSON.parse(s);o.status="completed",o.result=a,o.reason=t,o.completion_time=Date.now(),localStorage.setItem("payment_tracking",JSON.stringify(o)),console.log("ð Payment tracking updated for failure:",o)}catch(s){console.error("â Error updating payment tracking data:",s)}};return O({title:"Payment Failed - Chat Booking | Avathi",meta:[{hid:"description",name:"description",content:"Payment processing failed. Please try again or contact our support team."},{hid:"robots",name:"robots",content:"noindex, nofollow"}]}),(a,t)=>(F(),$("div",J,[r("div",R,[r("div",K,[t[2]||(t[2]=h('<div class="mb-6" data-v-d4aa1b52><div class="w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mx-auto mb-4" data-v-d4aa1b52><svg class="w-8 h-8 text-red-600" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-d4aa1b52><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" data-v-d4aa1b52></path></svg></div><h1 class="text-2xl font-bold text-gray-900 mb-2" data-v-d4aa1b52>Payment Unsuccessful!</h1><p class="text-gray-600" data-v-d4aa1b52>We're sorry, but your payment could not be processed.</p></div>',1)),r("div",V,[r("p",z,[t[0]||(t[0]=r("strong",null,"Transaction ID:",-1)),q(" "+U(c.value||"N/A"),1)]),t[1]||(t[1]=r("p",{class:"text-sm text-red-600 mt-1"}," Please try again or contact our support team if the issue persists. ",-1))]),r("div",{class:"flex justify-center items-center gap-4"},[r("button",{onClick:k,class:"w-full px-6 py-3 bg-[#ffd042] text-black rounded-lg font-medium hover:bg-[#e6b800] transition-colors"}," Try Again "),r("button",{onClick:P,class:"w-full px-6 py-3 bg-gray-100 text-gray-700 rounded-lg font-medium hover:bg-gray-200 transition-colors"}," Back to Chat "),r("button",{onClick:I,class:"w-full px-6 py-3 bg-gray-600 text-white rounded-lg font-medium hover:bg-gray-700 transition-colors"}," Go Home ")]),t[3]||(t[3]=h('<div class="mt-8 bg-blue-50 rounded-lg p-4" data-v-d4aa1b52><h3 class="text-sm font-semibold text-gray-900 mb-2" data-v-d4aa1b52>Need Help?</h3><div class="space-y-1 text-xs text-gray-700" data-v-d4aa1b52><p data-v-d4aa1b52> Contact us at <a href="mailto:[email protected]" class="text-blue-600 underline" data-v-d4aa1b52> [email protected] </a></p><p data-v-d4aa1b52> Call us at: <a href="tel:+918971202915" class="text-blue-600 underline" data-v-d4aa1b52>+91 89712 02915</a></p></div></div>',1))])])]))}},Z=M(L,[["__scopeId","data-v-d4aa1b52"]]);export{Z as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.