Files
machartaa_admin_dist/dist/assets/index-603a4218.js
T
2026-08-25 15:58:39 +03:30

2 lines
45 KiB
JavaScript

import{_ as Ze}from"./BasicMainCard-858b87e5.js";import{_ as ke}from"./BasicModal.vue_vue_type_style_index_0_lang-5e13aafb.js";import{_ as He}from"./BasicTextArea.vue_vue_type_style_index_0_lang-c355f486.js";import{_ as De}from"./BaseSwitch.vue_vue_type_script_setup_true_lang-781130e9.js";import{_ as Me}from"./BasicInput.vue_vue_type_style_index_0_lang-0a0d6ad5.js";import{_ as Ie,u as ve}from"./useBaseTable-fbe43a97.js";import{_ as $e}from"./button.vue_vue_type_style_index_0_lang-56e9b09f.js";import{g as Fe,a as We,b as Xe,c as Qe,d as Ye,e as et,f as tt,h as at,u as lt,i as st,j as it,t as nt,k as ot,l as ut,m as rt}from"./subscription-1240c644.js";import{t as pe}from"./useDataTime-75033b2a.js";import{I as J}from"./Icon-7c626614.js";import{O as Oe,d as _e,i as y,j as V,x as Ce,G as p,o as U,c as A,F as ne,b as o,e as a,t as me,s as dt,w as n,f as P,h as be,y as xe,k as ee,l as u,n as q,bI as ct,_ as mt,H as pt,I as _t,J as vt,T as ft,K as fe,L as gt}from"./index-864e73c5.js";import{g as yt}from"./index-ee82d0b5.js";import{e as Te,g as Se}from"./convert-2ad76038.js";import{_ as bt,v as Re,t as Pe}from"./AudienceSegmentPicker.vue_vue_type_script_setup_true_lang-86971893.js";import{F as he,_ as xt}from"./index-391eda35.js";import{I as we}from"./index-7c172d43.js";import{R as oe,C as ye,b as ht}from"./index-01d39c58.js";import{M as ue,_ as wt}from"./index-e0e66192.js";import{_ as ze}from"./index-72f07d1b.js";import{I as Ee}from"./index-6355e345.js";import{_ as kt}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-38e7aa78.js";import{_ as It}from"./CustomTag.vue_vue_type_script_setup_true_lang-74f15e81.js";import{T as H}from"./isSymbol-cbbd997a.js";import{T as Le}from"./index-846ea911.js";import{S as $t}from"./index-bd9719ff.js";import{U as Ct}from"./index-00a79bb5.js";import"./Grid-b4a61c99.js";import"./index-faaf1291.js";import"./Col-55712802.js";import"./styleChecker-4198f097.js";import"./isPlainObject-13142948.js";import"./vnode-81e10d7c.js";import"./_plugin-vue_export-helper-a65526b0.js";import"./usePrice-bc935b83.js";import"./updateLocale-71589e17.js";import"./index-69195e76.js";import"./shallowequal-c06f2dba.js";import"./useState-85b22590.js";import"./useMemo-652a8e82.js";import"./FormItemContext-37273d98.js";import"./omit-ab9263d6.js";import"./lodash-ba10e651.js";import"./index-974d8184.js";import"./Badge-7246b1a5.js";import"./isNumeric-3f69e2aa.js";import"./index-3799ba3b.js";import"./index-e764b6ae.js";import"./index-07df2e8f.js";import"./supabaseTableQuery-21eb0a11.js";import"./dayjs-fe535eb1.js";import"./_flatRest-2445814a.js";import"./toArray-21522b5d.js";import"./index-e8adaad2.js";import"./SearchOutlined-8ea30c34.js";import"./index-b21b8492.js";import"./DialogWrap-8cebf5f4.js";import"./pickAttrs-bb0043f0.js";import"./css-aae66f86.js";import"./isMobile-e2e89480.js";import"./useRefs-d7f22ed1.js";import"./index-041723b0.js";function Be(t){return Number(t||0).toLocaleString("fa-IR")}const Ut=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:t=>(t.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:t=>Be(t.record.price)},{title:"تخفیف %",dataIndex:"discount_percent",key:"discount_percent",width:90,align:"center"},{title:"قیمت نهایی",dataIndex:"final_price",key:"final_price",customRender:t=>Be(t.record.final_price)},{title:"فعال",dataIndex:"is_active",key:"is_active",customRender:t=>t.record.is_active?"بله":"خیر"},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",width:80,align:"center"},{title:"ایجاد",dataIndex:"created_at",key:"created_at",customRender:t=>pe(t.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}];function Tt(t){return Number(t||0).toLocaleString("fa-IR")}const Ne={pending:"در انتظار",paid:"پرداخت شده",failed:"ناموفق",cancelled:"لغو شده"},Ae={pending:"در انتظار",active:"فعال",expired:"منقضی",cancelled:"لغو شده"},St=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,sortable:!1,width:70,align:"center",customRender:t=>(t.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:t=>Tt(t.record.final_price)},{title:"پرداخت",dataIndex:"payment_status",key:"payment_status",type:"Select",filterField:"payment_status",sortField:"payment_status",filterComponentProps:{options:Object.entries(Ne).map(([t,g])=>({label:g,value:t})),allowClear:!0,placeholder:"انتخاب وضعیت پرداخت"},customRender:t=>Ne[t.record.payment_status]||t.record.payment_status},{title:"وضعیت",dataIndex:"status",key:"status",type:"Select",filterField:"status",sortField:"status",filterComponentProps:{options:Object.entries(Ae).map(([t,g])=>({label:g,value:t})),allowClear:!0,placeholder:"انتخاب وضعیت"},customRender:t=>Ae[t.record.status]||t.record.status},{title:"انقضا",dataIndex:"expires_at",key:"expires_at",type:"DateTime",sortField:"expires_at",customRender:t=>t.record.expires_at?pe(t.record.expires_at):"-"},{title:"تاریخ خرید",dataIndex:"created_at",key:"created_at",type:"DateTime",sortField:"created_at",customRender:t=>pe(t.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",filterable:!1,sortable:!1,width:140,align:"center"}];async function je(){return await Oe.get("/admin/subscription/payment-gateway")}async function Rt(t){return(await Oe.put("/admin/subscription/payment-gateway",t)).settings??await je()}const Pt={class:"max-w-2xl space-y-4"},Lt=o("p",{class:"text-sm text-gray-600 mb-4"}," کد مرچنت و آدرس بازگشت از درگاه در اینجا تنظیم می‌شود. اپ کاربر از همین تنظیمات برای اتصال به زرین‌پال استفاده می‌کند. ",-1),Bt={key:0,class:"py-8 text-center"},Nt=o("div",{class:"mb-1 text-sm text-gray-600"},"کد مرچنت زرین‌پال (Merchant ID)",-1),At=o("div",{class:"mb-1 text-sm text-gray-600"},"آدرس بازگشت از درگاه (URL اپ کاربر)",-1),Dt=o("div",{class:"text-xs text-gray-500 mt-1"},[P(" مسیر callback به‌صورت خودکار اضافه می‌شود: "),o("code",null,"/subscriptions/callback")],-1),Mt={class:"flex items-center gap-3"},Ft=o("span",{class:"text-sm"},"فعال بودن درگاه زرین‌پال",-1),Ot={class:"flex items-center gap-3"},zt=o("span",{class:"text-sm"},"حالت تست (Sandbox)",-1),Et=_e({__name:"PaymentGatewaySettings",setup(t){const g=y(!0),_=y(!1),c=y({zarinpal_merchant_id:"",zarinpal_sandbox:!1,zarinpal_enabled:!0,subscription_app_callback_url:"https://macharta.ir"}),h=V(()=>{var k;return c.value.zarinpal_enabled?c.value.zarinpal_sandbox?!0:!!((k=c.value.zarinpal_merchant_id)!=null&&k.trim()):!1}),L=V(()=>{var k;return c.value.zarinpal_enabled?c.value.zarinpal_sandbox?"حالت تست فعال است — پرداخت از sandbox زرین‌پال انجام می‌شود.":(k=c.value.zarinpal_merchant_id)!=null&&k.trim()?"درگاه برای پرداخت واقعی آماده است.":"کد مرچنت وارد نشده — درگاه آماده پرداخت واقعی نیست.":"درگاه غیرفعال است — کاربران نمی‌توانند پرداخت کنند."}),w=V(()=>h.value?"bg-green-50 border-green-200 text-green-800":"bg-amber-50 border-amber-200 text-amber-800");Ce(async()=>{try{c.value=await je()}catch(k){p.error((k==null?void 0:k.message)||"خطا در بارگذاری تنظیمات")}finally{g.value=!1}});async function z(){var k,I;if(!((k=c.value.subscription_app_callback_url)!=null&&k.trim())){p.warning("آدرس بازگشت از درگاه الزامی است");return}if(c.value.zarinpal_enabled&&!c.value.zarinpal_sandbox&&!((I=c.value.zarinpal_merchant_id)!=null&&I.trim())){p.warning("برای پرداخت واقعی، کد مرچنت الزامی است");return}_.value=!0;try{c.value=await Rt(c.value),p.success("تنظیمات درگاه ذخیره شد")}catch($){p.error(($==null?void 0:$.message)||"خطا در ذخیره")}finally{_.value=!1}}return(k,I)=>{const $=Me,S=De,F=$e;return U(),A("div",Pt,[Lt,g.value?(U(),A("div",Bt,"در حال بارگذاری...")):(U(),A(ne,{key:1},[o("div",null,[Nt,a($,{value:c.value.zarinpal_merchant_id,"onUpdate:value":I[0]||(I[0]=C=>c.value.zarinpal_merchant_id=C),placeholder:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},null,8,["value"])]),o("div",null,[At,a($,{value:c.value.subscription_app_callback_url,"onUpdate:value":I[1]||(I[1]=C=>c.value.subscription_app_callback_url=C),placeholder:"https://macharta.ir"},null,8,["value"]),Dt]),o("div",Mt,[a(S,{value:c.value.zarinpal_enabled,"onUpdate:value":I[2]||(I[2]=C=>c.value.zarinpal_enabled=C)},null,8,["value"]),Ft]),o("div",Ot,[a(S,{value:c.value.zarinpal_sandbox,"onUpdate:value":I[3]||(I[3]=C=>c.value.zarinpal_sandbox=C)},null,8,["value"]),zt]),o("div",{class:dt(["rounded-lg border p-3 text-sm",w.value])},me(L.value),3),a(F,{type:"primary",loading:_.value,onClick:z},{default:n(()=>[P(" ذخیره تنظیمات درگاه ")]),_:1},8,["loading"])],64))])}}}),jt={key:1,class:"mb-4"},qt={key:2,class:"text-sm text-gray-500 mb-3"},Gt={key:3,class:"border-t border-gray-200 pt-4 space-y-3"},Vt=o("div",{class:"font-semibold text-gray-700"},"اطلاع‌رسانی بعد از اعطا",-1),Kt=o("p",{class:"text-xs text-gray-500 m-0"}," یک یا چند کانال را انتخاب کنید. در صورت خالی بودن متن، پیام پیش‌فرض ارسال می‌شود. ",-1),Jt={class:"flex flex-col gap-2"},Zt=_e({__name:"AdminUserSubscriptionModal",props:{visible:{type:Boolean},mode:{},purchaseId:{},lockedUserId:{}},emits:["update:visible","success"],setup(t,{emit:g}){const _=t,c=ze,h=Ee,L=he,w=he.Item,z=we,k=we.TextArea,I=oe.Group,$=y(!1),S=y([]),F=y([]),C=y("user"),d=y("none"),D=y({segments:[]}),j=y(!1),N=y(""),f=be({user_id:void 0,plan_id:void 0,duration_days:null}),i=be({sms:!1,push:!1,modal:!1,smsMessage:"",pushTitle:"",pushBody:"",pushUrl:"/",modalTitle:"",modalBody:"",modalCtaLabel:"متوجه شدم"}),te=V({get:()=>_.visible,set:l=>g("update:visible",l)}),re=V(()=>_.mode==="grant"?"ایجاد اشتراک برای کاربر / دسته":"تمدید اشتراک"),b=V(()=>_.mode!=="grant"?"تمدید":C.value==="segment"?"اعطای اشتراک به دسته":"ایجاد اشتراک"),v=V(()=>S.value.map(l=>{const e=l.name||`${l.first_name||""} ${l.last_name||""}`.trim()||"بدون نام",r=l.phone||"";return{value:l.id,label:r?`${e} — ${r}`:e,searchText:`${e} ${r}`.toLowerCase()}})),E=V(()=>F.value.map(l=>({value:l.id,label:`${l.title} (${l.duration_days} روز)${l.is_active?"":" — غیرفعال"}`,searchText:String(l.title||"").toLowerCase()}))),K=V(()=>F.value.find(l=>l.id===f.plan_id)||null);function W(l,e){return String((e==null?void 0:e.searchText)||(e==null?void 0:e.label)||"").toLowerCase().includes(l.toLowerCase())}function O(l,e){return String((e==null?void 0:e.searchText)||(e==null?void 0:e.label)||"").toLowerCase().includes(l.toLowerCase())}function G(){_.mode==="grant"&&K.value&&!f.duration_days&&(f.duration_days=Number(K.value.duration_days)||null)}function X(){d.value="none",i.sms=!1,i.push=!1,i.modal=!1,i.smsMessage="",i.pushTitle="",i.pushBody="",i.pushUrl="/",i.modalTitle="",i.modalBody="",i.modalCtaLabel="متوجه شدم"}function Q(){if(d.value!=="custom"||!i.sms&&!i.push&&!i.modal)return;const l={sms:i.sms,push:i.push,modal:i.modal};return i.sms&&i.smsMessage.trim()&&(l.smsMessage=i.smsMessage.trim()),i.push&&(i.pushTitle.trim()&&(l.pushTitle=i.pushTitle.trim()),i.pushBody.trim()&&(l.pushBody=i.pushBody.trim()),i.pushUrl.trim()&&(l.pushUrl=i.pushUrl.trim())),i.modal&&(i.modalTitle.trim()&&(l.modalTitle=i.modalTitle.trim()),i.modalBody.trim()&&(l.modalBody=i.modalBody.trim()),i.modalCtaLabel.trim()&&(l.modalCtaLabel=i.modalCtaLabel.trim())),l}function de(){f.user_id=_.lockedUserId||void 0,f.plan_id=void 0,f.duration_days=_.mode==="extend"?30:null,C.value="user",D.value={segments:[]},N.value="",X()}function ae(){g("update:visible",!1)}async function le(){try{const[l,e]=await Promise.all([ct(),Fe()]);S.value=l||[],F.value=e||[]}catch(l){p.error((l==null?void 0:l.message)||"خطا در بارگذاری اطلاعات")}}async function se(){var e,r;const l=Re(D.value);if(l){p.warning(l);return}j.value=!0,N.value="";try{const s=Pe(D.value),T=await We(s),M=Number((T==null?void 0:T.userCount)??0),R=Array.isArray(T==null?void 0:T.progressItems)?T.progressItems:[];R.length===1?N.value=`${M.toLocaleString("fa-IR")} کاربر (همان آمار پیشرفت چالش ${R[0].sort_order})`:R.length>1?N.value=`${M.toLocaleString("fa-IR")} کاربر یکتا در ${R.length.toLocaleString("fa-IR")} چالش با این شماره`:N.value=`حدود ${M.toLocaleString("fa-IR")} کاربر مخاطب این اعطا خواهند بود`}catch(s){p.error(((r=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:r.message)||(s==null?void 0:s.message)||"خطا در پیش‌نمایش مخاطب")}finally{j.value=!1}}function x(l){return new Promise(e=>{ue.confirm({title:"اعطای اشتراک گروهی",content:l?`آیا از اعطای اشتراک به این دسته مخاطب مطمئن هستید؟ (${l})`:"آیا از اعطای اشتراک به این دسته مخاطب مطمئن هستید؟",okText:"بله، اعطا شود",cancelText:"انصراف",onOk:()=>e(!0),onCancel:()=>e(!1)})})}async function ce(){var l,e;if(_.mode==="grant"){if(!f.plan_id){p.warning("پلن را انتخاب کنید");return}if(C.value==="user"){if(!f.user_id){p.warning("کاربر را انتخاب کنید");return}}else{const r=Re(D.value);if(r){p.warning(r);return}}if(d.value==="custom"&&!i.sms&&!i.push&&!i.modal){p.warning("حداقل یک کانال اطلاع‌رسانی را انتخاب کنید، یا گزینه «هیچکدام» را بزنید");return}}if(_.mode==="extend"){if(!_.purchaseId&&!f.user_id){p.warning("کاربر را انتخاب کنید");return}if(!f.duration_days||f.duration_days<1){p.warning("مدت تمدید را وارد کنید");return}}$.value=!0;try{const r=_.mode==="grant"?Q():void 0;if(_.mode==="grant"&&C.value==="segment"){const s=Pe(D.value);if(!await x(N.value||void 0))return;const M={plan_id:f.plan_id,...s};f.duration_days&&f.duration_days>0&&(M.duration_days=Number(f.duration_days)),r&&(M.notify=r);const R=await Xe(M),ie=Number((R==null?void 0:R.granted)??0),Z=Number((R==null?void 0:R.failed)??0);Z>0?p.warning(`اشتراک برای ${ie.toLocaleString("fa-IR")} کاربر ایجاد شد؛ ${Z.toLocaleString("fa-IR")} مورد ناموفق`):p.success((R==null?void 0:R.message)||`اشتراک برای ${ie.toLocaleString("fa-IR")} کاربر ایجاد شد`)}else if(_.mode==="grant"){const s={user_id:f.user_id,plan_id:f.plan_id};f.duration_days&&f.duration_days>0&&(s.duration_days=Number(f.duration_days)),r&&(s.notify=r),await Qe(s),p.success("اشتراک ایجاد شد")}else await Ye({purchase_id:_.purchaseId||void 0,user_id:_.purchaseId?void 0:f.user_id,plan_id:f.plan_id||void 0,duration_days:Number(f.duration_days)}),p.success("اشتراک تمدید شد");g("success"),ae()}catch(r){p.error(((e=(l=r==null?void 0:r.response)==null?void 0:l.data)==null?void 0:e.message)||(r==null?void 0:r.message)||"خطا در ذخیره")}finally{$.value=!1}}return xe(()=>_.visible,l=>{l&&(de(),(!S.value.length||!F.value.length)&&le())}),Ce(()=>{le()}),(l,e)=>{const r=ke;return U(),ee(r,{visible:te.value,"onUpdate:visible":e[18]||(e[18]=s=>te.value=s),title:re.value,"ok-text":b.value,"cancel-text":"انصراف","confirm-loading":$.value,width:l.mode==="grant"?"760px":"560px",onOk:ce,onCancel:ae},{default:n(()=>[a(u(L),{layout:"vertical",class:"max-h-[75vh] overflow-y-auto pe-1"},{default:n(()=>[l.mode==="grant"?(U(),A(ne,{key:0},[a(u(w),{label:"مخاطب",required:""},{default:n(()=>[a(u(I),{value:C.value,"onUpdate:value":e[0]||(e[0]=s=>C.value=s),class:"flex flex-col gap-2"},{default:n(()=>[a(u(oe),{value:"user"},{default:n(()=>[P("یک کاربر")]),_:1}),a(u(oe),{value:"segment"},{default:n(()=>[P("دسته کاربران (مثلاً چالش nام را انجام داده‌اند)")]),_:1})]),_:1},8,["value"])]),_:1}),C.value==="user"?(U(),ee(u(w),{key:0,label:"کاربر",required:""},{default:n(()=>[a(u(c),{value:f.user_id,"onUpdate:value":e[1]||(e[1]=s=>f.user_id=s),"show-search":"",placeholder:"جستجو با نام یا موبایل",options:v.value,"filter-option":W,disabled:!!l.lockedUserId},null,8,["value","options","disabled"])]),_:1})):(U(),A("div",jt,[a(bt,{modelValue:D.value,"onUpdate:modelValue":e[2]||(e[2]=s=>D.value=s),"show-actions":!1,"show-preview":!0,"title-text":"دسته مخاطب برای اعطای اشتراک","preview-loading":j.value,"preview-text":N.value,onPreview:se},null,8,["modelValue","preview-loading","preview-text"])])),a(u(w),{label:"پلن اشتراک",required:""},{default:n(()=>[a(u(c),{value:f.plan_id,"onUpdate:value":e[3]||(e[3]=s=>f.plan_id=s),"show-search":"",placeholder:"انتخاب پلن",options:E.value,"filter-option":O,onChange:G},null,8,["value","options"])]),_:1})],64)):(U(),A(ne,{key:1},[l.purchaseId?q("",!0):(U(),ee(u(w),{key:0,label:"کاربر",required:""},{default:n(()=>[a(u(c),{value:f.user_id,"onUpdate:value":e[4]||(e[4]=s=>f.user_id=s),"show-search":"",placeholder:"جستجو با نام یا موبایل",options:v.value,"filter-option":W,disabled:!!l.lockedUserId},null,8,["value","options","disabled"])]),_:1})),l.purchaseId?q("",!0):(U(),ee(u(w),{key:1,label:"پلن (اختیاری)"},{default:n(()=>[a(u(c),{value:f.plan_id,"onUpdate:value":e[5]||(e[5]=s=>f.plan_id=s),"show-search":"","allow-clear":"",placeholder:"در صورت خالی بودن از پلن فعال کاربر استفاده می‌شود",options:E.value,"filter-option":O},null,8,["value","options"])]),_:1}))],64)),a(u(w),{label:l.mode==="grant"?"مدت (روز) — اختیاری برای جایگزینی مدت پلن":"مدت تمدید (روز)",required:l.mode==="extend"},{default:n(()=>[a(u(h),{value:f.duration_days,"onUpdate:value":e[6]||(e[6]=s=>f.duration_days=s),min:1,class:"w-full",placeholder:l.mode==="grant"?"خالی = مدت پیش‌فرض پلن":"مثلاً ۳۰"},null,8,["value","placeholder"])]),_:1},8,["label","required"]),l.mode==="grant"&&K.value?(U(),A("div",qt," مدت پیش‌فرض پلن: "+me(K.value.duration_days)+" روز ",1)):q("",!0),l.mode==="grant"?(U(),A("div",Gt,[Vt,a(u(I),{value:d.value,"onUpdate:value":e[7]||(e[7]=s=>d.value=s),class:"flex flex-col gap-2"},{default:n(()=>[a(u(oe),{value:"none"},{default:n(()=>[P("هیچکدام — هیچ پیامی ارسال نشود")]),_:1}),a(u(oe),{value:"custom"},{default:n(()=>[P("ارسال اطلاع‌رسانی (انتخاب کانال‌ها)")]),_:1})]),_:1},8,["value"]),d.value==="custom"?(U(),A(ne,{key:0},[Kt,o("div",Jt,[a(u(ye),{checked:i.sms,"onUpdate:checked":e[8]||(e[8]=s=>i.sms=s)},{default:n(()=>[P("پیامک")]),_:1},8,["checked"]),a(u(ye),{checked:i.push,"onUpdate:checked":e[9]||(e[9]=s=>i.push=s)},{default:n(()=>[P("نوتیفیکیشن (Push)")]),_:1},8,["checked"]),a(u(ye),{checked:i.modal,"onUpdate:checked":e[10]||(e[10]=s=>i.modal=s)},{default:n(()=>[P("پیام مودال ورود به اپ")]),_:1},8,["checked"])]),i.sms?(U(),ee(u(w),{key:0,label:"متن پیامک"},{default:n(()=>[a(u(k),{value:i.smsMessage,"onUpdate:value":e[11]||(e[11]=s=>i.smsMessage=s),rows:3,placeholder:"خالی = پیام پیش‌فرض فعال‌سازی اشتراک",maxlength:1e3,"show-count":""},null,8,["value"])]),_:1})):q("",!0),i.push?(U(),A(ne,{key:1},[a(u(w),{label:"عنوان نوتیف"},{default:n(()=>[a(u(z),{value:i.pushTitle,"onUpdate:value":e[12]||(e[12]=s=>i.pushTitle=s),placeholder:"فعال‌سازی اشتراک",maxlength:120},null,8,["value"])]),_:1}),a(u(w),{label:"متن نوتیف"},{default:n(()=>[a(u(k),{value:i.pushBody,"onUpdate:value":e[13]||(e[13]=s=>i.pushBody=s),rows:3,placeholder:"خالی = متن پیش‌فرض",maxlength:500,"show-count":""},null,8,["value"])]),_:1}),a(u(w),{label:"لینک نوتیف (اختیاری)"},{default:n(()=>[a(u(z),{value:i.pushUrl,"onUpdate:value":e[14]||(e[14]=s=>i.pushUrl=s),placeholder:"/"},null,8,["value"])]),_:1})],64)):q("",!0),i.modal?(U(),A(ne,{key:2},[a(u(w),{label:"عنوان مودال"},{default:n(()=>[a(u(z),{value:i.modalTitle,"onUpdate:value":e[15]||(e[15]=s=>i.modalTitle=s),placeholder:"اشتراک شما فعال شد"},null,8,["value"])]),_:1}),a(u(w),{label:"متن مودال"},{default:n(()=>[a(u(k),{value:i.modalBody,"onUpdate:value":e[16]||(e[16]=s=>i.modalBody=s),rows:3,placeholder:"خالی = متن پیش‌فرض"},null,8,["value"])]),_:1}),a(u(w),{label:"متن دکمه مودال"},{default:n(()=>[a(u(z),{value:i.modalCtaLabel,"onUpdate:value":e[17]||(e[17]=s=>i.modalCtaLabel=s),placeholder:"متوجه شدم"},null,8,["value"])]),_:1})],64)):q("",!0)],64)):q("",!0)])):q("",!0)]),_:1})]),_:1},8,["visible","title","ok-text","confirm-loading","width"])}}});function qe(t){return t.is_percent?`${Number(t.amount)}٪`:`${Number(t.amount||0).toLocaleString("fa-IR")} ریال`}const Ht=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:t=>(t.record.index??0)+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"کد",dataIndex:"code",key:"code",width:130},{title:"تخفیف",dataIndex:"amount",key:"amount",width:140,customRender:t=>qe(t.record)},{title:"محدودیت کل",dataIndex:"usage_limit",key:"usage_limit",width:110,align:"center",customRender:t=>t.record.usage_limit!=null?String(t.record.usage_limit):"نامحدود"},{title:"هر کاربر",dataIndex:"user_usage_limit",key:"user_usage_limit",width:100,align:"center",customRender:t=>t.record.user_usage_limit!=null?String(t.record.user_usage_limit):"نامحدود"},{title:"انقضا",dataIndex:"expires_at",key:"expires_at",width:120,customRender:t=>t.record.expires_at?pe(t.record.expires_at):"نامحدود"},{title:"استفاده",dataIndex:"usage_count",key:"usage_count",width:90,align:"center",customRender:t=>String(t.record.usage_count??0)},{title:"وضعیت",dataIndex:"is_active",key:"is_active",width:100,customRender:t=>a("div",{class:"flex justify-center"},[a(It,{class:"px-3 font-bold py-1",textColor:t!=null&&t.record.is_active?"#65a30d":"#dc2626",bgColor:t!=null&&t.record.is_active?"#ecfccb":"#fee2e2"},{default:()=>[t!=null&&t.record.is_active?"فعال":"غیرفعال"]})])},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],Wt=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:t=>(t.record.index??0)+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"درصد / تخفیف",dataIndex:"amount",key:"amount",width:150,customRender:t=>qe(t.record)},{title:"محدودیت تعداد",dataIndex:"usage_limit",key:"usage_limit",width:130,align:"center",customRender:t=>t.record.usage_limit!=null?String(t.record.usage_limit):"نامحدود"},{title:"تاریخ انقضا",dataIndex:"expires_at",key:"expires_at",width:130,customRender:t=>t.record.expires_at?pe(t.record.expires_at):"نامحدود"},{title:"تعداد استفاده شده",dataIndex:"usage_count",key:"usage_count",width:140,align:"center",customRender:t=>{const g=t.record.usage_count??0,_=t.record.usage_limit;return _!=null?`${g} / ${_}`:String(g)}}];function Xt(t){if(!t)return"";const g=t.replace(/\//g,"-");return new Date(`${g}T23:59:59.999Z`).toISOString()}function Qt(t){return t?t.slice(0,10).replace(/-/g,"/"):""}function Ge(t,g){var c;const _=!!(g!=null&&g.trim());return{title:((c=t.title)==null?void 0:c.trim())??"",code:(t.code??"").trim().toUpperCase(),is_percent:t.is_percent??!0,amount:Number(t.amount??0),expires_at:_?Xt(g):null,usage_limit:t.usage_limit==null||t.usage_limit===""?null:Number(t.usage_limit),user_usage_limit:t.user_usage_limit==null||t.user_usage_limit===""?null:Number(t.user_usage_limit),plan_ids:Array.isArray(t.plan_ids)?t.plan_ids.map(h=>Number(h)).filter(h=>h>0):[],is_active:t.is_active??!0,updated_at:new Date().toISOString()}}async function Ve(t,g){const c=((await ft("subscription_discount_codes",{filters:[{field:"code",op:"eq",value:t}],limit:5,page:1})).rows||[]).find(h=>h.id!==g);if(c!=null&&c.id)throw new Error("این کد تخفیف قبلاً ثبت شده است")}async function Ke(t){const{TableEngineRequest:g}=await mt(()=>import("./buildSupabaseQuery-f6fdad41.js"),["assets/buildSupabaseQuery-f6fdad41.js","assets/index-864e73c5.js","assets/index-71a80eb0.css"]),_={...t,order:t.order??"-id"},c=await g(_,"subscription_discount_codes");if(Array.isArray(c==null?void 0:c.rows)){const h=c.rows.map((L,w)=>({...L,index:w}));return{...c,rows:h}}return c}async function Yt(t,g){const _=Ge(t,g);return await Ve(_.code),await pt("subscription_discount_codes",_)}async function ea(t,g,_){const c=Ge(g,_);await Ve(c.code,t);const h=await _t("subscription_discount_codes",t,c);return Array.isArray(h)?h:[h]}async function ta(t){await vt("subscription_discount_codes",t)}const aa={class:"flex justify-between items-center mb-4"},la=o("h2",null,"کدهای تخفیف اشتراک",-1),sa={class:"gap-2 flex justify-center"},ia=o("span",null,"حذف",-1),na=o("span",null,"ویرایش",-1),oa={class:"flex flex-col gap-2"},ua={class:"flex flex-col gap-2"},ra=_e({__name:"SubscriptionDiscountCodes",setup(t){const[g,_]=ve(),c=y({columns:Ht,api:Ke,defaultPageLimit:20}),h=y(!1),L=y(!1),w=y(null),z=y(!1),k=y(!1),I=y("unlimited"),$=y("unlimited"),S=y(""),F=y(!1),C=y([]),d=be({title:"",code:"",is_percent:!0,amount:10,expires_at:null,usage_limit:null,user_usage_limit:1,plan_ids:[],is_active:!0});xe(I,b=>{b==="unlimited"&&(S.value="")}),xe($,b=>{b==="unlimited"&&(d.usage_limit=null)});function D(){Object.assign(d,{title:"",code:"",is_percent:!0,amount:10,expires_at:null,usage_limit:null,user_usage_limit:1,plan_ids:[],is_active:!0}),I.value="unlimited",$.value="unlimited",S.value=""}function j(){D(),L.value=!1,w.value=null,z.value=!1,h.value=!0}function N(){h.value=!1,z.value=!1,k.value=!1}async function f(){F.value=!0;try{const b=await Fe();C.value=(b||[]).map(v=>({label:v.title,value:Number(v.id)}))}catch{C.value=[]}finally{F.value=!1}}async function i(){var b,v;if(!(z.value||k.value)){if(!((b=d.title)!=null&&b.trim())||!((v=d.code)!=null&&v.trim())){p.warning("عنوان و کد تخفیف الزامی است");return}if(!d.amount||d.amount<=0){p.warning("مقدار تخفیف باید بیشتر از صفر باشد");return}if(d.is_percent&&d.amount>100){p.warning("درصد تخفیف نمی‌تواند بیشتر از ۱۰۰ باشد");return}if(I.value==="limited"&&!S.value){p.warning("تاریخ انقضا را وارد کنید");return}if($.value==="limited"&&(!d.usage_limit||d.usage_limit<1)){p.warning("محدودیت تعداد استفاده را وارد کنید");return}k.value=!0;try{const E=I.value==="limited"?S.value:null;$.value==="unlimited"&&(d.usage_limit=null),L.value&&w.value!=null?(await ea(w.value,d,E),p.success("کد تخفیف با موفقیت ویرایش شد")):(await Yt(d,E),p.success("کد تخفیف با موفقیت ایجاد شد")),h.value=!1,await _()}catch(E){p.error((E==null?void 0:E.message)||"خطا در ذخیره کد تخفیف")}finally{k.value=!1}}}function te(b){b!=null&&b.id&&(D(),L.value=!0,w.value=b.id,d.title=b.title||"",d.code=b.code||"",d.is_percent=b.is_percent??!0,d.amount=Number(b.amount)||0,d.user_usage_limit=b.user_usage_limit??null,d.plan_ids=Array.isArray(b.plan_ids)?b.plan_ids.map(v=>Number(v)):[],d.is_active=b.is_active??!0,b.expires_at?(I.value="limited",S.value=Qt(b.expires_at)):(I.value="unlimited",S.value=""),b.usage_limit!=null?($.value="limited",d.usage_limit=Number(b.usage_limit)):($.value="unlimited",d.usage_limit=null),h.value=!0)}function re(b){ue.confirm({title:"حذف کد تخفیف",content:`آیا از حذف «${b.title}» مطمئن هستید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await ta(b.id),p.success("حذف شد"),await _()}catch(v){p.error((v==null?void 0:v.message)||"خطا در حذف")}}})}return Ce(f),(b,v)=>{const E=$e,K=Ie,W=we,O=xt,G=oe,X=ht,Q=Ee,de=ze,ae=wt,le=he,se=ke;return U(),A("div",null,[o("div",aa,[la,a(E,{type:"primary",onClick:j},{default:n(()=>[P("افزودن کد تخفیف")]),_:1})]),a(K,fe(c.value,{onRegister:u(g)}),{action:n(({record:x})=>[o("div",sa,[a(u(H),{class:"cursor-pointer"},{title:n(()=>[ia]),default:n(()=>[a(J,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:ce=>re(x)},null,8,["onClick"])]),_:2},1024),a(u(H),{class:"cursor-pointer"},{title:n(()=>[na]),default:n(()=>[a(J,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:ce=>te(x)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"]),a(se,{visible:h.value,"onUpdate:visible":v[11]||(v[11]=x=>h.value=x),title:L.value?"ویرایش کد تخفیف":"افزودن کد تخفیف",loading:z.value,"destroy-on-close":"",onOk:i,onClose:N,width:"720px"},{default:n(()=>[a(le,{layout:"vertical",class:"grid grid-cols-1 md:grid-cols-2 gap-3"},{default:n(()=>[a(O,{label:"عنوان کد تخفیف",required:"",class:"md:col-span-2"},{default:n(()=>[a(W,{value:d.title,"onUpdate:value":v[0]||(v[0]=x=>d.title=x),placeholder:"مثال: کمپین اینستاگرام نوروز"},null,8,["value"])]),_:1}),a(O,{label:"کد تخفیف",required:""},{default:n(()=>[a(W,{value:d.code,"onUpdate:value":v[1]||(v[1]=x=>d.code=x),placeholder:"مثال: NOWROOZ1405",style:{"text-transform":"uppercase"}},null,8,["value"])]),_:1}),a(O,{label:"نوع تخفیف"},{default:n(()=>[a(X,{value:d.is_percent,"onUpdate:value":v[2]||(v[2]=x=>d.is_percent=x)},{default:n(()=>[a(G,{value:!0},{default:n(()=>[P("درصدی")]),_:1}),a(G,{value:!1},{default:n(()=>[P("مبلغی (ریال)")]),_:1})]),_:1},8,["value"])]),_:1}),a(O,{label:d.is_percent?"درصد تخفیف":"مبلغ تخفیف (ریال)",required:""},{default:n(()=>[a(Q,{value:d.amount,"onUpdate:value":v[3]||(v[3]=x=>d.amount=x),style:{width:"100%"},min:1,max:d.is_percent?100:void 0,placeholder:"مقدار تخفیف"},null,8,["value","max"])]),_:1},8,["label"]),a(O,{label:"تاریخ انقضا"},{default:n(()=>[o("div",oa,[a(X,{value:I.value,"onUpdate:value":v[4]||(v[4]=x=>I.value=x),class:"mb-1"},{default:n(()=>[a(G,{value:"unlimited"},{default:n(()=>[P("نامحدود")]),_:1}),a(G,{value:"limited"},{default:n(()=>[P("محدود")]),_:1})]),_:1},8,["value"]),I.value==="limited"?(U(),ee(kt,{key:0,value:S.value,"onUpdate:value":v[5]||(v[5]=x=>S.value=x)},null,8,["value"])):q("",!0)])]),_:1}),a(O,{label:"محدودیت تعداد استفاده"},{default:n(()=>[o("div",ua,[a(X,{value:$.value,"onUpdate:value":v[6]||(v[6]=x=>$.value=x),class:"mb-1"},{default:n(()=>[a(G,{value:"unlimited"},{default:n(()=>[P("نامحدود")]),_:1}),a(G,{value:"limited"},{default:n(()=>[P("محدود")]),_:1})]),_:1},8,["value"]),$.value==="limited"?(U(),ee(Q,{key:0,value:d.usage_limit,"onUpdate:value":v[7]||(v[7]=x=>d.usage_limit=x),style:{width:"100%"},min:1,placeholder:"حداکثر تعداد کل"},null,8,["value"])):q("",!0)])]),_:1}),a(O,{label:"تعداد استفاده مجاز برای هر کاربر"},{default:n(()=>[a(Q,{value:d.user_usage_limit,"onUpdate:value":v[8]||(v[8]=x=>d.user_usage_limit=x),style:{width:"100%"},min:1,placeholder:"خالی = نامحدود"},null,8,["value"])]),_:1}),a(O,{label:"اعمال روی پلن‌ها",class:"md:col-span-2"},{default:n(()=>[a(de,{value:d.plan_ids,"onUpdate:value":v[9]||(v[9]=x=>d.plan_ids=x),mode:"multiple","allow-clear":"",style:{width:"100%"},placeholder:"خالی = همه پلن‌ها",options:C.value,loading:F.value},null,8,["value","options","loading"])]),_:1}),a(O,{label:"فعال"},{default:n(()=>[a(ae,{checked:d.is_active,"onUpdate:checked":v[10]||(v[10]=x=>d.is_active=x)},null,8,["checked"])]),_:1})]),_:1})]),_:1},8,["visible","title","loading"])])}}}),da=o("div",{class:"mb-4"},[o("h2",null,"آمار استفاده از کدهای تخفیف")],-1),ca=_e({__name:"SubscriptionDiscountStats",setup(t){const[g]=ve(),_=y({columns:Wt,api:Ke,defaultPageLimit:20});return(c,h)=>{const L=Ie;return U(),A("div",null,[da,a(L,fe(_.value,{onRegister:u(g)}),null,16,["onRegister"])])}}}),ma={class:"flex justify-between items-center mb-4"},pa=o("h2",null,"لیست خرید اشتراک",-1),_a={class:"flex gap-2"},va={class:"gap-2 flex justify-center"},fa=o("span",null,"تمدید",-1),ga=o("span",null,"لغو اشتراک",-1),ya=o("span",null,"حذف",-1),ba={class:"flex justify-between items-center mb-4"},xa=o("h2",null,"مدیریت اشتراک‌ها",-1),ha={class:"gap-2 flex justify-center"},wa=o("span",null,"حذف",-1),ka=o("span",null,"ویرایش",-1),Ia=o("div",{class:"mb-4"},[o("h2",null,"تنظیمات درگاه پرداخت")],-1),$a={class:"space-y-4 relative"},Ca={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},Ua={class:"grid grid-cols-2 gap-4"},Ta=o("div",{class:"mb-1 text-sm text-gray-600"},"عنوان اشتراک",-1),Sa=o("div",{class:"mb-1 text-sm text-gray-600"},"مدت اشتراک (روز)",-1),Ra={class:"grid grid-cols-3 gap-4"},Pa=o("div",{class:"mb-1 text-sm text-gray-600"},"مبلغ (ریال)",-1),La=o("div",{class:"mb-1 text-sm text-gray-600"},"تخفیف (درصد)",-1),Ba=o("div",{class:"mb-1 text-sm text-gray-600"},"قیمت نهایی (ریال)",-1),Na={class:"mt-2 font-semibold text-green-700"},Aa={class:"grid grid-cols-2 gap-4"},Da=o("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش",-1),Ma=o("div",{class:"mb-1 text-sm text-gray-600"},"وضعیت",-1),Fa={class:"flex items-center gap-2 mt-2"},Oa={class:"text-sm text-gray-600"},za=o("div",{class:"mb-1 text-sm text-gray-600"},"توضیحات",-1),Ea={class:"flex justify-center"},ja=o("div",{class:"mb-1 text-sm text-gray-600"},"تصویر اشتراک",-1),qa={key:0},Ga=o("div",null,"آپلود تصویر",-1),Ql=_e({__name:"index",setup(t){const g=Le,_=Le.TabPane,c=y("purchases"),h=y(!1),L=y(!1),w=y(null),[z,k]=ve(),[I,$]=ve(),S=y(!1),F=y("grant"),C=y(null),d=y(null),D=y(!1),j=y([]),N=y(0),f=()=>({title:"",description:"",image_url:null,price:0,discount_percent:0,duration_days:30,is_active:!0,sort_order:0}),i=y(f()),te=V(()=>et(Number(i.value.price),Number(i.value.discount_percent)).toLocaleString("fa-IR")),re={columns:Ut,api:tt,defaultPageLimit:20},b={columns:St,api:at,defaultPageLimit:20};function v(){i.value=f(),j.value=[]}function E(){L.value=!1,w.value=null,v(),h.value=!0}function K(){h.value=!1,v()}function W(l){return l.type.startsWith("image/")?l.size/1024/1024>=5?(p.error("حجم تصویر باید کمتر از 5MB باشد"),!1):!0:(p.error("فقط فایل تصویری مجاز است"),!1)}async function O(l){const{file:e,onSuccess:r,onError:s,onProgress:T}=l,M=new FormData;M.append("file",e);const R=`${gt}/upload/machartaa-img`;N.value++,await new Promise((ie,Z)=>{const m=new XMLHttpRequest;m.open("POST",R);const Y=yt()||localStorage.getItem("tamin_token")||"";m.setRequestHeader("Authorization",`Bearer ${Y}`),m.upload.onprogress=B=>{B.lengthComputable&&(T==null||T({percent:Math.round(B.loaded/B.total*100)}))},m.onload=()=>{if(m.status>=200&&m.status<300)try{const B=JSON.parse(m.responseText||"{}"),Je=B.full_src||B.url||B.src||B.path||B.data&&(B.data.full_src||B.data.url||B.data.src||B.data.path)||"",ge=Te(Je),Ue=Se(ge);i.value.image_url=ge,j.value=Ue?[{uid:`${Date.now()}`,name:"image.jpg",status:"done",url:Ue,response:{path:ge}}]:[],r==null||r(B,m),p.success("تصویر با موفقیت آپلود شد!"),ie()}catch(B){s==null||s(B,m),Z(B)}else s==null||s(new Error("خطا در آپلود تصویر"),m),Z(new Error("خطا در آپلود تصویر"))},m.onerror=()=>{s==null||s(new Error("خطا در آپلود تصویر"),m),Z(new Error("خطا در آپلود تصویر"))},m.onloadend=()=>{N.value=Math.max(0,N.value-1)},m.send(M)})}async function G(){var l;if(N.value>0){p.warning("لطفاً تا پایان آپلود صبر کنید");return}if(!((l=i.value.title)!=null&&l.trim())){p.warning("عنوان الزامی است");return}if(!i.value.duration_days||Number(i.value.duration_days)<1){p.warning("مدت اشتراک باید حداقل ۱ روز باشد");return}try{const e={...i.value,price:Number(i.value.price)||0,discount_percent:Number(i.value.discount_percent)||0,duration_days:Number(i.value.duration_days),sort_order:Number(i.value.sort_order)||0};L.value&&w.value?(await lt(w.value,e),p.success("اشتراک ویرایش شد")):(await st(e),p.success("اشتراک افزوده شد")),K(),await k()}catch(e){p.error((e==null?void 0:e.message)||"خطا در ذخیره")}}function X(l){L.value=!0,w.value=l.id;const e=Te(l.image_url)||null;i.value={title:l.title||"",description:l.description||"",image_url:e,price:l.price||0,discount_percent:l.discount_percent||0,duration_days:l.duration_days||30,is_active:l.is_active??!0,sort_order:l.sort_order??0};const r=e?Se(e):null;j.value=r?[{uid:"-1",name:"image.jpg",status:"done",url:r,response:{path:e}}]:[],h.value=!0}function Q(l){ue.confirm({title:"حذف اشتراک",content:`آیا از حذف «${l.title}» مطمئن هستید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{try{await it(l.id),p.success("حذف شد"),await k()}catch(e){p.error((e==null?void 0:e.message)||"خطا در حذف")}}})}async function de(l){try{await nt(l.id,!l.is_active),p.success("وضعیت به‌روز شد"),await k()}catch(e){p.error((e==null?void 0:e.message)||"خطا")}}function ae(){F.value="grant",C.value=null,d.value=null,S.value=!0}async function le(){D.value||ue.confirm({title:"همگام‌سازی پرداخت‌های زرین‌پال",content:"لیست تراکنش‌های موفقِ اعتبارسنجی‌نشده از زرین‌پال گرفته می‌شود، با توکن تراکنش‌های اشتراک تطبیق داده می‌شود و در صورت تطبیق، اشتراک کاربر فعال می‌شود. ادامه می‌دهید؟",okText:"همگام‌سازی",cancelText:"انصراف",centered:!0,onOk:async()=>{var l,e;D.value=!0;try{const r=await ot(),s=(r==null?void 0:r.data)??r,T=Number((s==null?void 0:s.reconciled_count)||0),M=Number((s==null?void 0:s.total_zarinpal)||0),R=Number((s==null?void 0:s.matched_count)||0);T>0?p.success((s==null?void 0:s.message)||`${T} اشتراک فعال شد.`):p.info((s==null?void 0:s.message)||(M>0?`از ${M} تراکنش زرین‌پال، ${R} مورد با اشتراک محلی تطبیق خورد ولی فعال‌سازی انجام نشد.`:"تراکنش موفقِ اعتبارسنجی‌نشده‌ای در زرین‌پال یافت نشد.")),await $()}catch(r){p.error(((e=(l=r==null?void 0:r.response)==null?void 0:l.data)==null?void 0:e.message)||(r==null?void 0:r.message)||"خطا در همگام‌سازی پرداخت‌ها")}finally{D.value=!1}}})}function se(l){F.value="extend",C.value=(l==null?void 0:l.id)??null,d.value=(l==null?void 0:l.user_id)??null,S.value=!0}function x(l){ue.confirm({title:"لغو اشتراک",content:`اشتراک «${l.plan_title}» برای ${l.user_name||"کاربر"} لغو شود؟ اعتبار کاربر قطع می‌شود.`,okText:"بله، لغو کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{var e,r;try{await ut(l.id),p.success("اشتراک لغو شد"),await $()}catch(s){p.error(((r=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:r.message)||(s==null?void 0:s.message)||"خطا در لغو")}}})}function ce(l){ue.confirm({title:"حذف کامل",content:`رکورد خرید «${l.plan_title}» برای ${l.user_name||"کاربر"} کامل حذف شود؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{var e,r;try{await rt(l.id),p.success("حذف شد"),await $()}catch(s){p.error(((r=(e=s==null?void 0:s.response)==null?void 0:e.data)==null?void 0:r.message)||(s==null?void 0:s.message)||"خطا در حذف")}}})}return(l,e)=>{const r=$e,s=Ie,T=Me,M=De,R=He,ie=ke,Z=Ze;return U(),A("div",null,[a(Z,null,{default:n(()=>[a(u(g),{activeKey:c.value,"onUpdate:activeKey":e[2]||(e[2]=m=>c.value=m)},{default:n(()=>[a(u(_),{key:"purchases",tab:"خریدهای کاربران"},{default:n(()=>[o("div",ma,[pa,o("div",_a,[a(r,{loading:D.value,onClick:le},{default:n(()=>[P(" همگام‌سازی پرداخت‌های زرین‌پال ")]),_:1},8,["loading"]),a(r,{onClick:e[0]||(e[0]=m=>se())},{default:n(()=>[P("تمدید اشتراک")]),_:1}),a(r,{type:"primary",onClick:e[1]||(e[1]=m=>ae())},{default:n(()=>[P("ایجاد اشتراک برای کاربر")]),_:1})])]),a(s,fe(b,{onRegister:u(I)}),{action:n(({record:m})=>[o("div",va,[a(u(H),{class:"cursor-pointer"},{title:n(()=>[fa]),default:n(()=>[a(J,{icon:"vuesax-linear:add-circle",color:"#059669",onClick:Y=>se(m)},null,8,["onClick"])]),_:2},1024),a(u(H),{class:"cursor-pointer"},{title:n(()=>[ga]),default:n(()=>[a(J,{icon:"vuesax-linear:close-circle",color:"#F59E0B",onClick:Y=>x(m)},null,8,["onClick"])]),_:2},1024),a(u(H),{class:"cursor-pointer"},{title:n(()=>[ya]),default:n(()=>[a(J,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:Y=>ce(m)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),a(u(_),{key:"plans",tab:"پلن‌های اشتراک"},{default:n(()=>[o("div",ba,[xa,a(r,{type:"primary",onClick:E},{default:n(()=>[P("افزودن اشتراک")]),_:1})]),a(s,fe(re,{ref:"table",onRegister:u(z)}),{action:n(({record:m})=>[o("div",ha,[a(u(H),{class:"cursor-pointer"},{title:n(()=>[o("span",null,me(m.is_active?"غیرفعال کردن":"فعال کردن"),1)]),default:n(()=>[a(J,{icon:m.is_active?"vuesax-linear:eye-slash":"vuesax-linear:eye",color:m.is_active?"#F59E0B":"#16A34A",onClick:Y=>de(m)},null,8,["icon","color","onClick"])]),_:2},1024),a(u(H),{class:"cursor-pointer"},{title:n(()=>[wa]),default:n(()=>[a(J,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:Y=>Q(m)},null,8,["onClick"])]),_:2},1024),a(u(H),{class:"cursor-pointer"},{title:n(()=>[ka]),default:n(()=>[a(J,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:Y=>X(m)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),a(u(_),{key:"gateway",tab:"تنظیمات درگاه (زرین‌پال)"},{default:n(()=>[Ia,a(Et)]),_:1}),a(u(_),{key:"discount-codes",tab:"کد تخفیف"},{default:n(()=>[a(ra)]),_:1}),a(u(_),{key:"discount-stats",tab:"آمار کدهای تخفیف"},{default:n(()=>[a(ca)]),_:1})]),_:1},8,["activeKey"]),a(ie,{visible:h.value,"onUpdate:visible":e[11]||(e[11]=m=>h.value=m),title:L.value?"ویرایش اشتراک":"افزودن اشتراک",onOk:G,onCancel:K,width:"70%",confirmLoading:N.value>0},{default:n(()=>[o("div",$a,[N.value>0?(U(),A("div",Ca,[a(u($t),{size:"large"})])):q("",!0),o("div",Ua,[o("div",null,[Ta,a(T,{value:i.value.title,"onUpdate:value":e[3]||(e[3]=m=>i.value.title=m),placeholder:"مثلاً اشتراک یک ماهه"},null,8,["value"])]),o("div",null,[Sa,a(T,{value:i.value.duration_days,"onUpdate:value":e[4]||(e[4]=m=>i.value.duration_days=m),type:"number",min:"1",placeholder:"30"},null,8,["value"])])]),o("div",Ra,[o("div",null,[Pa,a(T,{value:i.value.price,"onUpdate:value":e[5]||(e[5]=m=>i.value.price=m),type:"number",min:"0",placeholder:"100000"},null,8,["value"])]),o("div",null,[La,a(T,{value:i.value.discount_percent,"onUpdate:value":e[6]||(e[6]=m=>i.value.discount_percent=m),type:"number",min:"0",max:"100",placeholder:"0"},null,8,["value"])]),o("div",null,[Ba,o("div",Na,me(te.value),1)])]),o("div",Aa,[o("div",null,[Da,a(T,{value:i.value.sort_order,"onUpdate:value":e[7]||(e[7]=m=>i.value.sort_order=m),type:"number",placeholder:"0"},null,8,["value"])]),o("div",null,[Ma,o("div",Fa,[a(M,{value:i.value.is_active,"onUpdate:value":e[8]||(e[8]=m=>i.value.is_active=m)},null,8,["value"]),o("span",Oa,me(i.value.is_active?"فعال":"غیرفعال"),1)])])]),o("div",null,[za,a(R,{value:i.value.description,"onUpdate:value":e[9]||(e[9]=m=>i.value.description=m),placeholder:"توضیحات اشتراک",rows:4},null,8,["value"])]),o("div",Ea,[o("div",null,[ja,a(u(Ct),{"file-list":j.value,"onUpdate:fileList":e[10]||(e[10]=m=>j.value=m),"before-upload":W,"custom-request":O,accept:"image/jpeg,image/png,image/webp,image/gif,image/heic,image/heif,.jpg,.jpeg,.png,.webp,.gif,.heic,.heif","max-count":1,"list-type":"picture-card"},{default:n(()=>[j.value.length<1?(U(),A("div",qa,[a(J,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Ga])):q("",!0)]),_:1},8,["file-list"])])])])]),_:1},8,["visible","title","confirmLoading"]),a(Zt,{visible:S.value,"onUpdate:visible":e[12]||(e[12]=m=>S.value=m),mode:F.value,"purchase-id":C.value,"locked-user-id":d.value,onSuccess:u($)},null,8,["visible","mode","purchase-id","locked-user-id","onSuccess"])]),_:1})])}}});export{Ql as default};