Files
machartaa_admin_dist/dist/assets/support-1b2f9550.js
T
2026-08-19 18:36:32 +03:30

41 lines
9.7 KiB
JavaScript

import{_ as y,G as i,bF as F,I as O}from"./index-b0561d74.js";import{e as $}from"./convert-2ad76038.js";import{b as L}from"./pushNotification-510f3e6b.js";function z(e){return{id:e.id,sender_type:e.sender_type,content:e.content||"",message_type:e.message_type||"text",file_url:e.file_url,file_name:e.file_name}}function j(e){return e.message_type==="image"?"تصویر":e.message_type==="audio"?"پیام صوتی":e.message_type==="file"?e.file_name||"فایل":(e.content||"").trim().slice(0,200)}function M(e){return e!=null&&e.id?{id:e.id,sender_type:e.sender_type,content:e.content||"",message_type:e.message_type||"text",file_url:e.file_url,file_name:e.file_name}:null}function I(e){return{id:e.id,conversation_id:e.conversation_id,sender_type:e.sender_type,sender_id:e.sender_id,content:e.content||"",message_type:e.message_type||"text",file_url:e.file_url,file_name:e.file_name,reply_to_id:e.reply_to_id,reply_to:M(e.reply_to),read_at:e.read_at,created_at:e.created_at}}function G(e){return e==="user"?"کاربر":"پشتیبانی"}function K(e){return e.message_type==="image"?"تصویر":e.message_type==="audio"?"پیام صوتی":e.message_type==="file"?e.file_name||"فایل":(e.content||"").trim()||"پیام"}function U(e,t){if(e.reply_to||!e.reply_to_id)return e;const r=t.find(a=>a.id===e.reply_to_id);return r?{...e,reply_to:{id:r.id,sender_type:r.sender_type,content:r.content,message_type:r.message_type,file_url:r.file_url,file_name:r.file_name}}:e}const v=`
*,
reply_to:reply_to_id (
id,
sender_type,
content,
message_type,
file_url,
file_name,
created_at
)
`;async function Q(e){const{TableEngineRequest:t}=await y(()=>import("./buildSupabaseQuery-09e09955.js"),["assets/buildSupabaseQuery-09e09955.js","assets/index-b0561d74.js","assets/index-a54d32f7.css","assets/supabaseTableQuery-8ab5665d.js"]),r={...e};return!r.sort&&!r.order&&(r.order="sort_order"),t(r,"support_faqs")}async function H(e){const{data:t,error:r}=await i.from("support_faqs").insert([e]).select();if(r)throw r;return t}async function J(e,t){const{data:r,error:a}=await i.from("support_faqs").update({...t,updated_at:new Date().toISOString()}).eq("id",e).select();if(a)throw a;return r}async function W(e){const{error:t}=await i.from("support_faqs").delete().eq("id",e);if(t)throw t}async function X(){const{data:e,error:t}=await i.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(t)throw t;return e||[]}async function Y(e){const{data:t,error:r}=await i.from("support_messages").select(v).eq("conversation_id",e).order("created_at",{ascending:!0});if(r)throw r;return(t||[]).map(I)}async function Z(e){const t=new Date().toISOString(),r=e.content.trim(),a=j({content:r,message_type:"text"}),{data:n,error:u}=await i.from("support_conversations").select("unread_by_user").eq("id",e.conversationId).single();if(u)throw u;const{data:o,error:s}=await i.from("support_messages").insert([{conversation_id:e.conversationId,sender_type:"admin",sender_id:e.adminId,content:r,message_type:"text",reply_to_id:e.replyToId||null}]).select(v).single();if(s)throw s;const{error:d}=await i.from("support_conversations").update({last_message_at:t,last_message_preview:a,unread_by_user:((n==null?void 0:n.unread_by_user)??0)+1,unread_by_admin:0,updated_at:t}).eq("id",e.conversationId);if(d)throw d;return I(o)}async function ee(e){const t=new Date().toISOString();await i.from("support_messages").update({read_at:t}).eq("conversation_id",e).eq("sender_type","user").is("read_at",null),await i.from("support_conversations").update({unread_by_admin:0,updated_at:t}).eq("id",e)}function te(e){var r;if(e.guest_id)return((r=e.guest_name)==null?void 0:r.trim())||"مهمان";const t=e.users;return t&&(t.name||[t.first_name,t.last_name].filter(Boolean).join(" ")||t.phone)||"کاربر"}function g(e){return Array.isArray(e)?e.map(t=>typeof t=="string"?{url:t,name:null}:t&&typeof t=="object"&&"url"in t?{url:String(t.url||""),name:t.name||null}:null).filter(t=>!!(t!=null&&t.url)):[]}function C(e){const t=Array.isArray(e==null?void 0:e.messages)?e.messages.map(r=>({...r,attachments:g(r==null?void 0:r.attachments)})).sort((r,a)=>new Date(r.created_at).getTime()-new Date(a.created_at).getTime()):void 0;return{...e,subject:(e==null?void 0:e.subject)||"other",admin_queue:(e==null?void 0:e.admin_queue)||"new",attachments:g(e==null?void 0:e.attachments),admin_attachments:g(e==null?void 0:e.admin_attachments),messages:t}}function re(e,t){return async r=>{var p,f,w;const{TableEngineRequest:a}=await y(()=>import("./buildSupabaseQuery-09e09955.js"),["assets/buildSupabaseQuery-09e09955.js","assets/index-b0561d74.js","assets/index-a54d32f7.css","assets/supabaseTableQuery-8ab5665d.js"]),n=[...r.filters||[]],u=n.filter(c=>(c==null?void 0:c.field)&&c.field!=="action"&&c.field!=="row").map(c=>c.field==="ticket_no"?{...c,field:"id",hidden:!1}:{...c,hidden:!1});u.push({field:"admin_queue",op:"eq",value:e,hidden:!1}),t!=="all"&&u.push({field:"subject",op:"eq",value:t,hidden:!1});const o=String(r.search||"").trim(),s={...r,filters:u,search:o,select:["*","users(id,name,first_name,last_name,phone)"]};if((((p=s.sort)==null?void 0:p.key)==="ticket_no"||((f=s.sort)==null?void 0:f.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(o)){const{supabase:c}=await y(()=>import("./index-b0561d74.js").then(l=>l.bS),["assets/index-b0561d74.js","assets/index-a54d32f7.css"]),{applySupabaseFilter:T,toPostgrestIlikeTerm:E}=await y(()=>import("./supabaseTableQuery-8ab5665d.js"),[]);let _=c.from("support_tickets").select("*,users(id,name,first_name,last_name,phone)",{count:"exact"});const h=E(o);_=_.or(`id.eq.${Number(o)},problem.ilike.${h},account_name.ilike.${h},account_phone.ilike.${h}`),u.forEach(l=>{_=T(_,l)});const S=s.page||1,m=s.limit||20,k=(S-1)*m,q=((w=s.sort)==null?void 0:w.key)||"updated_at",A=q==="ticket_no"||q==="row_index"?"id":q,D=s.sort?s.sort.order==="asc":!1;_=_.range(k,k+m-1).order(A,{ascending:D});const{data:R,error:b,count:x}=await _;return b?(console.error("Supabase support tickets search error:",b),{query:{...r,filters:n,search:o,total:0,page:S,limit:m},rows:[]}):{query:{...r,filters:n,search:o,limit:m,page:S,total:x||0},rows:(R||[]).map((l,P)=>({...l,index:k+P}))}}const d=await a(s,"support_tickets");return{...d,query:{...d.query,filters:n,search:o}}}}async function ne(){const e=["new","answered","follow_up","closed","spam"],t={new:0,answered:0,follow_up:0,closed:0,spam:0};return await Promise.all(e.map(async r=>{const{count:a,error:n}=await i.from("support_tickets").select("id",{count:"exact",head:!0}).eq("admin_queue",r);n||(t[r]=a||0)})),t}async function ae(e){const{data:t,error:r}=await i.from("support_tickets").select(`
*,
users (
id,
name,
first_name,
last_name,
phone
),
messages:support_ticket_messages (
id,
ticket_id,
sender_type,
sender_id,
content,
attachments,
created_at
)
`).eq("id",e).single();if(r)throw r;return C(t)}async function se(e){var o,s;const t=F()||localStorage.getItem("tamin_token")||localStorage.getItem("token")||"";if(!t)throw new Error("توکن احراز هویت یافت نشد");const r=new FormData;r.append("file",e);const a=await fetch(`${O}/upload/machartaa-img`,{method:"POST",headers:{Authorization:`Bearer ${t}`},body:r});if(!a.ok)throw new Error("خطا در آپلود تصویر");const n=await a.json(),u=n.full_src||n.url||n.src||n.path||((o=n.data)==null?void 0:o.full_src)||((s=n.data)==null?void 0:s.url);if(!u)throw new Error("مسیر فایل از سرور دریافت نشد");return $(u)}async function ie(e){const t=e.content.trim();if(!t&&!(e.attachments||[]).length)throw new Error("متن پاسخ یا تصویر الزامی است");const r=new Date().toISOString(),a=e.attachments||[],{data:n,error:u}=await i.from("support_tickets").select("id, user_id, unread_by_user").eq("id",e.ticketId).single();if(u)throw u;const{data:o,error:s}=await i.from("support_ticket_messages").insert([{ticket_id:e.ticketId,sender_type:"admin",sender_id:e.adminId||null,content:t||" ",attachments:a}]).select("*").single();if(s)throw s;const{error:d}=await i.from("support_tickets").update({status:"answered",admin_queue:"answered",admin_note:t||null,admin_attachments:a,unread_by_user:((n==null?void 0:n.unread_by_user)??0)+1,updated_at:r}).eq("id",e.ticketId);if(d)throw d;const p=n==null?void 0:n.user_id;return p&&L("پاسخ تیکت پشتیبانی","کارشناس ماچارتا به تیکت شما پاسخ داده است. برای دیدن پاسخ اینجا بزنید.",[p],`/support-ticket/${e.ticketId}`).catch(f=>{console.error("support ticket reply push failed:",f)}),{...o,attachments:g(o.attachments)}}async function oe(e){const t=new Date().toISOString(),{data:r,error:a}=await i.from("support_tickets").update({status:"closed",admin_queue:"closed",updated_at:t}).eq("id",e).select();if(a)throw a;return r}async function ue(e){const t=new Date().toISOString(),{data:r,error:a}=await i.from("support_tickets").update({admin_queue:"spam",updated_at:t}).eq("id",e).select();if(a)throw a;return r}async function ce(e){const t=new Date().toISOString(),r=e.status==="closed"?"closed":e.status==="answered"||e.status==="reviewed"?"answered":"new",{data:a,error:n}=await i.from("support_tickets").update({admin_queue:r,updated_at:t}).eq("id",e.id).select();if(n)throw n;return a}export{G as a,K as b,X as c,Y as d,I as e,Q as f,te as g,H as h,W as i,re as j,ne as k,ae as l,ee as m,se as n,ue as o,ce as p,oe as q,U as r,Z as s,z as t,J as u,ie as v};