PageSourceSearch

https://eliteescortworld.com/assets/PaymentsDashboard-D9XGb2sa.js

js eliteescortworld.com collected 2026-10-06 13:14:07 UTC 16,273 bytes, 1 lines download raw bytes

1import{d as H,o as O,f as i,h as t,i as h,j as T,k as e,r as g,n as m,B as q,F as k,y as f,m as U,x as G,g as d,A as S,c as W,_ as X}from"./app-C9ugwCA1.js";import{S as A}from"./StyledSelect-rx3POUtz.js";const B="/api/v1/admin/api/payments";async function Y(r={}){const u=new URLSearchParams;r.page&&u.set("page",String(r.page)),r.status&&u.set("status",r.status),r.payment_method&&u.set("payment_method",r.payment_method),r.purpose&&u.set("purpose",r.purpose),r.country_id&&u.set("country_id",String(r.country_id)),r.date_from&&u.set("date_from",r.date_from),r.date_to&&u.set("date_to",r.date_to),r.search&&u.set("search",r.search);const o=u.toString(),y=await fetch(`${B}${o?`?${o}`:""}`);if(!y.ok)throw new Error("Failed to fetch payments");return y.json()}async function J(){const r=await fetch(`${B}/dashboard`);if(!r.ok)throw new Error("Failed to fetch dashboard stats");return r.json()}const K={class:"payments-dashboard"},Q={class:"revenue-grid"},Z={class:"revenue-card"},tt={class:"revenue-value"},st={class:"revenue-card"},et={class:"revenue-value"},at={class:"revenue-card"},lt={class:"revenue-value"},ot={class:"revenue-card highlight"},nt={class:"revenue-value"},it={class:"revenue-currency"},dt={class:"status-grid"},rt={class:"status-card status-pending"},ut={class:"status-content"},ct={class:"status-value"},vt={class:"status-card status-crypto"},pt={class:"status-content"},_t={class:"status-value"},mt={class:"status-card status-failed"},ht={class:"status-content"},yt={class:"status-value"},gt={class:"charts-section"},bt={class:"chart-card chart-large"},kt={class:"chart-container"},ft={key:0,class:"chart-bars"},wt=["title"],Ct={class:"bar-stack"},Pt={key:0,class:"bar-label"},St={key:1,class:"chart-empty"},$t={class:"chart-card"},xt={key:0,class:"methods-list"},Mt={class:"method-info"},Dt={class:"method-name"},Tt={class:"method-count"},Ut={class:"method-stats"},At={class:"method-amount"},Bt={class:"method-percentage"},Nt={class:"method-bar"},Rt={key:1,class:"chart-empty"},Vt={class:"top-users-section"},Ft={class:"users-table-container"},Et={key:0,class:"users-table"},jt={class:"rank-cell"},zt={class:"user-cell"},It={class:"email-cell"},Lt={class:"count-cell"},Ht={class:"amount-cell"},Ot={key:1,class:"chart-empty"},qt={class:"payments-section"},Gt={class:"section-header"},Wt={class:"filters"},Xt={class:"payments-table-container"},Yt={key:0,class:"payments-table"},Jt={class:"id-cell"},Kt=["title"],Qt={class:"user-cell"},Zt={class:"user-info"},ts={class:"user-name"},ss={class:"user-email"},es={class:"type-cell"},as={class:"ad-cell"},ls=["title"],os={key:1,class:"text-muted"},ns={class:"amount-cell"},is={class:"amount"},ds={class:"currency"},rs={class:"method-cell"},us={class:"status-cell"},cs={class:"date-cell"},vs={class:"actions-cell"},ps=["onClick"],_s={key:1,class:"chart-empty"},ms={key:0,class:"pagination"},hs=["disabled"],ys={class:"page-info"},gs=["disabled"],bs={class:"modal"},ks={class:"modal-header"},fs={class:"modal-body"},ws={class:"detail-grid"},Cs={class:"detail-item"},Ps={class:"detail-value"},Ss={class:"detail-item"},$s={class:"detail-item"},xs={class:"detail-value"},Ms={class:"detail-item"},Ds={class:"detail-value"},Ts={class:"detail-item"},Us={class:"detail-value"},As={class:"detail-item"},Bs={key:0,class:"detail-item"},Ns={class:"detail-value"},Rs={class:"detail-item"},Vs={class:"detail-value"},Fs={key:1,class:"detail-item"},Es={class:"detail-value"},js={key:0,class:"crypto-details"},zs={class:"detail-grid"},Is={class:"detail-item"},Ls={class:"detail-value"},Hs={class:"detail-item"},Os={class:"detail-value"},qs={class:"detail-item"},Gs={class:"detail-value wallet-address"},Ws={key:0,class:"detail-item"},Xs={class:"detail-value tx-hash"},Ys={class:"detail-item"},Js={class:"detail-value"},Ks={key:1,class:"loading-overlay"},Qs=H({__name:"PaymentsDashboard",setup(r){const u=g(!1),o=g(null),y=g([]),v=g({current_page:1,last_page:1,per_page:20,total:0}),c=g({status:"",payment_method:"",page:1}),N=[{value:"",label:"All Status"},{value:"pending",label:"Pending"},{value:"confirmed",label:"Confirmed"},{value:"failed",label:"Failed"},{value:"refunded",label:"Refunded"}],R=[{value:"",label:"All Methods"}
1,{value:"stripe",label:"Stripe"},{value:"crypto",label:"Crypto"}],n=g(null),V=W(()=>o.value?.daily_revenue?.length&&Math.max(...o.value.daily_revenue.map(l=>l.total))||100),p=l=>new Intl.NumberFormat("en-EU",{style:"currency",currency:"EUR",minimumFractionDigits:2}).format(l||0),w=l=>l?new Date(l).toLocaleString("en-GB",{day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit"}):"N/A",F=l=>l?new Date(l).toLocaleDateString("en-GB",{day:"2-digit",month:"short"}):"",E=l=>({stripe:"Stripe (Card)",crypto:"Cryptocurrency"})[l]||l,$=l=>l?{top:"TOP",vip:"VIP",boost:"Boost"}[l]||l:"Unknown",j=(l,s)=>l?l.length>s?l.substring(0,s)+"...":l:"",C=(l,s)=>!l||!s?"":(l-s)/s*100>=0?"positive":"negative",P=(l,s,a)=>{if(!s||!l)return a||"";const _=(l-s)/s*100;return`${_>=0?"+":""}${_.toFixed(1)}% ${a}`},x=l=>Math.max(2,l/V.value*100),z=async()=>{try{const l=await J();o.value=l.stats}catch(l){console.error("Failed to load dashboard:",l)}},b=async()=>{u.value=!0;try{const l=await Y({page:c.value.page,status:c.value.status||void 0,payment_method:c.value.payment_method||void 0});y.value=l.data,v.value=l.meta}catch(l){console.error("Failed to load payments:",l)}finally{u.value=!1}},M=async()=>{u.value=!0;try{await Promise.all([z(),b()])}finally{u.value=!1}},D=l=>{c.value.page=l,b()},I=l=>{n.value=l},L=()=>{const l=new URLSearchParams;c.value.status&&l.set("status",c.value.status),c.value.payment_method&&l.set("payment_method",c.value.payment_method),window.open(`/admin/api/payments/export?${l.toString()}`,"_blank")};return O(()=>{M()}),(l,s)=>(d(),i("div",K,[t("div",{class:"page-header"},[s[8]||(s[8]=t("div",{class:"header-content"},[t("h1",{class:"page-title"},"Payments & Revenue"),t("p",{class:"page-subtitle"},"Monitor premium upgrades (TOP, VIP, Boost) and revenue")],-1)),t("div",{class:"header-actions"},[t("button",{class:"btn-secondary",onClick:L},[...s[6]||(s[6]=[t("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",width:"18",height:"18"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"})],-1),T(" Export CSV ",-1)])]),t("button",{class:"btn-primary",onClick:M},[...s[7]||(s[7]=[t("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",width:"18",height:"18"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})],-1),T(" Refresh ",-1)])])])]),t("div",Q,[t("div",Z,[s[9]||(s[9]=t("div",{class:"revenue-label"},"Today",-1)),t("div",tt,e(p(o.value?.revenue?.today||0)),1),t("div",{class:m(["revenue-comparison",C(o.value?.revenue?.today,o.value?.revenue?.yesterday)])},e(P(o.value?.revenue?.today,o.value?.revenue?.yesterday,"vs yesterday")),3)]),t("div",st,[s[10]||(s[10]=t("div",{class:"revenue-label"},"This Week",-1)),t("div",et,e(p(o.value?.revenue?.this_week||0)),1),t("div",{class:m(["revenue-comparison",C(o.value?.revenue?.this_week,o.value?.revenue?.last_week)])},e(P(o.value?.revenue?.this_week,o.value?.revenue?.last_week,"vs last week")),3)]),t("div",at,[s[11]||(s[11]=t("div",{class:"revenue-label"},"This Month",-1)),t("div",lt,e(p(o.value?.revenue?.this_month||0)),1),t("div",{class:m(["revenue-comparison",C(o.value?.revenue?.this_month,o.value?.revenue?.last_month)])},e(P(o.value?.revenue?.this_month,o.value?.revenue?.last_month,"vs last month")),3)]),t("div",ot,[s[12]||(s[12]=t("div",{class:"revenue-label"},"This Year",-1)),t("div",nt,e(p(o.value?.revenue?.this_year||0)),1),t("div",it,e(o.value?.revenue?.currency||"EUR"),1)])]),t("div",dt,[t("div",rt,[s[14]||(s[14]=t("div",{class:"status-icon"},[t("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",ut,[t("span",ct,e(o.value?.pending_count||0),1),s[13]||(s[13]=t("span",{class:"status-label"},"Pending Payments",-1))])]),t("div",vt,[s[16]||(s[16]=t("div",{class:"status-icon"},[t("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 10V3L4 14h7v7l9-11h-7z"})])],-1)),t("div",pt,[t("span",_t,e(o.value?.awaiting_crypto||0),1),s[15]||(s[15]=t("span",{class:"status-label"},"Awaiting Crypto Confirmation",-1))])]),t("div",mt,[s[18]||(s[18]=t("div",{class:"status-icon"},[t("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})])],-1)),t("div",ht,[t("span",yt,e(o.value?.failed_today||0),1),s[17]||(s[17]=t("span",{class:"status-label"},"Failed Today",-1))])])]),t("div",gt,[t("div",bt,[s[20]||(s[20]=t("h3",{class:"chart-title"},"Daily Revenue (Last 30 Days)",-1)),t("div",kt,[o.value?.daily_revenue?.length?(d(),i("div",ft,[(d(!0),i(k,null,f(o.value.daily_revenue,(a,_)=>(d(),i("div",{key:_,class:"chart-bar-group",title:`${a.date}: ${p(a.total)}`},[t("div",Ct,[t("div",{class:"bar bar-stripe",style:S({height:x(a.stripe)+"%"})},null,4),t("div",{class:"bar bar-crypto",style:S({height:x(a.crypto)+"%"})},null,4)]),_%5===0?(d(),i("span",Pt,e(F(a.date)),1)):h("",!0)],8,wt))),128))])):(d(),i("div",St,[...s[19]||(s[19]=[t("p",null,"No revenue data available",-1)])]))]),s[21]||(s[21]=q('<div class="chart-legend" data-v-b3225af9><div class="legend-item" data-v-b3225af9><span class="legend-color legend-stripe" data-v-b3225af9></span> Stripe </div><div class="legend-item" data-v-b3225af9><span class="legend-color legend-crypto" data-v-b3225af9></span> Crypto </div></div>',1))]),t("div",$t,[s[23]||(s[23]=t("h3",{class:"chart-title"},"Payment Methods",-1)),o.value?.payment_methods?.length?(d(),i("div",xt,[(d(!0),i(k,null,f(o.value.payment_methods,a=>(d(),i("div",{key:a.method,class:"method-item"},[t("div",Mt,[t("span",Dt,e(E(a.method)),1),t("span",Tt,e(a.count)+" payments",1)]),t("div",Ut,[t("span",At,e(p(a.amount)),1),t("span",Bt,e(a.percentage)+"%",1)]),t("div",Nt,[t("div",{class:"method-bar-fill",style:S({width:a.percentage+"%"})},null,4)])]))),128))])):(d(),i("div",Rt,[...s[22]||(s[22]=[t("p",null,"No payment data available",-1)])]))])]),t("div",Vt,[s[26]||(s[26]=t("h3",{class:"section-title"},"Top Spending Users",-1)),t("div",Ft,[o.value?.top_users?.length?(d(),i("table",Et,[s[24]||(s[24]=t("thead",null,[t("tr",null,[t("th",null,"Rank"),t("th",null,"User"),t("th",null,"Email"),t("th",null,"Payments"),t("th",null,"Total Spent")])],-1)),t("tbody",null,[(d(!0),i(k,null,f(o.value.top_users,(a,_)=>(d(),i("tr",{key:a.id},[t("td",jt,[t("span",{class:m(["rank-badge",`rank-${_+1}`])}
1,"#"+e(_+1),3)]),t("td",zt,e(a.name),1),t("td",It,e(a.email),1),t("td",Lt,e(a.total_payments),1),t("td",Ht,e(p(a.total_amount)),1)]))),128))])])):(d(),i("div",Ot,[...s[25]||(s[25]=[t("p",null,"No user data available",-1)])]))])]),t("div",qt,[t("div",Gt,[s[27]||(s[27]=t("h3",{class:"section-title"},"Recent Payments",-1)),t("div",Wt,[U(A,{"model-value":c.value.status||"",options:N,size:"sm","onUpdate:modelValue":s[0]||(s[0]=a=>{c.value.status=a||"",b()})},null,8,["model-value"]),U(A,{"model-value":c.value.payment_method||"",options:R,size:"sm","onUpdate:modelValue":s[1]||(s[1]=a=>{c.value.payment_method=a||"",b()})},null,8,["model-value"])])]),t("div",Xt,[y.value.length?(d(),i("table",Yt,[s[29]||(s[29]=t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"User"),t("th",null,"Type"),t("th",null,"Ad"),t("th",null,"Amount"),t("th",null,"Method"),t("th",null,"Status"),t("th",null,"Date"),t("th",null,"Actions")])],-1)),t("tbody",null,[(d(!0),i(k,null,f(y.value,a=>(d(),i("tr",{key:a.id},[t("td",Jt,[t("span",{class:"uuid-badge",title:a.uuid},e(a.uuid.substring(0,8))+"...",9,Kt)]),t("td",Qt,[t("div",Zt,[t("span",ts,e(a.user?.name||"N/A"),1),t("span",ss,e(a.user?.email||"N/A"),1)])]),t("td",es,[t("span",{class:m(["type-badge",`type-${a.type||"unknown"}`])},e($(a.type)),3)]),t("td",as,[a.ad?(d(),i("span",{key:0,class:"ad-title",title:a.ad.title},e(j(a.ad.title,20)),9,ls)):(d(),i("span",os,"-"))]),t("td",ns,[t("span",is,e(p(a.amount?.total||0)),1),t("span",ds,e(a.amount?.currency||"EUR"),1)]),t("td",rs,[t("span",{class:m(["method-badge",`method-${a.payment_method}`])},e(a.payment_method),3)]),t("td",us,[t("span",{class:m(["status-badge",`status-${a.status}`])},e(a.status),3)]),t("td",cs,e(w(a.created_at)),1),t("td",vs,[t("button",{class:"action-btn",onClick:_=>I(a),title:"View Details"},[...s[28]||(s[28]=[t("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",width:"16",height:"16"},[t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})],-1)])],8,ps)])]))),128))])])):(d(),i("div",_s,[...s[30]||(s[30]=[t("p",null,"No payments found",-1)])]))]),v.value.last_page>1?(d(),i("div",ms,[t("button",{class:"page-btn",disabled:v.value.current_page===1,onClick:s[2]||(s[2]=a=>D(v.value.current_page-1))}," Previous ",8,hs),t("span",ys,"Page "+e(v.value.current_page)+" of "+e(v.value.last_page),1),t("button",{class:"page-btn",disabled:v.value.current_page===v.value.last_page,onClick:s[3]||(s[3]=a=>D(v.value.current_page+1))}," Next ",8,gs)])):h("",!0)]),n.value?(d(),i("div",{key:0,class:"modal-overlay",onClick:s[5]||(s[5]=G(a=>n.value=null,["self"]))},[t("div",bs,[t("div",ks,[s[31]||(s[31]=t("h3",null,"Payment Details",-1)),t("button",{class:"modal-close",onClick:s[4]||(s[4]=a=>n.value=null)},"×")]),t("div",fs,[t("div",ws,[t("div",Cs,[s[32]||(s[32]=t("span",{class:"detail-label"},"UUID",-1)),t("span",Ps,e(n.value.uuid),1)]),t("div",Ss,[s[33]||(s[33]=t("span",{class:"detail-label"},"Status",-1)),t("span",{class:m(["status-badge",`status-${n.value.status}`])},e(n.value.status),3)]),t("div",$s,[s[34]||(s[34]=t("span",{class:"detail-label"},"Amount",-1)),t("span",xs,e(p(n.value.amount?.total||0))+" "+e(n.value.amount?.currency||"EUR"),1)]),t("div",Ms,[s[35]||(s[35]=t("span",{class:"detail-label"},"Method",-1)),t("span",Ds,e(n.value.payment_method),1)]),t("div",Ts,[s[36]||(s[36]=t("span",{class:"detail-label"},"User",-1)),t("span",Us,e(n.value.user?.name)+" ("+e(n.value.user?.email)+")",1)]),t("div",As,[s[37]||(s[37]=t("span",{class:"detail-label"},"Type",-1)),t("span",{class:m(["type-badge",`type-${n.value.type||"unknown"}`])},e($(n.value.type)),3)]),n.value.ad?(d(),i("div",Bs,[s[38]||(s[38]=t("span",{class:"detail-label"},"Ad",-1)),t("span",Ns,e(n.value.ad.title),1)])):h("",!0),t("div",Rs,[s[39]||(s[39]=t("span",{class:"detail-label"},"Created",-1)),t("span",Vs,e(w(n.value.created_at)),1)]),n.value.paid_at?(d(),i("div",Fs,[s[40]||(s[40]=t("span",{class:"detail-label"},"Paid",-1)),t("span",Es,e(w(n.value.paid_at)),1)])):h("",!0)]),n.value.crypto_invoice?(d(),i("div",js,[s[46]||(s[46]=t("h4",null,"Crypto Invoice",-1)),t("div",zs,[t("div",Is,[s[41]||(s[41]=t("span",{class:"detail-label"},"Crypto",-1)),t("span",Ls,e(n.value.crypto_invoice.cryptocurrency.toUpperCase()),1)]),t("div",Hs,[s[42]||(s[42]=t("span",{class:"detail-label"},"Amount",-1)),t("span",Os,e(n.value.crypto_invoice.crypto_amount),1)]),t("div",qs,[s[43]||(s[43]=t("span",{class:"detail-label"},"Wallet",-1)),t("span",Gs,e(n.value.crypto_invoice.wallet_address),1)]),n.value.crypto_invoice.transaction_hash?(d(),i("div",Ws,[s[44]||(s[44]=t("span",{class:"detail-label"},"TX Hash",-1)),t("span",Xs,e(n.value.crypto_invoice.transaction_hash),1)])):h("",!0),t("div",Ys,[s[45]||(s[45]=t("span",{class:"detail-label"},"Confirmations",-1)),t("span",Js,e(n.value.crypto_invoice.confirmations)+" / "+e(n.value.crypto_invoice.required_confirmations),1)])])])):h("",!0)])])])):h("",!0),u.value?(d(),i("div",Ks,[...s[47]||
1(s[47]=[t("div",{class:"loader"},null,-1)])])):h("",!0)]))}}),ee=X(Qs,[["__scopeId","data-v-b3225af9"]]);export{ee 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.