Files
machartaa_admin_dist/dist/assets/itemViews-55ee3956.js
T
2026-08-22 13:27:44 +03:30

2 lines
2.5 KiB
JavaScript

import{t as I}from"./useDataTime-5a09f654.js";import{S as w}from"./index-d718011e.js";import{fetchMatchingUserIds as p}from"./supabaseTableQuery-bada93b0.js";const x=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"نام کاربر",dataIndex:"user_name",key:"user_name",filterable:!0,filterField:"user_name"},{title:"شماره همراه",dataIndex:"user_phone",key:"user_phone",filterable:!0,filterField:"user_phone"},{title:"تاریخ بازدید",dataIndex:"viewed_at",key:"viewed_at",filterable:!0,filterField:"viewed_at",customRender:e=>I(e.record.viewed_at)}];function g(e){return!e||!Object.keys(e).length?"نامشخص":e.name?e.name:e.first_name||e.last_name?`${e.first_name||""} ${e.last_name||""}`.trim():e.phone?e.phone:e.email?e.email:e.username?e.username:"نامشخص"}function h(e,l){const t=(Array.isArray(e.users)?e.users[0]:e.users)||{};return{id:e.id,user_id:e.user_id,user_name:g(t),user_phone:(t==null?void 0:t.phone)||"",user_email:(t==null?void 0:t.email)||"",viewed_at:e.viewed_at||"",index:l}}async function F(e,l){const t=(await w("user_views",{filters:[{field:"item_id",op:"eq",value:e},{field:"type",op:"eq",value:l}],order:"-viewed_at",limit:5e3,page:1,select:["*","users!user_id(id, first_name, last_name, phone, name, email, username)"]})).rows||[],d=t.length,n=new Set(t.map(a=>a.user_id).filter(Boolean)),r=new Map;return t.forEach(a=>{const s=a.user_id;!s||r.has(s)||r.set(s,h(a,r.size))}),{total_views:d,unique_viewers:n.size,viewers:Array.from(r.values())}}async function R(e,l,m){const{limit:t=20,page:d=1,search:n,filters:r,sort:a,order:s}=e,_=[{field:"item_id",op:"eq",value:l,hidden:!0},{field:"type",op:"eq",value:m,hidden:!0}];let o;if(n!=null&&n.trim()){const i=await p(n);i.length?o={field:"user_id",values:i}:o={field:"user_id",values:["00000000-0000-0000-0000-000000000000"]}}if(r!=null&&r.length){for(const i of r)if(!(!i.field||i.hidden)){if(i.field==="user_name"||i.field==="user_phone"){if(["eq","has","like"].includes(i.op)){const f=await p(String(i.value));o={field:"user_id",values:f.length?f:["00000000-0000-0000-0000-000000000000"]}}continue}_.push(i)}}const u={filters:_,page:d,limit:t,select:["*","users!user_id(id, first_name, last_name, phone, name, email, username)"]};o&&(u.includeIn=o),a!=null&&a.key?u.sort=a:s?u.order=s:u.order="-viewed_at";const c=await w("user_views",u),v=(d-1)*t,y=(c.rows||[]).map((i,f)=>h(i,v+f));return{query:{...e,limit:t,page:d,total:c.total??0},rows:y}}export{F as a,R as g,x as v};