41 lines
7.1 KiB
JavaScript
41 lines
7.1 KiB
JavaScript
import{_ as d,G as s,bC as f,I as m}from"./index-f83afa83.js";import{e as y}from"./convert-2ad76038.js";function v(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 g(e){return e.message_type==="image"?"تصویر":e.message_type==="audio"?"پیام صوتی":e.message_type==="file"?e.file_name||"فایل":(e.content||"").trim().slice(0,200)}function h(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 p(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:h(e.reply_to),read_at:e.read_at,created_at:e.created_at}}function b(e){return e==="user"?"کاربر":"پشتیبانی"}function T(e){return e.message_type==="image"?"تصویر":e.message_type==="audio"?"پیام صوتی":e.message_type==="file"?e.file_name||"فایل":(e.content||"").trim()||"پیام"}function E(e,t){if(e.reply_to||!e.reply_to_id)return e;const n=t.find(r=>r.id===e.reply_to_id);return n?{...e,reply_to:{id:n.id,sender_type:n.sender_type,content:n.content,message_type:n.message_type,file_url:n.file_url,file_name:n.file_name}}:e}const l=`
|
|
*,
|
|
reply_to:reply_to_id (
|
|
id,
|
|
sender_type,
|
|
content,
|
|
message_type,
|
|
file_url,
|
|
file_name,
|
|
created_at
|
|
)
|
|
`;async function I(e){const{TableEngineRequest:t}=await d(()=>import("./buildSupabaseQuery-e9dfb20d.js"),["assets/buildSupabaseQuery-e9dfb20d.js","assets/index-f83afa83.js","assets/index-518d479c.css","assets/supabaseTableQuery-95762ff3.js"]),n={...e};return!n.sort&&!n.order&&(n.order="sort_order"),t(n,"support_faqs")}async function A(e){const{data:t,error:n}=await s.from("support_faqs").insert([e]).select();if(n)throw n;return t}async function D(e,t){const{data:n,error:r}=await s.from("support_faqs").update({...t,updated_at:new Date().toISOString()}).eq("id",e).select();if(r)throw r;return n}async function w(e){const{error:t}=await s.from("support_faqs").delete().eq("id",e);if(t)throw t}async function R(){const{data:e,error:t}=await s.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 x(e){const{data:t,error:n}=await s.from("support_messages").select(l).eq("conversation_id",e).order("created_at",{ascending:!0});if(n)throw n;return(t||[]).map(p)}async function F(e){const t=new Date().toISOString(),n=e.content.trim(),r=g({content:n,message_type:"text"}),{data:a,error:i}=await s.from("support_conversations").select("unread_by_user").eq("id",e.conversationId).single();if(i)throw i;const{data:o,error:u}=await s.from("support_messages").insert([{conversation_id:e.conversationId,sender_type:"admin",sender_id:e.adminId,content:n,message_type:"text",reply_to_id:e.replyToId||null}]).select(l).single();if(u)throw u;const{error:_}=await s.from("support_conversations").update({last_message_at:t,last_message_preview:r,unread_by_user:((a==null?void 0:a.unread_by_user)??0)+1,unread_by_admin:0,updated_at:t}).eq("id",e.conversationId);if(_)throw _;return p(o)}async function P(e){const t=new Date().toISOString();await s.from("support_messages").update({read_at:t}).eq("conversation_id",e).eq("sender_type","user").is("read_at",null),await s.from("support_conversations").update({unread_by_admin:0,updated_at:t}).eq("id",e)}function O(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 c(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 S(e){const t=Array.isArray(e==null?void 0:e.messages)?e.messages.map(n=>({...n,attachments:c(n==null?void 0:n.attachments)})).sort((n,r)=>new Date(n.created_at).getTime()-new Date(r.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:c(e==null?void 0:e.attachments),admin_attachments:c(e==null?void 0:e.admin_attachments),messages:t}}function j(e,t){return async n=>{const{TableEngineRequest:r}=await d(()=>import("./buildSupabaseQuery-e9dfb20d.js"),["assets/buildSupabaseQuery-e9dfb20d.js","assets/index-f83afa83.js","assets/index-518d479c.css","assets/supabaseTableQuery-95762ff3.js"]),a=[...n.filters||[]],i=[...a];i.push({field:"admin_queue",op:"eq",value:e}),t!=="all"&&i.push({field:"subject",op:"eq",value:t});const o={...n,filters:i,select:["*","users(id,name,first_name,last_name,phone)"]};!o.sort&&!o.order&&(o.order="-updated_at");const u=await r(o,"support_tickets");return{...u,query:{...u.query,filters:a}}}}async function M(){const e=["new","answered","follow_up","closed"],t={new:0,answered:0,follow_up:0,closed:0};return await Promise.all(e.map(async n=>{const{count:r,error:a}=await s.from("support_tickets").select("id",{count:"exact",head:!0}).eq("admin_queue",n);a||(t[n]=r||0)})),t}async function C(e){const{data:t,error:n}=await s.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(n)throw n;return S(t)}async function L(e){var o,u;const t=f()||localStorage.getItem("tamin_token")||localStorage.getItem("token")||"";if(!t)throw new Error("توکن احراز هویت یافت نشد");const n=new FormData;n.append("file",e);const r=await fetch(`${m}/upload/machartaa-img`,{method:"POST",headers:{Authorization:`Bearer ${t}`},body:n});if(!r.ok)throw new Error("خطا در آپلود تصویر");const a=await r.json(),i=a.full_src||a.url||a.src||a.path||((o=a.data)==null?void 0:o.full_src)||((u=a.data)==null?void 0:u.url);if(!i)throw new Error("مسیر فایل از سرور دریافت نشد");return y(i)}async function B(e){const t=e.content.trim();if(!t&&!(e.attachments||[]).length)throw new Error("متن پاسخ یا تصویر الزامی است");const n=new Date().toISOString(),r=e.attachments||[],{data:a,error:i}=await s.from("support_ticket_messages").insert([{ticket_id:e.ticketId,sender_type:"admin",sender_id:e.adminId||null,content:t||" ",attachments:r}]).select("*").single();if(i)throw i;const{error:o}=await s.from("support_tickets").update({status:"answered",admin_queue:"answered",admin_note:t||null,admin_attachments:r,updated_at:n}).eq("id",e.ticketId);if(o)throw o;return{...a,attachments:c(a.attachments)}}export{b as a,T as b,R as c,x as d,p as e,I as f,O as g,A as h,w as i,j,M as k,C as l,P as m,L as n,B as o,E as r,F as s,v as t,D as u};
|