Files
machartaa_admin_dist/dist/assets/subscription-da673552.js
T
2026-08-23 14:52:55 +03:30

2 lines
5.8 KiB
JavaScript

import{_ as w,T as d,H as A,I as y,J as x,a1 as v,O as _}from"./index-a28be152.js";import{fetchMatchingUserIds as b,formatTableResult as R}from"./supabaseTableQuery-e3d032a9.js";function D(e,t,n=(i,s)=>i[s]){const i=[...e],{sort:s,order:o}=t;if(s!=null&&s.key){const r=s.order==="asc";return i.sort((c,u)=>{const a=n(c,s.key),l=n(u,s.key);return a<l?r?-1:1:a>l?r?1:-1:0}),i}if(o){const r=!o.startsWith("-"),c=o.replace(/^[-+]/,"");return i.sort((u,a)=>{const l=n(u,c),p=n(a,c);return l<p?r?-1:1:l>p?r?1:-1:0}),i}return i}function T(e,t){return Math.max(0,Math.round(e*(1-(t||0)/100)))}async function U(e){const{TableEngineRequest:t}=await w(()=>import("./buildSupabaseQuery-7d0fcf16.js"),["assets/buildSupabaseQuery-7d0fcf16.js","assets/index-a28be152.js","assets/index-d7456b90.css"]),n={...e};!n.sort&&!n.order&&(n.order="-sort_order");const i=await t(n,"subscription_plans");if(Array.isArray(i==null?void 0:i.rows)){const s=i.rows.map((o,r)=>({...o,index:r,final_price:T(Number(o.price),Number(o.discount_percent||0))}));return{...i,rows:s}}return i}const P=new Set(["plan_title","payment_status","status","final_price","expires_at","created_at","user_id","plan_id"]),I=new Set(["id","plan_title","final_price","payment_status","status","expires_at","created_at"]),E=new Set(["user_name","user_phone"]);function k(e){var i,s;const t=((i=e.sort)==null?void 0:i.key)||(e.order?String(e.order).replace(/^[-+]/,""):null);let n=!1;return(s=e.sort)!=null&&s.key?n=e.sort.order==="asc":e.order&&(n=!String(e.order).startsWith("-")),{sortKey:t||null,ascending:n}}function g(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 C(e){const{limit:t=20,page:n=1,search:i,filters:s}=e,{sortKey:o,ascending:r}=k(e),c={filters:[],select:["*","users(name, phone, first_name, last_name)"]};if(i!=null&&i.trim()){const a=await b(i);a.length&&(c.includeIn={field:"user_id",values:a})}if(s!=null&&s.length){for(const a of s)if(!(a.hidden||!a.field)){if(a.field==="user_name"||a.field==="user_phone"){if(["eq","has","like"].includes(a.op)){const l=await b(String(a.value));c.includeIn={field:"user_id",values:l.length?l:["00000000-0000-0000-0000-000000000000"]}}continue}P.has(a.field)&&c.filters.push(a)}}if(o&&E.has(o)){c.order="-created_at",c.limit=5e3,c.page=1;const a=await d("subscription_purchases",c),l=(a.rows||[]).map(g),p=D(l,{sort:{key:o,order:r?"asc":"desc"}}),f=(n-1)*t,m=a.total??p.length;return{rows:p.slice(f,f+t).map((S,h)=>({...S,index:f+h})),total:m,query:{...e,page:n,limit:t,total:m}}}o&&I.has(o)?c.sort={key:o,order:r?"asc":"desc"}:c.order="-created_at",c.page=n,c.limit=t;const u=await d("subscription_purchases",c);return R(u.rows||[],u.total??0,e,g)}async function M(e){return await A("subscription_plans",{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})}async function $(e,t){const n=await y("subscription_plans",e,{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()});return Array.isArray(n)?n:[n]}async function H(e){await x("subscription_plans",e)}async function F(e,t){const n=await y("subscription_plans",e,{is_active:t,updated_at:new Date().toISOString()});return Array.isArray(n)?n:[n]}async function K(e){var c,u;if(!e)return{isActive:!1,label:"کاربر متصل نیست",planTitle:null,expiresAt:null,remainingDays:0};const t=new Date,n=t.toISOString(),s=(c=(await d("subscription_purchases",{filters:[{field:"user_id",op:"eq",value:e},{field:"payment_status",op:"eq",value:"paid"},{field:"status",op:"eq",value:"active"},{field:"expires_at",op:"gt",value:n}],order:"-expires_at",limit:1,page:1,select:["plan_title","status","payment_status","expires_at"]})).rows)==null?void 0:c[0];if(s!=null&&s.expires_at){const a=new Date(s.expires_at).getTime(),l=Math.max(1,Math.ceil((a-t.getTime())/(1e3*60*60*24))),p=l.toLocaleString("fa-IR");return{isActive:!0,label:l===1?"فعال — ۱ روز باقی‌مانده":`فعال — ${p} روز باقی‌مانده`,planTitle:s.plan_title||null,expiresAt:s.expires_at,remainingDays:l}}const r=(u=(await d("subscription_purchases",{filters:[{field:"user_id",op:"eq",value:e}],order:"-created_at",limit:1,page:1,select:["plan_title","status","payment_status","expires_at"]})).rows)==null?void 0:u[0];return r?r.payment_status==="pending"||r.status==="pending"?{isActive:!1,label:"در انتظار پرداخت",planTitle:r.plan_title||null,expiresAt:r.expires_at||null,remainingDays:0}:r.status==="cancelled"||r.payment_status==="cancelled"?{isActive:!1,label:"لغو شده",planTitle:r.plan_title||null,expiresAt:r.expires_at||null,remainingDays:0}:{isActive:!1,label:"منقضی شده",planTitle:r.plan_title||null,expiresAt:r.expires_at||null,remainingDays:0}:{isActive:!1,label:"بدون اشتراک",planTitle:null,expiresAt:null,remainingDays:0}}async function N(){const e=await v("subscription_plans",{order:"-sort_order"});return Array.isArray(e)?e:[]}async function B(){return await _.post("/admin/subscription/reconcile-pending")}async function V(e){return await _.post("/admin/subscription/grant",e)}async function W(e){return await _.post("/admin/subscription/extend",e)}async function j(e){return await _.post(`/admin/subscription/${e}/cancel`,{mode:"cancel"})}async function G(e){return await _.delete(`/admin/subscription/${e}`)}export{V as a,W as b,T as c,U as d,C as e,M as f,N as g,H as h,B as i,j,G as k,K as l,F as t,$ as u};