Files
machartaa_admin_dist/dist/assets/support-e18a1b2a.js
T

12 lines
7.3 KiB
JavaScript

import{_,R as f}from"./index-88b436a3.js";import{adminDb as o}from"./adminDb-decb7b8e.js";import{b as $}from"./pushNotification-44c74c8e.js";function C(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 O(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 A(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:O(e.reply_to),read_at:e.read_at,created_at:e.created_at}}function M(e){return e==="user"?"کاربر":"پشتیبانی"}function N(e){return e.message_type==="image"?"تصویر":e.message_type==="audio"?"پیام صوتی":e.message_type==="file"?e.file_name||"فایل":(e.content||"").trim()||"پیام"}async function B(e){const{TableEngineRequest:t}=await _(()=>import("./buildSupabaseQuery-073609fa.js"),["assets/buildSupabaseQuery-073609fa.js","assets/index-88b436a3.js","assets/index-ceed3b68.css"]),n={...e};return!n.sort&&!n.order&&(n.order="sort_order"),t(n,"support_faqs")}async function K(e){const{data:t,error:n}=await o.from("support_faqs").insert([e]).select();if(n)throw n;return t}async function z(e,t){const{data:n,error:a}=await o.from("support_faqs").update({...t,updated_at:new Date().toISOString()}).eq("id",e).select();if(a)throw a;return n}async function Q(e){const{error:t}=await o.from("support_faqs").delete().eq("id",e);if(t)throw t}async function U(){const{data:e,error:t}=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(t)throw t;return e||[]}async function G(e){return(await f.get(`/admin/support/conversations/${e}/messages`)||[]).map(A)}async function H(e){const t=await f.post(`/admin/support/conversations/${e.conversationId}/messages`,{content:e.content,replyToId:e.replyToId,adminId:e.adminId});return A(t)}async function J(e){const t=new Date().toISOString();await o.from("support_messages").update({read_at:t}).eq("conversation_id",e).eq("sender_type","user").is("read_at",null),await o.from("support_conversations").update({unread_by_admin:0,updated_at:t}).eq("id",e)}function W(e){var n;if(e.guest_id)return((n=e.guest_name)==null?void 0:n.trim())||"مهمان";const t=e.users;return t&&(t.name||[t.first_name,t.last_name].filter(Boolean).join(" ")||t.phone)||"کاربر"}function l(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 F(e){const t=Array.isArray(e==null?void 0:e.messages)?e.messages.map(n=>({...n,attachments:l(n==null?void 0:n.attachments)})).sort((n,a)=>new Date(n.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:l(e==null?void 0:e.attachments),admin_attachments:l(e==null?void 0:e.admin_attachments),messages:t}}function X(e,t){return async n=>{var q,T,b;const{TableEngineRequest:a}=await _(()=>import("./buildSupabaseQuery-073609fa.js"),["assets/buildSupabaseQuery-073609fa.js","assets/index-88b436a3.js","assets/index-ceed3b68.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:e,hidden:!1}),t!=="all"&&d.push({field:"subject",op:"eq",value:t,hidden:!1});const u=String(n.search||"").trim(),s={...n,filters:d,search:u,select:["*","users(id,name,first_name,last_name,phone)","messages:support_ticket_messages(id,content,attachments,created_at,sender_type)"]};if((((q=s.sort)==null?void 0:q.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 _(()=>import("./adminDb-decb7b8e.js"),["assets/adminDb-decb7b8e.js","assets/index-88b436a3.js","assets/index-ceed3b68.css"]),{applySupabaseFilter:D,toPostgrestIlikeTerm:v}=await _(()=>import("./supabaseTableQuery-81d2dd21.js"),["assets/supabaseTableQuery-81d2dd21.js","assets/index-88b436a3.js","assets/index-ceed3b68.css"]);let c=i.from("support_tickets").select("*,users(id,name,first_name,last_name,phone),messages:support_ticket_messages(id,content,attachments,created_at,sender_type)",{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,P)=>({...S,index:g+P}))}}const k=await a(s,"support_tickets");return{...k,query:{...k.query,filters:r,search:u}}}}async function Y(){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 n=>{const{count:a,error:r}=await o.from("support_tickets").select("id",{count:"exact",head:!0}).eq("admin_queue",n);r||(t[n]=a||0)})),t}async function Z(e){const t=await f.get(`/admin/support/tickets/${e}`);return F(t)}async function ee(e){const t=e.content.trim();if(!t&&!(e.attachments||[]).length)throw new Error("متن پاسخ یا تصویر الزامی است");const n=await f.post(`/admin/support/tickets/${e.ticketId}/reply`,{content:t,attachments:e.attachments||[],adminId:e.adminId||null}),a=n==null?void 0:n.user_id;a&&$("پاسخ تیکت پشتیبانی","کارشناس ماچارتا به تیکت شما پاسخ داده است. برای دیدن پاسخ اینجا بزنید.",[a],`/support-ticket/${e.ticketId}`).catch(d=>{console.error("support ticket reply push failed:",d)});const r=(n==null?void 0:n.message)??n;return{...r,attachments:l(r==null?void 0:r.attachments)}}async function te(e){const t=new Date().toISOString(),{data:n,error:a}=await o.from("support_tickets").update({status:"closed",admin_queue:"closed",updated_at:t}).eq("id",e).select();if(a)throw a;return n}async function ne(e){const t=new Date().toISOString(),{data:n,error:a}=await o.from("support_tickets").update({admin_queue:"spam",updated_at:t}).eq("id",e).select();if(a)throw a;return n}async function ae(e){const t=new Date().toISOString(),n=e.status==="closed"?"closed":e.status==="answered"||e.status==="reviewed"?"answered":"new",{data:a,error:r}=await o.from("support_tickets").update({admin_queue:n,updated_at:t}).eq("id",e.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,ne as l,J as m,te as n,ee as o,ae as r,H as s,C as t,z as u};