2 lines
17 KiB
JavaScript
2 lines
17 KiB
JavaScript
import{_ as fe}from"./BasicMainCard-3439e95d.js";import{_ as be}from"./BasicModal.vue_vue_type_style_index_0_lang-b202ccf4.js";import{_ as xe,u as V}from"./useBaseTable-0a9ca5c6.js";import{_ as ge}from"./BasicInput.vue_vue_type_style_index_0_lang-d31a14b4.js";import{_ as ye}from"./button.vue_vue_type_style_index_0_lang-c248f06f.js";import{I as P}from"./Icon-08f00b08.js";import{_ as he}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-d9db54d1.js";import{t as we,a as Se}from"./useDataTime-b5b0c094.js";import{H as p,_ as Te,d as ke,g as v,K as D,h as K,v as qe,o as J,c as W,b as l,w as d,a as i,e as C,j as m,E as X,t as Ie,k as Ee,C as c}from"./index-65856697.js";import{T as G}from"./index-fa326b70.js";import{M as z}from"./index-2debd256.js";import{S as H}from"./fa_IR-9a5561fa.js";import{T as U}from"./shallowequal-e2999554.js";import"./_plugin-vue_export-helper-d18c65cd.js";import"./index-0560f4e9.js";import"./Col-9bf281e5.js";import"./vnode-9598f8b5.js";import"./isPlainObject-77557052.js";import"./index-3eb1fc79.js";import"./useState-74c053ae.js";import"./FormItemContext-75d7b3a2.js";import"./lodash-1b6d5368.js";import"./index-5b62301e.js";import"./index-c60120a9.js";import"./pickAttrs-5f523685.js";import"./toArray-c0948cf7.js";import"./usePrice-7afab779.js";import"./useRefs-320e6bbe.js";const Oe=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"ارسالکننده",dataIndex:"submitter_name",key:"submitter_name",width:120},{title:"سوال",dataIndex:"question_text",key:"question_text",customRender:e=>{var o;const s=e.record;return(o=s.question_text)!=null&&o.trim()?s.question_text:s.template_source?`${s.template_source} ...؟`:"-"}},{title:"گزینه ۱",dataIndex:"option1_text",key:"option1_text",width:120},{title:"گزینه ۲",dataIndex:"option2_text",key:"option2_text",width:120},{title:"تاریخ ارسال",dataIndex:"created_at",key:"created_at",width:130,customRender:e=>we(e.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center",width:120}],Re=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"سوال",dataIndex:"question_text",key:"question_text"},{title:"گزینه ۱",dataIndex:"option1_text",key:"option1_text",width:110},{title:"گزینه ۲",dataIndex:"option2_text",key:"option2_text",width:110},{title:"پاسخ صحیح",dataIndex:"correct_option",key:"correct_option",width:90,align:"center",customRender:e=>`گزینه ${e.record.correct_option}`},{title:"ترتیب",dataIndex:"sort_order",key:"sort_order",width:70,align:"center",customRender:e=>(e.record.sort_order??0)+1},{title:"تاریخ انتشار",dataIndex:"publish_date",key:"publish_date",width:120,customRender:e=>Se(e.record.publish_date)},{title:"طراح",dataIndex:"designer_name",key:"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 r;if(!e)return"خطا در ذخیره سوال";const s=e;return String(s.message??((r=s.error)==null?void 0:r.message)??"")||"خطا در ذخیره سوال"}function M(e){throw new Error(Y(e))}const f={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 Pe(e){if(!e)return[];try{const s=JSON.parse(e);return Array.isArray(s)?s.map(String):[]}catch{return e.split(",").map(s=>s.trim()).filter(Boolean)}}async function Ce(){const{data:e,error:s}=await p.from("configs").select("key, value").in("key",Object.values(f));if(s)throw s;const o=Object.fromEntries((e||[]).map(r=>[r.key,r.value]));return{base_points:Number(o[f.BASE_POINTS]??10),subscription_bonus:Number(o[f.SUBSCRIPTION_BONUS]??5),submission_reward:Number(o[f.SUBMISSION_REWARD]??20),template_prefix:o[f.TEMPLATE_PREFIX]??"کدوم رو ترجیح میدی از",template_sources:Pe(o[f.TEMPLATE_SOURCES])}}async function I(e,s){const{data:o}=await p.from("configs").select("id").eq("key",e).maybeSingle();if(o!=null&&o.id){const{error:r}=await p.from("configs").update({value:s}).eq("key",e);if(r)throw r}else{const{error:r}=await p.from("configs").insert([{key:e,value:s}]);if(r)throw r}}async function Ue(e){await I(f.BASE_POINTS,String(e.base_points)),await I(f.SUBSCRIPTION_BONUS,String(e.subscription_bonus)),await I(f.SUBMISSION_REWARD,String(e.submission_reward)),await I(f.TEMPLATE_PREFIX,e.template_prefix),await I(f.TEMPLATE_SOURCES,JSON.stringify(e.template_sources))}function Ne(e){if(!e)return"نامشخص";if(e.name)return e.name;const s=`${e.first_name||""} ${e.last_name||""}`.trim();return s||e.phone||"نامشخص"}async function Ae(e){const{limit:s=20,page:o=1}=e,r=(o-1)*s,g=r+s-1,{data:N,error:E,count:w}=await p.from("daily_question_submissions").select("*, users(name, first_name, last_name, phone)",{count:"exact"}).eq("status","pending").order("created_at",{ascending:!1}).range(r,g);if(E)throw E;return{rows:(N||[]).map((x,S)=>{const h=Array.isArray(x.users)?x.users[0]:x.users;return{...x,index:r+S,submitter_name:Ne(h)}}),total:w??0,query:{...e,total:w??0,page:o,limit:s}}}async function Be(e){const{TableEngineRequest:s}=await Te(()=>import("./buildSupabaseQuery-dbcbc796.js"),["assets/buildSupabaseQuery-dbcbc796.js","assets/index-65856697.js","assets/index-26d6f44b.css"]),o={...e};return!o.sort&&!o.order&&(o.order="-publish_date"),s(o,"daily_questions")}async function Z(e){var g;const{data:s,error:o}=await p.from("daily_questions").select("sort_order").eq("publish_date",e).order("sort_order",{ascending:!1}).limit(1);if(o)throw o;return(((g=s==null?void 0:s[0])==null?void 0:g.sort_order)??-1)+1}async function De(e){const s=e.sort_order??await Z(e.publish_date),{data:o,error:r}=await p.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:s,designer_user_id:e.designer_user_id||null,designer_name:e.designer_name||null,submission_id:e.submission_id||null}]).select().single();return r&&M(r),e.submission_id&&e.designer_user_id&&(await p.from("daily_question_submissions").update({status:"published"}).eq("id",e.submission_id),await p.rpc("dq_award_submission_reward",{p_user_id:e.designer_user_id})),o}async function Me(e){const s=e.sort_order??await Z(e.publish_date),{data:o,error:r}=await p.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:s,designer_name:e.designer_name||"ادمین",designer_user_id:null,submission_id:null}]).select().single();return r&&M(r),o}async function $e(e,s){const{data:o,error:r}=await p.from("daily_questions").update({...s,updated_at:new Date().toISOString()}).eq("id",e).select();return r&&M(r),o}async function je(e){const{error:s}=await p.from("daily_questions").delete().eq("id",e);if(s)throw s}async function Le(e){const{error:s}=await p.from("daily_question_submissions").update({status:"rejected"}).eq("id",e);if(s)throw s}function Qe(e,s){const o=e.trim(),r=s.trim();return`${o} ${r}؟`}function Fe(e,s){const o=e.trim();return s.find(r=>o.startsWith(r.trim()))}const Ve={class:"mb-6 p-4 border rounded-lg bg-gray-50"},Ke={class:"flex justify-between items-center mb-3"},Je=i("h3",{class:"font-bold"},"تنظیمات سوال روز",-1),We={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},Xe=i("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز پاسخ صحیح",-1),Ge=i("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز اضافه اشتراک",-1),ze=i("div",{class:"mb-1 text-sm text-gray-600"},"پاداش انتشار سوال کاربر",-1),He=i("div",{class:"mb-1 text-sm text-gray-600"},"پیشوند فرم کاربر",-1),Ye={class:"sm:col-span-2"},Ze=i("div",{class:"mb-1 text-sm text-gray-600"},"گزینههای منبع (با کاما جدا کنید)",-1),et={class:"gap-2 flex justify-center"},tt=i("span",null,"انتشار",-1),st=i("span",null,"رد",-1),it={class:"flex justify-between items-center mb-4"},nt=i("h2",null,"سوالات منتشر شده",-1),ot={class:"gap-2 flex justify-center"},at=i("span",null,"ویرایش",-1),rt=i("span",null,"حذف",-1),lt={class:"space-y-4"},ut=i("div",{class:"mb-1 text-sm text-gray-600"},"متن سوال",-1),dt={class:"text-sm text-gray-700 flex items-center flex-wrap gap-1"},_t=i("span",null,"؟",-1),ct={class:"grid grid-cols-2 gap-4"},mt=i("div",{class:"mb-1 text-sm text-gray-600"},"متن گزینه ۱",-1),pt=i("div",{class:"mb-1 text-sm text-gray-600"},"متن گزینه ۲",-1),vt={class:"grid grid-cols-2 gap-4"},ft=i("div",{class:"mb-1 text-sm text-gray-600"},"گزینه صحیح",-1),bt=i("div",{class:"mb-1 text-sm text-gray-600"},"تاریخ انتشار",-1),xt=i("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش در همان روز (اختیاری)",-1),gt=i("div",{class:"text-xs text-gray-500 mt-1"},"میتوانید چند سوال برای یک تاریخ منتشر کنید.",-1),yt={key:0},ht=i("div",{class:"mb-1 text-sm text-gray-600"},"طراح سوال",-1),zt=ke({__name:"index",setup(e){const s=G,o=G.TabPane,r=H,g=H.Option;function N(t){return t?t.replace(/-/g,"/"):""}function E(t){return t?t.replace(/\//g,"-"):""}const w=v("submissions"),y=v(!1),x=v(!1),S=v(!1),h=v(!1),O=v(null),T=v(!1),[ee,$]=V(),[te,j]=V(),_=v({base_points:10,subscription_bonus:5,submission_reward:20,template_prefix:"کدوم رو ترجیح میدی از",template_sources:[]}),R=v("");D(R,t=>{_.value.template_sources=t.split(",").map(n=>n.trim()).filter(Boolean)});const se=K(()=>_.value.template_sources.map(t=>({label:t,value:t}))),u=v({template_source:"",question_text:"",option1_text:"",option2_text:"",correct_option:1,publish_date:"",sort_order:void 0,designer_name:null,designer_user_id:null,submission_id:null}),k=v(""),q=v("");D(k,t=>{u.value.publish_date=E(t||"")}),D(q,t=>{const n=t.trim();u.value.sort_order=n===""?void 0:Number(n)});const ie=K(()=>h.value?"ویرایش سوال":T.value?"انتشار سوال کاربر":"افزودن سوال جدید"),ne={columns:Oe,api:Ae,defaultPageLimit:20},oe={columns:Re,api:Be,defaultPageLimit:20};function A(){u.value={template_source:"",question_text:"",option1_text:"",option2_text:"",correct_option:1,publish_date:"",sort_order:void 0,designer_name:null,designer_user_id:null,submission_id:null},k.value="",q.value="",h.value=!1,O.value=null,T.value=!1}function ae(){A(),y.value=!0}function re(t){A(),T.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:1,publish_date:"",designer_name:t.submitter_name,designer_user_id:t.user_id,submission_id:t.id},y.value=!0}function le(t){h.value=!0,O.value=t.id,T.value=!1,u.value={template_source:Fe(t.question_text,_.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},k.value=N(t.publish_date),q.value=t.sort_order!=null?String(t.sort_order):"",y.value=!0}function L(){y.value=!1,A()}async function ue(){if(!u.value.template_source){c.warning("لطفاً منبع سوال را انتخاب کنید");return}if(u.value.question_text=Qe(u.value.template_source,_.value.template_prefix),!u.value.option1_text.trim()||!u.value.option2_text.trim()){c.warning("هر دو گزینه را وارد کنید");return}if(!u.value.publish_date){c.warning("تاریخ انتشار را انتخاب کنید");return}x.value=!0;try{h.value&&O.value?(await $e(O.value,u.value),c.success("سوال با موفقیت ویرایش شد")):T.value?(await De(u.value),c.success("سوال کاربر با موفقیت منتشر شد"),$()):(await Me(u.value),c.success("سوال با موفقیت اضافه شد")),j(),L()}catch(t){c.error(Y(t))}finally{x.value=!1}}function de(t){z.confirm({title:"حذف سوال",content:"آیا از حذف این سوال مطمئن هستید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{await je(t.id),c.success("سوال حذف شد"),j()}catch(n){c.error((n==null?void 0:n.message)||"خطا در حذف")}}})}function _e(t){z.confirm({title:"رد سوال",content:"آیا از رد این سوال مطمئن هستید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{await Le(t.id),c.success("سوال رد شد"),$()}catch(n){c.error((n==null?void 0:n.message)||"خطا در رد سوال")}}})}async function ce(){try{const t=await Ce();_.value=t,R.value=t.template_sources.join(", ")}catch(t){c.error((t==null?void 0:t.message)||"خطا در بارگذاری تنظیمات")}}async function me(){S.value=!0;try{await Ue(_.value),c.success("تنظیمات ذخیره شد")}catch(t){c.error((t==null?void 0:t.message)||"خطا در ذخیره تنظیمات")}finally{S.value=!1}}return qe(ce),(t,n)=>{const Q=ye,b=ge,F=xe,pe=be,ve=fe;return J(),W("div",null,[l(ve,null,{default:d(()=>[i("div",Ve,[i("div",Ke,[Je,l(Q,{type:"primary",size:"small",loading:S.value,onClick:me},{default:d(()=>[C(" ذخیره تنظیمات ")]),_:1},8,["loading"])]),i("div",We,[i("div",null,[Xe,l(b,{value:_.value.base_points,"onUpdate:value":n[0]||(n[0]=a=>_.value.base_points=a),type:"number"},null,8,["value"])]),i("div",null,[Ge,l(b,{value:_.value.subscription_bonus,"onUpdate:value":n[1]||(n[1]=a=>_.value.subscription_bonus=a),type:"number"},null,8,["value"])]),i("div",null,[ze,l(b,{value:_.value.submission_reward,"onUpdate:value":n[2]||(n[2]=a=>_.value.submission_reward=a),type:"number"},null,8,["value"])]),i("div",null,[He,l(b,{value:_.value.template_prefix,"onUpdate:value":n[3]||(n[3]=a=>_.value.template_prefix=a),placeholder:"کدوم رو ترجیح میدی از"},null,8,["value"])]),i("div",Ye,[Ze,l(b,{value:R.value,"onUpdate:value":n[4]||(n[4]=a=>R.value=a),placeholder:"علی, رضا, سارا, مریم"},null,8,["value"])])])]),l(m(s),{activeKey:w.value,"onUpdate:activeKey":n[5]||(n[5]=a=>w.value=a)},{default:d(()=>[l(m(o),{key:"submissions",tab:"سوالات کاربران"},{default:d(()=>[l(F,X(ne,{onRegister:m(ee)}),{action:d(({record:a})=>[i("div",et,[l(m(U),{class:"cursor-pointer"},{title:d(()=>[tt]),default:d(()=>[l(P,{icon:"vuesax-linear:tick-circle",color:"#16A34A",onClick:B=>re(a)},null,8,["onClick"])]),_:2},1024),l(m(U),{class:"cursor-pointer"},{title:d(()=>[st]),default:d(()=>[l(P,{icon:"vuesax-linear:close-circle",color:"#DC2626",onClick:B=>_e(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),l(m(o),{key:"published",tab:"سوالات روز"},{default:d(()=>[i("div",it,[nt,l(Q,{type:"primary",onClick:ae},{default:d(()=>[C("افزودن سوال")]),_:1})]),l(F,X(oe,{onRegister:m(te)}),{action:d(({record:a})=>[i("div",ot,[l(m(U),{class:"cursor-pointer"},{title:d(()=>[at]),default:d(()=>[l(P,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:B=>le(a)},null,8,["onClick"])]),_:2},1024),l(m(U),{class:"cursor-pointer"},{title:d(()=>[rt]),default:d(()=>[l(P,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:B=>de(a)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1})]),_:1},8,["activeKey"]),l(pe,{visible:y.value,"onUpdate:visible":n[13]||(n[13]=a=>y.value=a),title:ie.value,onOk:ue,onCancel:L,width:"70%",confirmLoading:x.value},{default:d(()=>[i("div",lt,[i("div",null,[ut,i("div",dt,[l(m(r),{value:u.value.template_source,"onUpdate:value":n[6]||(n[6]=a=>u.value.template_source=a),options:se.value,placeholder:"انتخاب منبع",class:"min-w-[120px]"},null,8,["value","options"]),i("span",null,Ie(_.value.template_prefix),1),_t])]),i("div",ct,[i("div",null,[mt,l(b,{value:u.value.option1_text,"onUpdate:value":n[7]||(n[7]=a=>u.value.option1_text=a),placeholder:"گزینه ۱"},null,8,["value"])]),i("div",null,[pt,l(b,{value:u.value.option2_text,"onUpdate:value":n[8]||(n[8]=a=>u.value.option2_text=a),placeholder:"گزینه ۲"},null,8,["value"])])]),i("div",vt,[i("div",null,[ft,l(m(r),{value:u.value.correct_option,"onUpdate:value":n[9]||(n[9]=a=>u.value.correct_option=a),class:"w-full"},{default:d(()=>[l(m(g),{value:1},{default:d(()=>[C("گزینه ۱")]),_:1}),l(m(g),{value:2},{default:d(()=>[C("گزینه ۲")]),_:1})]),_:1},8,["value"])]),i("div",null,[bt,l(he,{value:k.value,"onUpdate:value":n[10]||(n[10]=a=>k.value=a)},null,8,["value"])])]),i("div",null,[xt,l(b,{value:q.value,"onUpdate:value":n[11]||(n[11]=a=>q.value=a),type:"number",placeholder:"خالی = آخر لیست"},null,8,["value"]),gt]),u.value.designer_user_id&&u.value.designer_name?(J(),W("div",yt,[ht,l(b,{value:u.value.designer_name,"onUpdate:value":n[12]||(n[12]=a=>u.value.designer_name=a),disabled:""},null,8,["value"])])):Ee("",!0)])]),_:1},8,["visible","title","confirmLoading"])]),_:1})])}}});export{zt as default};
|