Files
machartaa_admin_dist/dist/assets/support-377ab98e.js
T
2026-08-25 16:12:17 +03:30

12 lines
7.2 KiB
JavaScript

import{_ as l,O as f}from"./index-0ae7844c.js";import{adminDb as o}from"./adminDb-3e7064ba.js";import{b as P}from"./pushNotification-8265e648.js";function C(t){return{id:t.id,sender_type:t.sender_type,content:t.content||"",message_type:t.message_type||"text",file_url:t.file_url,file_name:t.file_name}}function $(t){return t!=null&&t.id?{id:t.id,sender_type:t.sender_type,content:t.content||"",message_type:t.message_type||"text",file_url:t.file_url,file_name:t.file_name}:null}function A(t){return{id:t.id,conversation_id:t.conversation_id,sender_type:t.sender_type,sender_id:t.sender_id,content:t.content||"",message_type:t.message_type||"text",file_url:t.file_url,file_name:t.file_name,reply_to_id:t.reply_to_id,reply_to:$(t.reply_to),read_at:t.read_at,created_at:t.created_at}}function M(t){return t==="user"?"کاربر":"پشتیبانی"}function N(t){return t.message_type==="image"?"تصویر":t.message_type==="audio"?"پیام صوتی":t.message_type==="file"?t.file_name||"فایل":(t.content||"").trim()||"پیام"}async function B(t){const{TableEngineRequest:e}=await l(()=>import("./buildSupabaseQuery-ef030906.js"),["assets/buildSupabaseQuery-ef030906.js","assets/index-0ae7844c.js","assets/index-71a80eb0.css"]),n={...t};return!n.sort&&!n.order&&(n.order="sort_order"),e(n,"support_faqs")}async function K(t){const{data:e,error:n}=await o.from("support_faqs").insert([t]).select();if(n)throw n;return e}async function z(t,e){const{data:n,error:a}=await o.from("support_faqs").update({...e,updated_at:new Date().toISOString()}).eq("id",t).select();if(a)throw a;return n}async function Q(t){const{error:e}=await o.from("support_faqs").delete().eq("id",t);if(e)throw e}async function U(){const{data:t,error:e}=await o.from("support_conversations").select(`
*,
users (
id,
name,
first_name,
last_name,
phone,
avatar
)
`).order("last_message_at",{ascending:!1,nullsFirst:!1}).order("created_at",{ascending:!1});if(e)throw e;return t||[]}async function G(t){return(await f.get(`/admin/support/conversations/${t}/messages`)||[]).map(A)}async function H(t){const e=await f.post(`/admin/support/conversations/${t.conversationId}/messages`,{content:t.content,replyToId:t.replyToId,adminId:t.adminId});return A(e)}async function J(t){const e=new Date().toISOString();await o.from("support_messages").update({read_at:e}).eq("conversation_id",t).eq("sender_type","user").is("read_at",null),await o.from("support_conversations").update({unread_by_admin:0,updated_at:e}).eq("id",t)}function W(t){var n;if(t.guest_id)return((n=t.guest_name)==null?void 0:n.trim())||"مهمان";const e=t.users;return e&&(e.name||[e.first_name,e.last_name].filter(Boolean).join(" ")||e.phone)||"کاربر"}function _(t){return Array.isArray(t)?t.map(e=>typeof e=="string"?{url:e,name:null}:e&&typeof e=="object"&&"url"in e?{url:String(e.url||""),name:e.name||null}:null).filter(e=>!!(e!=null&&e.url)):[]}function F(t){const e=Array.isArray(t==null?void 0:t.messages)?t.messages.map(n=>({...n,attachments:_(n==null?void 0:n.attachments)})).sort((n,a)=>new Date(n.created_at).getTime()-new Date(a.created_at).getTime()):void 0;return{...t,subject:(t==null?void 0:t.subject)||"other",admin_queue:(t==null?void 0:t.admin_queue)||"new",attachments:_(t==null?void 0:t.attachments),admin_attachments:_(t==null?void 0:t.admin_attachments),messages:e}}function X(t,e){return async n=>{var k,T,b;const{TableEngineRequest:a}=await l(()=>import("./buildSupabaseQuery-ef030906.js"),["assets/buildSupabaseQuery-ef030906.js","assets/index-0ae7844c.js","assets/index-71a80eb0.css"]),r=[...n.filters||[]],d=r.filter(i=>(i==null?void 0:i.field)&&i.field!=="action"&&i.field!=="row").map(i=>i.field==="ticket_no"?{...i,field:"id",hidden:!1}:{...i,hidden:!1});d.push({field:"admin_queue",op:"eq",value:t,hidden:!1}),e!=="all"&&d.push({field:"subject",op:"eq",value:e,hidden:!1});const u=String(n.search||"").trim(),s={...n,filters:d,search:u,select:["*","users(id,name,first_name,last_name,phone)"]};if((((k=s.sort)==null?void 0:k.key)==="ticket_no"||((T=s.sort)==null?void 0:T.key)==="row_index")&&(s.sort={...s.sort,key:"id"}),typeof s.order=="string"&&(s.order=s.order.replace(/ticket_no/g,"id").replace(/row_index/g,"id")),!s.sort&&!s.order&&(s.order="-updated_at"),/^\d+$/.test(u)){const{adminDb:i}=await l(()=>import("./adminDb-3e7064ba.js"),["assets/adminDb-3e7064ba.js","assets/index-0ae7844c.js","assets/index-71a80eb0.css"]),{applySupabaseFilter:D,toPostgrestIlikeTerm:v}=await l(()=>import("./supabaseTableQuery-98b38f56.js"),["assets/supabaseTableQuery-98b38f56.js","assets/index-0ae7844c.js","assets/index-71a80eb0.css"]);let c=i.from("support_tickets").select("*,users(id,name,first_name,last_name,phone)",{count:"exact"});const m=v(u);c=c.or(`id.eq.${Number(u)},problem.ilike.${m},account_name.ilike.${m},account_phone.ilike.${m}`),d.forEach(S=>{c=D(c,S)});const y=s.page||1,p=s.limit||20,g=(y-1)*p,h=((b=s.sort)==null?void 0:b.key)||"updated_at",R=h==="ticket_no"||h==="row_index"?"id":h,w=s.sort?s.sort.order==="asc":!1;c=c.range(g,g+p-1).order(R,{ascending:w});const{data:x,error:I,count:E}=await c;return I?(console.error("Supabase support tickets search error:",I),{query:{...n,filters:r,search:u,total:0,page:y,limit:p},rows:[]}):{query:{...n,filters:r,search:u,limit:p,page:y,total:E||0},rows:(x||[]).map((S,O)=>({...S,index:g+O}))}}const q=await a(s,"support_tickets");return{...q,query:{...q.query,filters:r,search:u}}}}async function Y(){const t=["new","answered","follow_up","closed","spam"],e={new:0,answered:0,follow_up:0,closed:0,spam:0};return await Promise.all(t.map(async n=>{const{count:a,error:r}=await o.from("support_tickets").select("id",{count:"exact",head:!0}).eq("admin_queue",n);r||(e[n]=a||0)})),e}async function Z(t){const e=await f.get(`/admin/support/tickets/${t}`);return F(e)}async function tt(t){const e=t.content.trim();if(!e&&!(t.attachments||[]).length)throw new Error("متن پاسخ یا تصویر الزامی است");const n=await f.post(`/admin/support/tickets/${t.ticketId}/reply`,{content:e,attachments:t.attachments||[],adminId:t.adminId||null}),a=n==null?void 0:n.user_id;a&&P("پاسخ تیکت پشتیبانی","کارشناس ماچارتا به تیکت شما پاسخ داده است. برای دیدن پاسخ اینجا بزنید.",[a],`/support-ticket/${t.ticketId}`).catch(d=>{console.error("support ticket reply push failed:",d)});const r=(n==null?void 0:n.message)??n;return{...r,attachments:_(r==null?void 0:r.attachments)}}async function et(t){const e=new Date().toISOString(),{data:n,error:a}=await o.from("support_tickets").update({status:"closed",admin_queue:"closed",updated_at:e}).eq("id",t).select();if(a)throw a;return n}async function nt(t){const e=new Date().toISOString(),{data:n,error:a}=await o.from("support_tickets").update({admin_queue:"spam",updated_at:e}).eq("id",t).select();if(a)throw a;return n}async function at(t){const e=new Date().toISOString(),n=t.status==="closed"?"closed":t.status==="answered"||t.status==="reviewed"?"answered":"new",{data:a,error:r}=await o.from("support_tickets").update({admin_queue:n,updated_at:e}).eq("id",t.id).select();if(r)throw r;return a}export{M as a,N as b,U as c,G as d,B as e,K as f,W as g,Q as h,X as i,Y as j,Z as k,nt as l,J as m,et as n,tt as o,at as r,H as s,C as t,z as u};