import{_ as ze}from"./BasicMainCard-0d04fecc.js";import{_ as we}from"./BasicModal.vue_vue_type_style_index_0_lang-02d666ae.js";import{_ as Fe}from"./BasicTextArea.vue_vue_type_style_index_0_lang-7b591fe9.js";import{_ as ke}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-4839fd2a.js";import{_ as Se}from"./BasicInput.vue_vue_type_style_index_0_lang-037e8d8d.js";import{_ as Oe,u as de}from"./useBaseTable-8cba60ae.js";import{_ as Ie}from"./button.vue_vue_type_style_index_0_lang-e2b25b37.js";import{_ as Me,G as $,J as Y,d as oe,g as I,h as D,v as Ce,D as f,o as B,c as H,F as qe,a as i,b as o,t as W,p as He,w as g,e as Z,r as Ke,E as je,i as ae,j as S,k as G,bB as Ze,H as pe,I as Ge}from"./index-ac7066b4.js";import{fetchMatchingUserIds as _e,applyEmbeddedUserSearch as Ve,applySupabaseFilter as Xe,applySupabasePagination as Je,formatTableResult as We}from"./supabaseTableQuery-8ab5665d.js";import{t as le}from"./useDataTime-8b5c8616.js";import{I as q}from"./Icon-7978fe0f.js";import{g as Ye}from"./index-d167af6e.js";import{e as me,g as fe}from"./convert-2ad76038.js";import{F as ve}from"./index-27f1c09e.js";import{a as Qe}from"./index-ff2f09c7.js";import{I as et}from"./index-62a931be.js";import{T as ge}from"./index-29b429a8.js";import{M as ne}from"./index-83a7641b.js";import{S as tt}from"./index-a074700a.js";import{T as j}from"./isSymbol-666d5768.js";import{U as at}from"./index-097ca7b7.js";import"./Grid-5e1e05b5.js";import"./index-d94bf113.js";import"./Col-c884cbb4.js";import"./styleChecker-8fccceee.js";import"./isPlainObject-a4fa2df5.js";import"./vnode-ef8e6ff6.js";import"./_plugin-vue_export-helper-4339814c.js";import"./index-e101c0bd.js";import"./SearchOutlined-36fcc6f3.js";import"./FormItemContext-8e774be4.js";import"./index-802e18b7.js";import"./index-74186c79.js";import"./usePrice-bc935b83.js";import"./updateLocale-199556b5.js";import"./useState-277f1e57.js";import"./useMemo-51fb250b.js";import"./lodash-875c0571.js";import"./index-25ae81e5.js";import"./Badge-fcb9007c.js";import"./isNumeric-3f69e2aa.js";import"./index-7f62cf48.js";import"./index-fa378035.js";import"./index-b18fec22.js";import"./index-5ae727af.js";import"./DialogWrap-4b820301.js";import"./pickAttrs-73e6cb05.js";import"./css-aae66f86.js";import"./toArray-518515e2.js";import"./index-f0d8ad9c.js";import"./_flatRest-843ce72e.js";import"./isMobile-e2e89480.js";import"./useRefs-a8a1b35f.js";function nt(e,t,n=(a,m)=>a[m]){const a=[...e],{sort:m,order:h}=t;if(m!=null&&m.key){const x=m.order==="asc";return a.sort((p,b)=>{const w=n(p,m.key),l=n(b,m.key);return wl?x?1:-1:0}),a}if(h){const x=!h.startsWith("-"),p=h.replace(/^[-+]/,"");return a.sort((b,w)=>{const l=n(b,p),k=n(w,p);return lk?x?1:-1:0}),a}return a}function Pe(e,t){return Math.max(0,Math.round(e*(1-(t||0)/100)))}async function st(e){const{TableEngineRequest:t}=await Me(()=>import("./buildSupabaseQuery-1daefa6e.js"),["assets/buildSupabaseQuery-1daefa6e.js","assets/index-ac7066b4.js","assets/index-2f53b9bc.css","assets/supabaseTableQuery-8ab5665d.js"]),n={...e};!n.sort&&!n.order&&(n.order="-sort_order");const a=await t(n,"subscription_plans");if(Array.isArray(a==null?void 0:a.rows)){const m=a.rows.map((h,x)=>({...h,index:x,final_price:Pe(Number(h.price),Number(h.discount_percent||0))}));return{...a,rows:m}}return a}const it=new Set(["plan_title","payment_status","status","final_price","expires_at","created_at","user_id","plan_id"]),rt=["plan_title","payment_status","status"],lt=new Set(["id","plan_title","final_price","payment_status","status","expires_at","created_at"]),ot=new Set(["user_name","user_phone"]);function ut(e){var a,m;const t=((a=e.sort)==null?void 0:a.key)||(e.order?String(e.order).replace(/^[-+]/,""):null);let n=!1;return(m=e.sort)!=null&&m.key?n=e.sort.order==="asc":e.order&&(n=!String(e.order).startsWith("-")),{sortKey:t||null,ascending:n}}function ye(e){const t=Array.isArray(e.users)?e.users[0]:e.users;let n="نامشخص";return t!=null&&t.name?n=t.name:t!=null&&t.first_name||t!=null&&t.last_name?n=`${t.first_name||""} ${t.last_name||""}`.trim():t!=null&&t.phone&&(n=t.phone),{...e,user_name:n,user_phone:(t==null?void 0:t.phone)||""}}async function ct(e){const{limit:t=20,page:n=1,search:a,filters:m}=e,{sortKey:h,ascending:x}=ut(e);let p=$.from("subscription_purchases").select("*, users(name, phone, first_name, last_name)",{count:"exact"});if(a!=null&&a.trim()){const k=await _e($,a);p=Ve(p,a,rt,k)}if(m!=null&&m.length){for(const k of m)if(!(k.hidden||!k.field)){if(k.field==="user_name"||k.field==="user_phone"){if(["eq","has","like"].includes(k.op)){const L=await _e($,String(k.value));L.length?p=p.in("user_id",L):p=p.eq("user_id","00000000-0000-0000-0000-000000000000")}continue}it.has(k.field)&&(p=Xe(p,k))}}if(h&&ot.has(h)){p=p.order("created_at",{ascending:!1}).order("id",{ascending:!1}),p=p.range(0,4999);const{data:k,error:L,count:A}=await p;if(L)throw L;const F=(k||[]).map(ye),E=nt(F,{sort:{key:h,order:x?"asc":"desc"}}),R=(n-1)*t,N=A??E.length;return{rows:E.slice(R,R+t).map((v,V)=>({...v,index:R+V})),total:N,query:{...e,page:n,limit:t,total:N}}}h&<.has(h)?p=p.order(h,{ascending:x,nullsFirst:!1}):p=p.order("created_at",{ascending:!1}),p=p.order("id",{ascending:!1}),p=Je(p,n,t);const{data:b,error:w,count:l}=await p;if(w)throw w;return We(b,l,e,ye)}async function dt(e){const{data:t,error:n}=await $.from("subscription_plans").insert([{title:e.title,description:e.description||null,image_url:e.image_url,price:e.price,discount_percent:e.discount_percent??0,duration_days:e.duration_days,is_active:e.is_active??!0,sort_order:e.sort_order??0}]).select().single();if(n)throw n;return t}async function pt(e,t){const{data:n,error:a}=await $.from("subscription_plans").update({title:t.title,description:t.description||null,image_url:t.image_url,price:t.price,discount_percent:t.discount_percent??0,duration_days:t.duration_days,is_active:t.is_active??!0,sort_order:t.sort_order??0,updated_at:new Date().toISOString()}).eq("id",e).select();if(a)throw a;return n}async function _t(e){const{error:t}=await $.from("subscription_plans").delete().eq("id",e);if(t)throw t}async function mt(e,t){const{data:n,error:a}=await $.from("subscription_plans").update({is_active:t,updated_at:new Date().toISOString()}).eq("id",e).select();if(a)throw a;return n}async function ft(){const{data:e,error:t}=await $.from("subscription_plans").select("id, title, duration_days, price, discount_percent, is_active").order("sort_order",{ascending:!1}).order("id",{ascending:!1});if(t)throw t;return e||[]}async function vt(){return await Y.post("/admin/subscription/reconcile-pending")}async function gt(e){return await Y.post("/admin/subscription/grant",e)}async function yt(e){return await Y.post("/admin/subscription/extend",e)}async function bt(e){return await Y.post(`/admin/subscription/${e}/cancel`,{mode:"cancel"})}async function ht(e){return await Y.delete(`/admin/subscription/${e}`)}function be(e){return Number(e||0).toLocaleString("fa-IR")}const xt=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>(e.record.index??0)+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"مدت (روز)",dataIndex:"duration_days",key:"duration_days",width:100,align:"center"},{title:"قیمت (ریال)",dataIndex:"price",key:"price",customRender:e=>be(e.record.price)},{title:"تخفیف %",dataIndex:"discount_percent",key:"discount_percent",width:90,align:"center"},{title:"قیمت نهایی",dataIndex:"final_price",key:"final_price",customRender:e=>be(e.record.final_price)},{title:"فعال",dataIndex:"is_active",key:"is_active",customRender:e=>e.record.is_active?"بله":"خیر"},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",width:80,align:"center"},{title:"ایجاد",dataIndex:"created_at",key:"created_at",customRender:e=>le(e.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];function wt(e){return Number(e||0).toLocaleString("fa-IR")}const he={pending:"در انتظار",paid:"پرداخت شده",failed:"ناموفق",cancelled:"لغو شده"},xe={pending:"در انتظار",active:"فعال",expired:"منقضی",cancelled:"لغو شده"},kt=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,sortable:!1,width:70,align:"center",customRender:e=>(e.record.index??0)+1},{title:"کاربر",dataIndex:"user_name",key:"user_name",filterField:"user_name",sortField:"user_name"},{title:"موبایل",dataIndex:"user_phone",key:"user_phone",filterField:"user_phone",sortField:"user_phone"},{title:"پلن",dataIndex:"plan_title",key:"plan_title",sortField:"plan_title"},{title:"مبلغ",dataIndex:"final_price",key:"final_price",type:"Number",sortField:"final_price",customRender:e=>wt(e.record.final_price)},{title:"پرداخت",dataIndex:"payment_status",key:"payment_status",type:"Select",filterField:"payment_status",sortField:"payment_status",filterComponentProps:{options:Object.entries(he).map(([e,t])=>({label:t,value:e})),allowClear:!0,placeholder:"انتخاب وضعیت پرداخت"},customRender:e=>he[e.record.payment_status]||e.record.payment_status},{title:"وضعیت",dataIndex:"status",key:"status",type:"Select",filterField:"status",sortField:"status",filterComponentProps:{options:Object.entries(xe).map(([e,t])=>({label:t,value:e})),allowClear:!0,placeholder:"انتخاب وضعیت"},customRender:e=>xe[e.record.status]||e.record.status},{title:"انقضا",dataIndex:"expires_at",key:"expires_at",type:"DateTime",sortField:"expires_at",customRender:e=>e.record.expires_at?le(e.record.expires_at):"-"},{title:"تاریخ خرید",dataIndex:"created_at",key:"created_at",type:"DateTime",sortField:"created_at",customRender:e=>le(e.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",filterable:!1,sortable:!1,width:140,align:"center"}],z={ZARINPAL_MERCHANT_ID:"zarinpal_merchant_id",ZARINPAL_SANDBOX:"zarinpal_sandbox",SUBSCRIPTION_CALLBACK_URL:"subscription_app_callback_url",ZARINPAL_ENABLED:"zarinpal_enabled"},St=Object.values(z);function It(e){const t=(e[z.ZARINPAL_SANDBOX]||"no").toLowerCase(),n=(e[z.ZARINPAL_ENABLED]||"yes").toLowerCase();return{zarinpal_merchant_id:e[z.ZARINPAL_MERCHANT_ID]||"",zarinpal_sandbox:t==="yes"||t==="true"||t==="1",zarinpal_enabled:n!=="no"&&n!=="false"&&n!=="0",subscription_app_callback_url:e[z.SUBSCRIPTION_CALLBACK_URL]||"https://macharta.ir"}}async function se(e,t){const{data:n,error:a}=await $.from("configs").select("id").eq("key",e).maybeSingle();if(a)throw a;if(n!=null&&n.id){const{data:x,error:p}=await $.from("configs").update({value:t}).eq("key",e).select("id");if(p)throw p;if(!(x!=null&&x.length))throw new Error("ذخیره انجام نشد. لطفاً migration دسترسی configs را در Supabase اجرا کنید.");return}const{data:m,error:h}=await $.from("configs").insert({key:e,value:t}).select("id");if(h)throw h;if(!(m!=null&&m.length))throw new Error("ایجاد تنظیم انجام نشد. لطفاً migration دسترسی configs را در Supabase اجرا کنید.")}async function Ae(){const{data:e,error:t}=await $.from("configs").select("key, value").in("key",St);if(t)throw t;const n=(e||[]).reduce((a,m)=>(a[m.key]=m.value??"",a),{});return It(n)}async function Ct(e){return await se(z.ZARINPAL_MERCHANT_ID,e.zarinpal_merchant_id.trim()),await se(z.ZARINPAL_SANDBOX,e.zarinpal_sandbox?"yes":"no"),await se(z.ZARINPAL_ENABLED,e.zarinpal_enabled?"yes":"no"),await se(z.SUBSCRIPTION_CALLBACK_URL,e.subscription_app_callback_url.trim().replace(/\/$/,"")),Ae()}const Pt={class:"max-w-2xl space-y-4"},At=i("p",{class:"text-sm text-gray-600 mb-4"}," کد مرچنت و آدرس بازگشت از درگاه در اینجا تنظیم می‌شود. اپ کاربر از همین تنظیمات برای اتصال به زرین‌پال استفاده می‌کند. ",-1),Rt={key:0,class:"py-8 text-center"},Lt=i("div",{class:"mb-1 text-sm text-gray-600"},"کد مرچنت زرین‌پال (Merchant ID)",-1),Tt=i("div",{class:"mb-1 text-sm text-gray-600"},"آدرس بازگشت از درگاه (URL اپ کاربر)",-1),$t=i("div",{class:"text-xs text-gray-500 mt-1"},[Z(" مسیر callback به‌صورت خودکار اضافه می‌شود: "),i("code",null,"/subscriptions/callback")],-1),Nt={class:"flex items-center gap-3"},Ut=i("span",{class:"text-sm"},"فعال بودن درگاه زرین‌پال",-1),Bt={class:"flex items-center gap-3"},Et=i("span",{class:"text-sm"},"حالت تست (Sandbox)",-1),Dt=oe({__name:"PaymentGatewaySettings",setup(e){const t=I(!0),n=I(!1),a=I({zarinpal_merchant_id:"",zarinpal_sandbox:!1,zarinpal_enabled:!0,subscription_app_callback_url:"https://macharta.ir"}),m=D(()=>{var b;return a.value.zarinpal_enabled?a.value.zarinpal_sandbox?!0:!!((b=a.value.zarinpal_merchant_id)!=null&&b.trim()):!1}),h=D(()=>{var b;return a.value.zarinpal_enabled?a.value.zarinpal_sandbox?"حالت تست فعال است — پرداخت از sandbox زرین‌پال انجام می‌شود.":(b=a.value.zarinpal_merchant_id)!=null&&b.trim()?"درگاه برای پرداخت واقعی آماده است.":"کد مرچنت وارد نشده — درگاه آماده پرداخت واقعی نیست.":"درگاه غیرفعال است — کاربران نمی‌توانند پرداخت کنند."}),x=D(()=>m.value?"bg-green-50 border-green-200 text-green-800":"bg-amber-50 border-amber-200 text-amber-800");Ce(async()=>{try{a.value=await Ae()}catch(b){f.error((b==null?void 0:b.message)||"خطا در بارگذاری تنظیمات")}finally{t.value=!1}});async function p(){var b,w;if(!((b=a.value.subscription_app_callback_url)!=null&&b.trim())){f.warning("آدرس بازگشت از درگاه الزامی است");return}if(a.value.zarinpal_enabled&&!a.value.zarinpal_sandbox&&!((w=a.value.zarinpal_merchant_id)!=null&&w.trim())){f.warning("برای پرداخت واقعی، کد مرچنت الزامی است");return}n.value=!0;try{a.value=await Ct(a.value),f.success("تنظیمات درگاه ذخیره شد")}catch(l){f.error((l==null?void 0:l.message)||"خطا در ذخیره")}finally{n.value=!1}}return(b,w)=>{const l=Se,k=ke,L=Ie;return B(),H("div",Pt,[At,t.value?(B(),H("div",Rt,"در حال بارگذاری...")):(B(),H(qe,{key:1},[i("div",null,[Lt,o(l,{value:a.value.zarinpal_merchant_id,"onUpdate:value":w[0]||(w[0]=A=>a.value.zarinpal_merchant_id=A),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},null,8,["value"])]),i("div",null,[Tt,o(l,{value:a.value.subscription_app_callback_url,"onUpdate:value":w[1]||(w[1]=A=>a.value.subscription_app_callback_url=A),placeholder:"https://macharta.ir"},null,8,["value"]),$t]),i("div",Nt,[o(k,{value:a.value.zarinpal_enabled,"onUpdate:value":w[2]||(w[2]=A=>a.value.zarinpal_enabled=A)},null,8,["value"]),Ut]),i("div",Bt,[o(k,{value:a.value.zarinpal_sandbox,"onUpdate:value":w[3]||(w[3]=A=>a.value.zarinpal_sandbox=A)},null,8,["value"]),Et]),i("div",{class:He(["rounded-lg border p-3 text-sm",x.value])},W(h.value),3),o(L,{type:"primary",loading:n.value,onClick:p},{default:g(()=>[Z(" ذخیره تنظیمات درگاه ")]),_:1},8,["loading"])],64))])}}}),zt={key:3,class:"text-sm text-gray-500"},Ft=oe({__name:"AdminUserSubscriptionModal",props:{visible:{type:Boolean},mode:{},purchaseId:{},lockedUserId:{}},emits:["update:visible","success"],setup(e,{emit:t}){const n=e,a=Qe,m=et,h=ve,x=ve.Item,p=I(!1),b=I([]),w=I([]),l=Ke({user_id:void 0,plan_id:void 0,duration_days:null}),k=D({get:()=>n.visible,set:u=>t("update:visible",u)}),L=D(()=>n.mode==="grant"?"ایجاد اشتراک برای کاربر":"تمدید اشتراک"),A=D(()=>n.mode==="grant"?"ایجاد اشتراک":"تمدید"),F=D(()=>b.value.map(u=>{const _=u.name||`${u.first_name||""} ${u.last_name||""}`.trim()||"بدون نام",C=u.phone||"";return{value:u.id,label:C?`${_} — ${C}`:_,searchText:`${_} ${C}`.toLowerCase()}})),E=D(()=>w.value.map(u=>({value:u.id,label:`${u.title} (${u.duration_days} روز)${u.is_active?"":" — غیرفعال"}`,searchText:String(u.title||"").toLowerCase()}))),R=D(()=>w.value.find(u=>u.id===l.plan_id)||null);function N(u,_){return String((_==null?void 0:_.searchText)||(_==null?void 0:_.label)||"").toLowerCase().includes(u.toLowerCase())}function K(u,_){return String((_==null?void 0:_.searchText)||(_==null?void 0:_.label)||"").toLowerCase().includes(u.toLowerCase())}function v(){n.mode==="grant"&&R.value&&!l.duration_days&&(l.duration_days=Number(R.value.duration_days)||null)}function V(){l.user_id=n.lockedUserId||void 0,l.plan_id=void 0,l.duration_days=n.mode==="extend"?30:null}function Q(){t("update:visible",!1)}async function ee(){try{const[u,_]=await Promise.all([Ze(),ft()]);b.value=u||[],w.value=_||[]}catch(u){f.error((u==null?void 0:u.message)||"خطا در بارگذاری اطلاعات")}}async function te(){var u,_;if(n.mode==="grant"){if(!l.user_id){f.warning("کاربر را انتخاب کنید");return}if(!l.plan_id){f.warning("پلن را انتخاب کنید");return}}if(n.mode==="extend"){if(!n.purchaseId&&!l.user_id){f.warning("کاربر را انتخاب کنید");return}if(!l.duration_days||l.duration_days<1){f.warning("مدت تمدید را وارد کنید");return}}p.value=!0;try{if(n.mode==="grant"){const C={user_id:l.user_id,plan_id:l.plan_id};l.duration_days&&l.duration_days>0&&(C.duration_days=Number(l.duration_days)),await gt(C),f.success("اشتراک ایجاد شد")}else await yt({purchase_id:n.purchaseId||void 0,user_id:n.purchaseId?void 0:l.user_id,plan_id:l.plan_id||void 0,duration_days:Number(l.duration_days)}),f.success("اشتراک تمدید شد");t("success"),Q()}catch(C){f.error(((_=(u=C==null?void 0:C.response)==null?void 0:u.data)==null?void 0:_.message)||(C==null?void 0:C.message)||"خطا در ذخیره")}finally{p.value=!1}}return je(()=>n.visible,u=>{u&&(V(),(!b.value.length||!w.value.length)&&ee())}),Ce(()=>{ee()}),(u,_)=>{const C=we;return B(),ae(C,{visible:k.value,"onUpdate:visible":_[4]||(_[4]=U=>k.value=U),title:L.value,"ok-text":A.value,"cancel-text":"انصراف","confirm-loading":p.value,width:"560px",onOk:te,onCancel:Q},{default:g(()=>[o(S(h),{layout:"vertical"},{default:g(()=>[u.mode==="grant"||u.mode==="extend"&&!u.purchaseId?(B(),ae(S(x),{key:0,label:"کاربر",required:""},{default:g(()=>[o(S(a),{value:l.user_id,"onUpdate:value":_[0]||(_[0]=U=>l.user_id=U),"show-search":"",placeholder:"جستجو با نام یا موبایل",options:F.value,"filter-option":N,disabled:!!u.lockedUserId},null,8,["value","options","disabled"])]),_:1})):G("",!0),u.mode==="grant"?(B(),ae(S(x),{key:1,label:"پلن اشتراک",required:""},{default:g(()=>[o(S(a),{value:l.plan_id,"onUpdate:value":_[1]||(_[1]=U=>l.plan_id=U),"show-search":"",placeholder:"انتخاب پلن",options:E.value,"filter-option":K,onChange:v},null,8,["value","options"])]),_:1})):G("",!0),u.mode==="extend"&&!u.purchaseId?(B(),ae(S(x),{key:2,label:"پلن (اختیاری)"},{default:g(()=>[o(S(a),{value:l.plan_id,"onUpdate:value":_[2]||(_[2]=U=>l.plan_id=U),"show-search":"","allow-clear":"",placeholder:"در صورت خالی بودن از پلن فعال کاربر استفاده می‌شود",options:E.value,"filter-option":K},null,8,["value","options"])]),_:1})):G("",!0),o(S(x),{label:u.mode==="grant"?"مدت (روز) — اختیاری برای جایگزینی مدت پلن":"مدت تمدید (روز)",required:u.mode==="extend"},{default:g(()=>[o(S(m),{value:l.duration_days,"onUpdate:value":_[3]||(_[3]=U=>l.duration_days=U),min:1,class:"w-full",placeholder:u.mode==="grant"?"خالی = مدت پیش‌فرض پلن":"مثلاً ۳۰"},null,8,["value","placeholder"])]),_:1},8,["label","required"]),u.mode==="grant"&&R.value?(B(),H("div",zt," مدت پیش‌فرض پلن: "+W(R.value.duration_days)+" روز ",1)):G("",!0)]),_:1})]),_:1},8,["visible","title","ok-text","confirm-loading"])}}}),Ot={class:"flex justify-between items-center mb-4"},Mt=i("h2",null,"مدیریت اشتراک‌ها",-1),qt={class:"gap-2 flex justify-center"},Ht=i("span",null,"حذف",-1),Kt=i("span",null,"ویرایش",-1),jt={class:"flex justify-between items-center mb-4"},Zt=i("h2",null,"لیست خرید اشتراک",-1),Gt={class:"flex gap-2"},Vt={class:"gap-2 flex justify-center"},Xt=i("span",null,"تمدید",-1),Jt=i("span",null,"لغو اشتراک",-1),Wt=i("span",null,"حذف",-1),Yt=i("div",{class:"mb-4"},[i("h2",null,"تنظیمات درگاه پرداخت")],-1),Qt={class:"space-y-4 relative"},ea={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},ta={class:"grid grid-cols-2 gap-4"},aa=i("div",{class:"mb-1 text-sm text-gray-600"},"عنوان اشتراک",-1),na=i("div",{class:"mb-1 text-sm text-gray-600"},"مدت اشتراک (روز)",-1),sa={class:"grid grid-cols-3 gap-4"},ia=i("div",{class:"mb-1 text-sm text-gray-600"},"مبلغ (ریال)",-1),ra=i("div",{class:"mb-1 text-sm text-gray-600"},"تخفیف (درصد)",-1),la=i("div",{class:"mb-1 text-sm text-gray-600"},"قیمت نهایی (ریال)",-1),oa={class:"mt-2 font-semibold text-green-700"},ua={class:"grid grid-cols-2 gap-4"},ca=i("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),da=i("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت",-1),pa={class:"flex items-center gap-2 mt-2"},_a={class:"text-sm text-gray-600"},ma=i("div",{class:"mb-1 text-sm text-gray-600"},"توضیحات",-1),fa={class:"flex justify-center"},va=i("div",{class:"mb-1 text-sm text-gray-600"},"تصویر اشتراک",-1),ga={key:0},ya=i("div",null,"آپلود تصویر",-1),bn=oe({__name:"index",setup(e){const t=ge,n=ge.TabPane,a=I("plans"),m=I(!1),h=I(!1),x=I(null),[p,b]=de(),[w,l]=de(),k=I(!1),L=I("grant"),A=I(null),F=I(null),E=I(!1),R=I([]),N=I(0),K=()=>({title:"",description:"",image_url:null,price:0,discount_percent:0,duration_days:30,is_active:!0,sort_order:0}),v=I(K()),V=D(()=>Pe(Number(v.value.price),Number(v.value.discount_percent)).toLocaleString("fa-IR")),Q={columns:xt,api:st,defaultPageLimit:20},ee={columns:kt,api:ct,defaultPageLimit:20};function te(){v.value=K(),R.value=[]}function u(){h.value=!1,x.value=null,te(),m.value=!0}function _(){m.value=!1,te()}function C(c){return c.type.startsWith("image/")?c.size/1024/1024>=5?(f.error("حجم تصویر باید کمتر از 5MB باشد"),!1):!0:(f.error("فقط فایل تصویری مجاز است"),!1)}async function U(c){const{file:s,onSuccess:y,onError:d,onProgress:T}=c,O=new FormData;O.append("file",s);const X=`${Ge}/upload/machartaa-img`;N.value++,await new Promise((ie,J)=>{const r=new XMLHttpRequest;r.open("POST",X);const M=Ye()||localStorage.getItem("tamin_token")||"";r.setRequestHeader("Authorization",`Bearer ${M}`),r.upload.onprogress=P=>{P.lengthComputable&&(T==null||T({percent:Math.round(P.loaded/P.total*100)}))},r.onload=()=>{if(r.status>=200&&r.status<300)try{const P=JSON.parse(r.responseText||"{}"),De=P.full_src||P.url||P.src||P.path||P.data&&(P.data.full_src||P.data.url||P.data.src||P.data.path)||"",re=me(De),ce=fe(re);v.value.image_url=re,R.value=ce?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:ce,response:{path:re}}]:[],y==null||y(P,r),f.success("تصویر با موفقیت آپلود شد!"),ie()}catch(P){d==null||d(P,r),J(P)}else d==null||d(new Error("خطا در آپلود تصویر"),r),J(new Error("خطا در آپلود تصویر"))},r.onerror=()=>{d==null||d(new Error("خطا در آپلود تصویر"),r),J(new Error("خطا در آپلود تصویر"))},r.onloadend=()=>{N.value=Math.max(0,N.value-1)},r.send(O)})}async function Re(){var c;if(N.value>0){f.warning("لطفاً تا پایان آپلود صبر کنید");return}if(!((c=v.value.title)!=null&&c.trim())){f.warning("عنوان الزامی است");return}if(!v.value.duration_days||Number(v.value.duration_days)<1){f.warning("مدت اشتراک باید حداقل ۱ روز باشد");return}try{const s={...v.value,price:Number(v.value.price)||0,discount_percent:Number(v.value.discount_percent)||0,duration_days:Number(v.value.duration_days),sort_order:Number(v.value.sort_order)||0};h.value&&x.value?(await pt(x.value,s),f.success("اشتراک ویرایش شد")):(await dt(s),f.success("اشتراک افزوده شد")),_(),await b()}catch(s){f.error((s==null?void 0:s.message)||"خطا در ذخیره")}}function Le(c){h.value=!0,x.value=c.id;const s=me(c.image_url)||null;v.value={title:c.title||"",description:c.description||"",image_url:s,price:c.price||0,discount_percent:c.discount_percent||0,duration_days:c.duration_days||30,is_active:c.is_active??!0,sort_order:c.sort_order??0};const y=s?fe(s):null;R.value=y?[{uid:"-1",name:"image.jpg",status:"done",url:y,response:{path:s}}]:[],m.value=!0}function Te(c){ne.confirm({title:"حذف اشتراک",content:`آیا از حذف «${c.title}» مطمئن هستید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await _t(c.id),f.success("حذف شد"),await b()}catch(s){f.error((s==null?void 0:s.message)||"خطا در حذف")}}})}async function $e(c){try{await mt(c.id,!c.is_active),f.success("وضعیت به‌روز شد"),await b()}catch(s){f.error((s==null?void 0:s.message)||"خطا")}}function Ne(){L.value="grant",A.value=null,F.value=null,k.value=!0}async function Ue(){E.value||ne.confirm({title:"همگام‌سازی پرداخت‌های زرین‌پال",content:"لیست تراکنش‌های موفقِ اعتبارسنجی‌نشده از زرین‌پال گرفته می‌شود، با توکن تراکنش‌های اشتراک تطبیق داده می‌شود و در صورت تطبیق، اشتراک کاربر فعال می‌شود. ادامه می‌دهید؟",okText:"همگام‌سازی",cancelText:"انصراف",centered:!0,onOk:async()=>{var c,s;E.value=!0;try{const y=await vt(),d=(y==null?void 0:y.data)??y,T=Number((d==null?void 0:d.reconciled_count)||0),O=Number((d==null?void 0:d.total_zarinpal)||0),X=Number((d==null?void 0:d.matched_count)||0);T>0?f.success((d==null?void 0:d.message)||`${T} اشتراک فعال شد.`):f.info((d==null?void 0:d.message)||(O>0?`از ${O} تراکنش زرین‌پال، ${X} مورد با اشتراک محلی تطبیق خورد ولی فعال‌سازی انجام نشد.`:"تراکنش موفقِ اعتبارسنجی‌نشده‌ای در زرین‌پال یافت نشد.")),await l()}catch(y){f.error(((s=(c=y==null?void 0:y.response)==null?void 0:c.data)==null?void 0:s.message)||(y==null?void 0:y.message)||"خطا در همگام‌سازی پرداخت‌ها")}finally{E.value=!1}}})}function ue(c){L.value="extend",A.value=(c==null?void 0:c.id)??null,F.value=(c==null?void 0:c.user_id)??null,k.value=!0}function Be(c){ne.confirm({title:"لغو اشتراک",content:`اشتراک «${c.plan_title}» برای ${c.user_name||"کاربر"} لغو شود؟ اعتبار کاربر قطع می‌شود.`,okText:"بله، لغو کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{var s,y;try{await bt(c.id),f.success("اشتراک لغو شد"),await l()}catch(d){f.error(((y=(s=d==null?void 0:d.response)==null?void 0:s.data)==null?void 0:y.message)||(d==null?void 0:d.message)||"خطا در لغو")}}})}function Ee(c){ne.confirm({title:"حذف کامل",content:`رکورد خرید «${c.plan_title}» برای ${c.user_name||"کاربر"} کامل حذف شود؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{var s,y;try{await ht(c.id),f.success("حذف شد"),await l()}catch(d){f.error(((y=(s=d==null?void 0:d.response)==null?void 0:s.data)==null?void 0:y.message)||(d==null?void 0:d.message)||"خطا در حذف")}}})}return(c,s)=>{const y=Ie,d=Oe,T=Se,O=ke,X=Fe,ie=we,J=ze;return B(),H("div",null,[o(J,null,{default:g(()=>[o(S(t),{activeKey:a.value,"onUpdate:activeKey":s[2]||(s[2]=r=>a.value=r)},{default:g(()=>[o(S(n),{key:"plans",tab:"پلن‌های اشتراک"},{default:g(()=>[i("div",Ot,[Mt,o(y,{type:"primary",onClick:u},{default:g(()=>[Z("افزودن اشتراک")]),_:1})]),o(d,pe(Q,{ref:"table",onRegister:S(p)}),{action:g(({record:r})=>[i("div",qt,[o(S(j),{class:"cursor-pointer"},{title:g(()=>[i("span",null,W(r.is_active?"غیرفعال کردن":"فعال کردن"),1)]),default:g(()=>[o(q,{icon:r.is_active?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:r.is_active?"#F59E0B":"#16A34A",onClick:M=>$e(r)},null,8,["icon","color","onClick"])]),_:2},1024),o(S(j),{class:"cursor-pointer"},{title:g(()=>[Ht]),default:g(()=>[o(q,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:M=>Te(r)},null,8,["onClick"])]),_:2},1024),o(S(j),{class:"cursor-pointer"},{title:g(()=>[Kt]),default:g(()=>[o(q,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:M=>Le(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),o(S(n),{key:"purchases",tab:"خریدهای کاربران"},{default:g(()=>[i("div",jt,[Zt,i("div",Gt,[o(y,{loading:E.value,onClick:Ue},{default:g(()=>[Z(" همگام‌سازی پرداخت‌های زرین‌پال ")]),_:1},8,["loading"]),o(y,{onClick:s[0]||(s[0]=r=>ue())},{default:g(()=>[Z("تمدید اشتراک")]),_:1}),o(y,{type:"primary",onClick:s[1]||(s[1]=r=>Ne())},{default:g(()=>[Z("ایجاد اشتراک برای کاربر")]),_:1})])]),o(d,pe(ee,{onRegister:S(w)}),{action:g(({record:r})=>[i("div",Vt,[o(S(j),{class:"cursor-pointer"},{title:g(()=>[Xt]),default:g(()=>[o(q,{icon:"vuesax-linear:add-circle",color:"#059669",onClick:M=>ue(r)},null,8,["onClick"])]),_:2},1024),o(S(j),{class:"cursor-pointer"},{title:g(()=>[Jt]),default:g(()=>[o(q,{icon:"vuesax-linear:close-circle",color:"#F59E0B",onClick:M=>Be(r)},null,8,["onClick"])]),_:2},1024),o(S(j),{class:"cursor-pointer"},{title:g(()=>[Wt]),default:g(()=>[o(q,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:M=>Ee(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),o(S(n),{key:"gateway",tab:"تنظیمات درگاه (زرین‌پال)"},{default:g(()=>[Yt,o(Dt)]),_:1})]),_:1},8,["activeKey"]),o(ie,{visible:m.value,"onUpdate:visible":s[11]||(s[11]=r=>m.value=r),title:h.value?"ویرایش اشتراک":"افزودن اشتراک",onOk:Re,onCancel:_,width:"70%",confirmLoading:N.value>0},{default:g(()=>[i("div",Qt,[N.value>0?(B(),H("div",ea,[o(S(tt),{size:"large"})])):G("",!0),i("div",ta,[i("div",null,[aa,o(T,{value:v.value.title,"onUpdate:value":s[3]||(s[3]=r=>v.value.title=r),placeholder:"مثلاً اشتراک یک ماهه"},null,8,["value"])]),i("div",null,[na,o(T,{value:v.value.duration_days,"onUpdate:value":s[4]||(s[4]=r=>v.value.duration_days=r),type:"number",min:"1",placeholder:"30"},null,8,["value"])])]),i("div",sa,[i("div",null,[ia,o(T,{value:v.value.price,"onUpdate:value":s[5]||(s[5]=r=>v.value.price=r),type:"number",min:"0",placeholder:"100000"},null,8,["value"])]),i("div",null,[ra,o(T,{value:v.value.discount_percent,"onUpdate:value":s[6]||(s[6]=r=>v.value.discount_percent=r),type:"number",min:"0",max:"100",placeholder:"0"},null,8,["value"])]),i("div",null,[la,i("div",oa,W(V.value),1)])]),i("div",ua,[i("div",null,[ca,o(T,{value:v.value.sort_order,"onUpdate:value":s[7]||(s[7]=r=>v.value.sort_order=r),type:"number",placeholder:"0"},null,8,["value"])]),i("div",null,[da,i("div",pa,[o(O,{value:v.value.is_active,"onUpdate:value":s[8]||(s[8]=r=>v.value.is_active=r)},null,8,["value"]),i("span",_a,W(v.value.is_active?"فعال":"غیرفعال"),1)])])]),i("div",null,[ma,o(X,{value:v.value.description,"onUpdate:value":s[9]||(s[9]=r=>v.value.description=r),placeholder:"توضیحات اشتراک",rows:4},null,8,["value"])]),i("div",fa,[i("div",null,[va,o(S(at),{"file-list":R.value,"onUpdate:fileList":s[10]||(s[10]=r=>R.value=r),"before-upload":C,"custom-request":U,accept:"image/*","max-count":1,"list-type":"picture-card"},{default:g(()=>[R.value.length<1?(B(),H("div",ga,[o(q,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),ya])):G("",!0)]),_:1},8,["file-list"])])])])]),_:1},8,["visible","title","confirmLoading"]),o(Ft,{visible:k.value,"onUpdate:visible":s[12]||(s[12]=r=>k.value=r),mode:L.value,"purchase-id":A.value,"locked-user-id":F.value,onSuccess:S(l)},null,8,["visible","mode","purchase-id","locked-user-id","onSuccess"])]),_:1})])}}});export{bn as default};