Files
machartaa_admin_dist/dist/assets/index-fb020ae6.js
T

2 lines
19 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{_ as be}from"./BasicMainCard-84b6a59f.js";import{_ as xe}from"./BasicModal.vue_vue_type_style_index_0_lang-c3ae10a6.js";import{u as V,_ as ge}from"./useBaseTable-40588527.js";import{_ as he}from"./BasicInput.vue_vue_type_style_index_0_lang-edef22fe.js";import{_ as ye}from"./button.vue_vue_type_style_index_0_lang-ffd7bdde.js";import{I as N}from"./Icon-61889149.js";import{_ as we}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-cf72a1e2.js";import{t as Se,a as ke}from"./useDataTime-58f0c0c0.js";import{H as b,_ as Te,d as qe,g as x,K as C,L as Ie,h as K,v as Ee,o as J,c as W,b as l,w as d,a as s,e as U,j as f,E as z,t as Oe,k as Pe,C as p}from"./index-4dc7c6f6.js";import{a as Re,b as Ne,c as Ce,f as Ue}from"./supabaseTableQuery-8ee1dd3b.js";import{T as X}from"./index-2fcf178b.js";import{M as G}from"./index-4573c903.js";import{S as H}from"./fa_IR-06db085c.js";import{T as $}from"./shallowequal-c81602d9.js";import"./_plugin-vue_export-helper-a5e52605.js";import"./index-b0faa00c.js";import"./Col-21efcdc2.js";import"./vnode-88405440.js";import"./isPlainObject-8aaa3401.js";import"./index-286adeb4.js";import"./useState-4068a96b.js";import"./FormItemContext-4baae48b.js";import"./lodash-746af23f.js";import"./index-177aaded.js";import"./index-ebdb1487.js";import"./pickAttrs-10867317.js";import"./toArray-48ad4c5b.js";import"./usePrice-7afab779.js";import"./useRefs-262e2b68.js";const $e=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"ارسال‌کننده",dataIndex:"submitter_name",key:"submitter_name",filterField:"submitter_name",width:120},{title:"سوال",dataIndex:"question_text",key:"question_text",filterField:"question_text",customRender:e=>{var o;const i=e.record;return(o=i.question_text)!=null&&o.trim()?i.question_text:i.template_source?`${i.template_source} ...؟`:"-"}},{title:"گزینه ۱",dataIndex:"option1_text",key:"option1_text",filterField:"option1_text",width:120},{title:"گزینه ۲",dataIndex:"option2_text",key:"option2_text",filterField:"option2_text",width:120},{title:"تاریخ ارسال",dataIndex:"created_at",key:"created_at",type:"DateTime",filterField:"created_at",width:130,customRender:e=>Se(e.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center",width:120}],Ae=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"سوال",dataIndex:"question_text",key:"question_text",filterField:"question_text"},{title:"گزینه ۱",dataIndex:"option1_text",key:"option1_text",filterField:"option1_text",width:110},{title:"گزینه ۲",dataIndex:"option2_text",key:"option2_text",filterField:"option2_text",width:110},{title:"پاسخ صحیح",dataIndex:"correct_option",key:"correct_option",type:"Number",filterField:"correct_option",width:90,align:"center",customRender:e=>`گزینه ${e.record.correct_option}`},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",type:"Number",filterField:"sort_order",width:70,align:"center",customRender:e=>(e.record.sort_order??0)+1},{title:"تاریخ انتشار",dataIndex:"publish_date",key:"publish_date",type:"Date",filterField:"publish_date",width:120,customRender:e=>ke(e.record.publish_date)},{title:"طراح",dataIndex:"designer_name",key:"designer_name",filterField:"designer_name",width:110,customRender:e=>e.record.designer_user_id?e.record.designer_name||"کاربر":"-"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center",width:100}];function Y(e){var a;if(console.log(e,"error"),!e)return"خطا در ذخیره سوال";const i=e;return String(i.message??((a=i.error)==null?void 0:a.message)??"")||"خطا در ذخیره سوال"}function M(e){throw new Error(Y(e))}const g={BASE_POINTS:"daily_question_base_points",SUBSCRIPTION_BONUS:"daily_question_subscription_bonus",SUBMISSION_REWARD:"daily_question_submission_reward",TEMPLATE_PREFIX:"daily_question_template_prefix",TEMPLATE_SOURCES:"daily_question_template_sources"};function Be(e){if(!e)return[];try{const i=JSON.parse(e);return Array.isArray(i)?i.map(String):[]}catch{return e.split(",").map(i=>i.trim()).filter(Boolean)}}async function Fe(){const{data:e,error:i}=await b.from("configs").select("key, value").in("key",Object.values(g));if(i)throw i;const o=Object.fromEntries((e||[]).map(a=>[a.key,a.value]));return{base_points:Number(o[g.BASE_POINTS]??10),subscription_bonus:Number(o[g.SUBSCRIPTION_BONUS]??5),submission_reward:Number(o[g.SUBMISSION_REWARD]??20),template_prefix:o[g.TEMPLATE_PREFIX]??"کدوم رو ترجیح میدی از",template_sources:Be(o[g.TEMPLATE_SOURCES])}}async function O(e,i){const{data:o}=await b.from("configs").select("id").eq("key",e).maybeSingle();if(o!=null&&o.id){const{error:a}=await b.from("configs").update({value:i}).eq("key",e);if(a)throw a}else{const{error:a}=await b.from("configs").insert([{key:e,value:i}]);if(a)throw a}}async function De(e){await O(g.BASE_POINTS,String(e.base_points)),await O(g.SUBSCRIPTION_BONUS,String(e.subscription_bonus)),await O(g.SUBMISSION_REWARD,String(e.submission_reward)),await O(g.TEMPLATE_PREFIX,e.template_prefix),await O(g.TEMPLATE_SOURCES,JSON.stringify(e.template_sources))}function Me(e){if(!e)return"نامشخص";if(e.name)return e.name;const i=`${e.first_name||""} ${e.last_name||""}`.trim();return i||e.phone||"نامشخص"}const Le=new Set(["template_source","question_text","option1_text","option2_text","status","created_at"]);async function je(e){const i=Z(e),{limit:o=20,page:a=1,search:c,filters:S}=i;let v=b.from("daily_question_submissions").select("*, users(name, first_name, last_name, phone)",{count:"exact"}).eq("status","pending");if(c!=null&&c.trim()){const _=`%${c.trim()}%`;v=v.or(`question_text.ilike.${_},template_source.ilike.${_},option1_text.ilike.${_},option2_text.ilike.${_},users.name.ilike.${_},users.phone.ilike.${_},users.first_name.ilike.${_},users.last_name.ilike.${_}`)}S!=null&&S.length&&S.forEach(_=>{if(!(_.hidden||!_.field)){if(_.field==="submitter_name"){const y=`%${_.value}%`;["eq","has","like"].includes(_.op)&&(v=v.or(`users.name.ilike.${y},users.phone.ilike.${y}`));return}Le.has(_.field)&&(v=Re(v,_))}}),v=Ne(v,i,"-created_at",["created_at","template_source","question_text","status"]),v=Ce(v,a,o);const{data:k,error:h,count:T}=await v;if(h)throw h;return Ue(k,T,i,_=>{const y=Array.isArray(_.users)?_.users[0]:_.users;return{..._,submitter_name:Me(y)}})}function Z(e){var a;if(!((a=e.filters)!=null&&a.length))return e;const i=new Set(["publish_date","created_at"]),o=e.filters.map(c=>{if(!i.has(c.field)||c.value==null||c.value==="")return c;const S=typeof c.value=="string"?c.value.replace(/\//g,"-").split("T")[0]:c.value;return{...c,value:S}});return{...e,filters:o}}async function Qe(e){const{TableEngineRequest:i}=await Te(()=>import("./buildSupabaseQuery-0132dd7d.js"),["assets/buildSupabaseQuery-0132dd7d.js","assets/index-4dc7c6f6.js","assets/index-5d811526.css"]),o=Z({...e});return!o.sort&&!o.order&&(o.order="-publish_date"),i(o,"daily_questions")}async function ee(e){var c;const{data:i,error:o}=await b.from("daily_questions").select("sort_order").eq("publish_date",e).order("sort_order",{ascending:!1}).limit(1);if(o)throw o;return(((c=i==null?void 0:i[0])==null?void 0:c.sort_order)??-1)+1}async function Ve(e){const i=e.sort_order??await ee(e.publish_date),{data:o,error:a}=await b.from("daily_questions").insert([{question_text:e.question_text,option1_text:e.option1_text,option2_text:e.option2_text,correct_option:e.correct_option,publish_date:e.publish_date,sort_order:i,designer_user_id:e.designer_user_id||null,designer_name:e.designer_name||null,submission_id:e.submission_id||null}]).select().single();return a&&M(a),e.submission_id&&e.designer_user_id&&(await b.from("daily_question_submissions").update({status:"published"}).eq("id",e.submission_id),await b.rpc("dq_award_submission_reward",{p_user_id:e.designer_user_id})),o}async function Ke(e){const i=e.sort_order??await ee(e.publish_date),{data:o,error:a}=await b.from("daily_questions").insert([{question_text:e.question_text,option1_text:e.option1_text,option2_text:e.option2_text,correct_option:e.correct_option,publish_date:e.publish_date,sort_order:i,designer_name:e.designer_name||"ادمین",designer_user_id:null,submission_id:null}]).select().single();return a&&M(a),o}async function Je(e,i){const{data:o,error:a}=await b.from("daily_questions").update({...i,updated_at:new Date().toISOString()}).eq("id",e).select();return a&&M(a),o}async function We(e){const{error:i}=await b.from("daily_questions").delete().eq("id",e);if(i)throw i}async function ze(e){const{error:i}=await b.from("daily_question_submissions").update({status:"rejected"}).eq("id",e);if(i)throw i}function Xe(e,i){const o=e.trim(),a=i.trim();return`${o} ${a}؟`}function Ge(e,i){const o=e.trim();return i.find(a=>o.startsWith(a.trim()))}const He={class:"mb-6 p-4 border rounded-lg bg-gray-50"},Ye={class:"flex justify-between items-center mb-3"},Ze=s("h3",{class:"font-bold"},"تنظیمات سوال روز",-1),et={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},tt=s("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز پاسخ صحیح",-1),it=s("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز اضافه اشتراک",-1),st=s("div",{class:"mb-1 text-sm text-gray-600"},"پاداش انتشار سوال کاربر",-1),nt=s("div",{class:"mb-1 text-sm text-gray-600"},"پیشوند فرم کاربر",-1),ot={class:"sm:col-span-2"},at=s("div",{class:"mb-1 text-sm text-gray-600"},"گزینه‌های منبع (با کاما جدا کنید)",-1),rt={class:"gap-2 flex justify-center"},lt=s("span",null,"انتشار",-1),ut=s("span",null,"رد",-1),_t={class:"flex justify-between items-center mb-4"},dt=s("h2",null,"سوالات منتشر شده",-1),ct={class:"gap-2 flex justify-center"},mt=s("span",null,"ویرایش",-1),pt=s("span",null,"حذف",-1),vt={class:"space-y-4"},ft=s("div",{class:"mb-1 text-sm text-gray-600"},"متن سوال",-1),bt={class:"text-sm text-gray-700 flex items-center flex-wrap gap-1"},xt=s("span",null,"؟",-1),gt={class:"grid grid-cols-2 gap-4"},ht=s("div",{class:"mb-1 text-sm text-gray-600"},"متن گزینه ۱",-1),yt=s("div",{class:"mb-1 text-sm text-gray-600"},"متن گزینه ۲",-1),wt={class:"grid grid-cols-2 gap-4"},St=s("div",{class:"mb-1 text-sm text-gray-600"},"گزینه صحیح",-1),kt=s("div",{class:"mb-1 text-sm text-gray-600"},"تاریخ انتشار",-1),Tt=s("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش در همان روز (اختیاری)",-1),qt=s("div",{class:"text-xs text-gray-500 mt-1"},"می‌توانید چند سوال برای یک تاریخ منتشر کنید.",-1),It={key:0},Et=s("div",{class:"mb-1 text-sm text-gray-600"},"طراح سوال",-1),ni=qe({__name:"index",setup(e){const i=X,o=X.TabPane,a=H,c=H.Option;function S(t){return t?t.replace(/-/g,"/"):""}function v(t){return t?t.replace(/\//g,"-"):""}const k=x("submissions"),h=x(!1),T=x(!1),_=x(!1),y=x(!1),P=x(null),q=x(!1),[te,A]=V(),[ie,B]=V();C(k,async t=>{await Ie(),t==="submissions"?A():t==="published"&&B()});const m=x({base_points:10,subscription_bonus:5,submission_reward:20,template_prefix:"کدوم رو ترجیح میدی از",template_sources:[]}),R=x("");C(R,t=>{m.value.template_sources=t.split(",").map(n=>n.trim()).filter(Boolean)});const se=K(()=>m.value.template_sources.map(t=>({label:t,value:t}))),u=x({template_source:"",question_text:"",option1_text:"",option2_text:"",correct_option:null,publish_date:"",sort_order:void 0,designer_name:null,designer_user_id:null,submission_id:null}),I=x(""),E=x("");C(I,t=>{u.value.publish_date=v(t||"")}),C(E,t=>{const n=t.trim();u.value.sort_order=n===""?void 0:Number(n)});const ne=K(()=>y.value?"ویرایش سوال":q.value?"انتشار سوال کاربر":"افزودن سوال جدید"),oe={columns:$e,api:je,defaultPageLimit:20},ae={columns:Ae,api:Qe,defaultPageLimit:20};function F(){u.value={template_source:"",question_text:"",option1_text:"",option2_text:"",correct_option:null,publish_date:"",sort_order:void 0,designer_name:null,designer_user_id:null,submission_id:null},I.value="",E.value="",y.value=!1,P.value=null,q.value=!1}function re(){F(),h.value=!0}function le(t){F(),q.value=!0,u.value={template_source:t.template_source,question_text:t.question_text,option1_text:t.option1_text,option2_text:t.option2_text,correct_option:null,publish_date:"",designer_name:t.submitter_name,designer_user_id:t.user_id,submission_id:t.id},h.value=!0}function ue(t){y.value=!0,P.value=t.id,q.value=!1,u.value={template_source:Ge(t.question_text,m.value.template_sources)||"",question_text:t.question_text,option1_text:t.option1_text,option2_text:t.option2_text,correct_option:t.correct_option,publish_date:t.publish_date,sort_order:t.sort_order,designer_name:t.designer_name,designer_user_id:t.designer_user_id,submission_id:t.submission_id},I.value=S(t.publish_date),E.value=t.sort_order!=null?String(t.sort_order):"",h.value=!0}function L(){h.value=!1,F()}async function _e(){if(!u.value.template_source){p.warning("لطفاً منبع سوال را انتخاب کنید");return}if(u.value.question_text=Xe(u.value.template_source,m.value.template_prefix),!u.value.option1_text.trim()||!u.value.option2_text.trim()){p.warning("هر دو گزینه را وارد کنید");return}if(!u.value.correct_option){p.warning("لطفاً گزینه صحیح را انتخاب کنید");return}if(!u.value.publish_date){p.warning("تاریخ انتشار را انتخاب کنید");return}T.value=!0;try{y.value&&P.value?(await Je(P.value,u.value),p.success("سوال با موفقیت ویرایش شد")):q.value?(await Ve(u.value),p.success("سوال کاربر با موفقیت منتشر شد"),A()):(await Ke(u.value),p.success("سوال با موفقیت اضافه شد")),B(),L()}catch(t){p.error(Y(t))}finally{T.value=!1}}function de(t){G.confirm({title:"حذف سوال",content:"آیا از حذف این سوال مطمئن هستید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{await We(t.id),p.success("سوال حذف شد"),B()}catch(n){p.error((n==null?void 0:n.message)||"خطا در حذف")}}})}function ce(t){G.confirm({title:"رد سوال",content:"آیا از رد این سوال مطمئن هستید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{await ze(t.id),p.success("سوال رد شد"),A()}catch(n){p.error((n==null?void 0:n.message)||"خطا در رد سوال")}}})}async function me(){try{const t=await Fe();m.value=t,R.value=t.template_sources.join(", ")}catch(t){p.error((t==null?void 0:t.message)||"خطا در بارگذاری تنظیمات")}}async function pe(){_.value=!0;try{await De(m.value),p.success("تنظیمات ذخیره شد")}catch(t){p.error((t==null?void 0:t.message)||"خطا در ذخیره تنظیمات")}finally{_.value=!1}}return Ee(me),(t,n)=>{const j=ye,w=he,Q=ge,ve=xe,fe=be;return J(),W("div",null,[l(fe,null,{default:d(()=>[s("div",He,[s("div",Ye,[Ze,l(j,{type:"primary",size:"small",loading:_.value,onClick:pe},{default:d(()=>[U(" ذخیره تنظیمات ")]),_:1},8,["loading"])]),s("div",et,[s("div",null,[tt,l(w,{value:m.value.base_points,"onUpdate:value":n[0]||(n[0]=r=>m.value.base_points=r),type:"number"},null,8,["value"])]),s("div",null,[it,l(w,{value:m.value.subscription_bonus,"onUpdate:value":n[1]||(n[1]=r=>m.value.subscription_bonus=r),type:"number"},null,8,["value"])]),s("div",null,[st,l(w,{value:m.value.submission_reward,"onUpdate:value":n[2]||(n[2]=r=>m.value.submission_reward=r),type:"number"},null,8,["value"])]),s("div",null,[nt,l(w,{value:m.value.template_prefix,"onUpdate:value":n[3]||(n[3]=r=>m.value.template_prefix=r),placeholder:"کدوم رو ترجیح میدی از"},null,8,["value"])]),s("div",ot,[at,l(w,{value:R.value,"onUpdate:value":n[4]||(n[4]=r=>R.value=r),placeholder:"علی, رضا, سارا, مریم"},null,8,["value"])])])]),l(f(i),{activeKey:k.value,"onUpdate:activeKey":n[5]||(n[5]=r=>k.value=r)},{default:d(()=>[l(f(o),{key:"submissions",tab:"سوالات کاربران"},{default:d(()=>[l(Q,z(oe,{onRegister:f(te)}),{action:d(({record:r})=>[s("div",rt,[l(f($),{class:"cursor-pointer"},{title:d(()=>[lt]),default:d(()=>[l(N,{icon:"vuesax-linear:tick-circle",color:"#16A34A",onClick:D=>le(r)},null,8,["onClick"])]),_:2},1024),l(f($),{class:"cursor-pointer"},{title:d(()=>[ut]),default:d(()=>[l(N,{icon:"vuesax-linear:close-circle",color:"#DC2626",onClick:D=>ce(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),l(f(o),{key:"published",tab:"سوالات روز"},{default:d(()=>[s("div",_t,[dt,l(j,{type:"primary",onClick:re},{default:d(()=>[U("افزودن سوال")]),_:1})]),l(Q,z(ae,{onRegister:f(ie)}),{action:d(({record:r})=>[s("div",ct,[l(f($),{class:"cursor-pointer"},{title:d(()=>[mt]),default:d(()=>[l(N,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:D=>ue(r)},null,8,["onClick"])]),_:2},1024),l(f($),{class:"cursor-pointer"},{title:d(()=>[pt]),default:d(()=>[l(N,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:D=>de(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1})]),_:1},8,["activeKey"]),l(ve,{visible:h.value,"onUpdate:visible":n[13]||(n[13]=r=>h.value=r),title:ne.value,onOk:_e,onCancel:L,width:"70%",confirmLoading:T.value},{default:d(()=>[s("div",vt,[s("div",null,[ft,s("div",bt,[l(f(a),{value:u.value.template_source,"onUpdate:value":n[6]||(n[6]=r=>u.value.template_source=r),options:se.value,placeholder:"انتخاب منبع",class:"min-w-[120px]"},null,8,["value","options"]),s("span",null,Oe(m.value.template_prefix),1),xt])]),s("div",gt,[s("div",null,[ht,l(w,{value:u.value.option1_text,"onUpdate:value":n[7]||(n[7]=r=>u.value.option1_text=r),placeholder:"گزینه ۱"},null,8,["value"])]),s("div",null,[yt,l(w,{value:u.value.option2_text,"onUpdate:value":n[8]||(n[8]=r=>u.value.option2_text=r),placeholder:"گزینه ۲"},null,8,["value"])])]),s("div",wt,[s("div",null,[St,l(f(a),{value:u.value.correct_option,"onUpdate:value":n[9]||(n[9]=r=>u.value.correct_option=r),class:"w-full",placeholder:"انتخاب گزینه صحیح","allow-clear":""},{default:d(()=>[l(f(c),{value:1},{default:d(()=>[U("گزینه ۱")]),_:1}),l(f(c),{value:2},{default:d(()=>[U("گزینه ۲")]),_:1})]),_:1},8,["value"])]),s("div",null,[kt,l(we,{value:I.value,"onUpdate:value":n[10]||(n[10]=r=>I.value=r)},null,8,["value"])])]),s("div",null,[Tt,l(w,{value:E.value,"onUpdate:value":n[11]||(n[11]=r=>E.value=r),type:"number",placeholder:"خالی = آخر لیست"},null,8,["value"]),qt]),u.value.designer_user_id&&u.value.designer_name?(J(),W("div",It,[Et,l(w,{value:u.value.designer_name,"onUpdate:value":n[12]||(n[12]=r=>u.value.designer_name=r),disabled:""},null,8,["value"])])):Pe("",!0)])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{ni as default};