2 lines
19 KiB
JavaScript
2 lines
19 KiB
JavaScript
import{_ as xe}from"./BasicMainCard-8da61c91.js";import{_ as ge}from"./BasicModal.vue_vue_type_style_index_0_lang-dce46cd2.js";import{_ as he}from"./BasicInput.vue_vue_type_style_index_0_lang-3cdf1cab.js";import{_ as ye}from"./button.vue_vue_type_style_index_0_lang-ae7cb173.js";import{u as V,_ as Se}from"./useBaseTable-a305524f.js";import{I as U}from"./Icon-2a751d73.js";import{_ as we}from"./InputDatePicker.vue_vue_type_script_setup_true_lang-0cfea1c0.js";import{t as Te,a as qe}from"./useDataTime-0e280561.js";import{G as v,_ as Ie,d as ke,g as x,E as N,Q as Ee,h as J,v as Oe,o as K,c as W,b as l,w as d,j as b,H as z,a as s,e as C,t as Re,k as Pe,D as f}from"./index-64bb19a3.js";import{fetchMatchingUserIds as G,applyEmbeddedUserSearch as Ue,applySupabaseFilter as Ne,applySupabaseSort as Ce,applySupabasePagination as Ae,formatTableResult as Be}from"./supabaseTableQuery-8ab5665d.js";import{T as X}from"./index-fe1cc383.js";import{M as H}from"./index-557a2985.js";import{a as Y}from"./index-ff7b0bbe.js";import{T as A}from"./isSymbol-77db9868.js";import"./Grid-d205a4b4.js";import"./index-53278d29.js";import"./Col-4cc66d2b.js";import"./styleChecker-44a60ba7.js";import"./isPlainObject-908a4d4b.js";import"./vnode-a1a3bc0f.js";import"./_plugin-vue_export-helper-47756888.js";import"./index-d19de556.js";import"./usePrice-bc935b83.js";import"./index-6f7ee4ee.js";import"./SearchOutlined-5a638563.js";import"./omit-41b1cee4.js";import"./FormItemContext-78515ae9.js";import"./index-7a73a23b.js";import"./index-b5f90115.js";import"./updateLocale-34973999.js";import"./index-bc659f42.js";import"./shallowequal-a3fa20ee.js";import"./useState-45a66864.js";import"./useMemo-fddb4a7a.js";import"./lodash-17ce3880.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-6148f843.js";import"./index-304c1b28.js";import"./Badge-6baddd17.js";import"./isNumeric-3f69e2aa.js";import"./index-2a5be533.js";import"./index-a5e6bc16.js";import"./index-4ee722bc.js";import"./index-95a0af99.js";import"./DialogWrap-c12b3672.js";import"./pickAttrs-ff8c51c6.js";import"./css-aae66f86.js";import"./toArray-156bc105.js";import"./index-d5b53aee.js";import"./useRefs-10844536.js";import"./_flatRest-6bd9fe69.js";import"./isMobile-e2e89480.js";const De=[{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=>Te(e.record.created_at)},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center",width:120}],Fe=[{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=>qe(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 Z(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 $(e){throw new Error(Z(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 Me(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 $e(){const{data:e,error:i}=await v.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:Me(o[g.TEMPLATE_SOURCES])}}async function O(e,i){const{data:o}=await v.from("configs").select("id").eq("key",e).maybeSingle();if(o!=null&&o.id){const{error:a}=await v.from("configs").update({value:i}).eq("key",e);if(a)throw a}else{const{error:a}=await v.from("configs").insert([{key:e,value:i}]);if(a)throw a}}async function Le(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 Qe(e){if(!e)return"نامشخص";if(e.name)return e.name;const i=`${e.first_name||""} ${e.last_name||""}`.trim();return i||e.phone||"نامشخص"}const je=new Set(["template_source","question_text","option1_text","option2_text","status","created_at"]),Ve=["question_text","template_source","option1_text","option2_text"];async function Je(e){const i=ee(e),{limit:o=20,page:a=1,search:_,filters:w}=i;let m=v.from("daily_question_submissions").select("*, users(name, first_name, last_name, phone)",{count:"exact"}).eq("status","pending");if(_!=null&&_.trim()){const c=await G(v,_);m=Ue(m,_,Ve,c)}if(w!=null&&w.length){for(const c of w)if(!(c.hidden||!c.field)){if(c.field==="submitter_name"){if(["eq","has","like"].includes(c.op)){const y=await G(v,String(c.value));y.length?m=m.in("user_id",y):m=m.eq("user_id","00000000-0000-0000-0000-000000000000")}continue}je.has(c.field)&&(m=Ne(m,c))}}m=Ce(m,i,"-created_at",["created_at","template_source","question_text","status"]),m=Ae(m,a,o);const{data:T,error:h,count:q}=await m;if(h)throw h;return Be(T,q,i,c=>{const y=Array.isArray(c.users)?c.users[0]:c.users;return{...c,submitter_name:Qe(y)}})}function ee(e){var a;if(!((a=e.filters)!=null&&a.length))return e;const i=new Set(["publish_date","created_at"]),o=e.filters.map(_=>{if(!i.has(_.field)||_.value==null||_.value==="")return _;const w=typeof _.value=="string"?_.value.replace(/\//g,"-").split("T")[0]:_.value;return{..._,value:w}});return{...e,filters:o}}async function Ke(e){const{TableEngineRequest:i}=await Ie(()=>import("./buildSupabaseQuery-07f01798.js"),["assets/buildSupabaseQuery-07f01798.js","assets/index-64bb19a3.js","assets/index-e1ac04b7.css","assets/supabaseTableQuery-8ab5665d.js"]),o=ee({...e});return!o.sort&&!o.order&&(o.order="-publish_date"),i(o,"daily_questions")}async function te(e){var _;const{data:i,error:o}=await v.from("daily_questions").select("sort_order").eq("publish_date",e).order("sort_order",{ascending:!1}).limit(1);if(o)throw o;return(((_=i==null?void 0:i[0])==null?void 0:_.sort_order)??-1)+1}async function We(e){const i=e.sort_order??await te(e.publish_date),{data:o,error:a}=await v.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&&$(a),e.submission_id&&e.designer_user_id&&(await v.from("daily_question_submissions").update({status:"published"}).eq("id",e.submission_id),await v.rpc("dq_award_submission_reward",{p_user_id:e.designer_user_id})),o}async function ze(e){const i=e.sort_order??await te(e.publish_date),{data:o,error:a}=await v.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&&$(a),o}async function Ge(e,i){const{data:o,error:a}=await v.from("daily_questions").update({...i,updated_at:new Date().toISOString()}).eq("id",e).select();return a&&$(a),o}async function Xe(e){const{error:i}=await v.from("daily_questions").delete().eq("id",e);if(i)throw i}async function He(e){const{error:i}=await v.from("daily_question_submissions").update({status:"rejected"}).eq("id",e);if(i)throw i}function Ye(e,i){const o=e.trim(),a=i.trim();return`${o} ${a}؟`}function Ze(e,i){const o=e.trim();return i.find(a=>o.startsWith(a.trim()))}const et={class:"gap-2 flex justify-center"},tt=s("span",null,"انتشار",-1),it=s("span",null,"رد",-1),st={class:"flex justify-between items-center mb-4"},nt=s("h2",null,"سوالات منتشر شده",-1),ot={class:"gap-2 flex justify-center"},at=s("span",null,"ویرایش",-1),rt=s("span",null,"حذف",-1),lt={class:"p-4 border rounded-lg bg-gray-50"},ut={class:"flex justify-between items-center mb-3"},dt=s("h3",{class:"font-bold"},"تنظیمات سوال روز",-1),_t={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},ct=s("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز پاسخ صحیح",-1),mt=s("div",{class:"mb-1 text-sm text-gray-600"},"امتیاز اضافه اشتراک",-1),pt=s("div",{class:"mb-1 text-sm text-gray-600"},"پاداش انتشار سوال کاربر",-1),ft=s("div",{class:"mb-1 text-sm text-gray-600"},"پیشوند فرم کاربر",-1),vt={class:"sm:col-span-2"},bt=s("div",{class:"mb-1 text-sm text-gray-600"},"گزینههای منبع (با کاما جدا کنید)",-1),xt={class:"space-y-4"},gt=s("div",{class:"mb-1 text-sm text-gray-600"},"متن سوال",-1),ht={class:"text-sm text-gray-700 flex items-center flex-wrap gap-1"},yt=s("span",null,"؟",-1),St={class:"grid grid-cols-2 gap-4"},wt=s("div",{class:"mb-1 text-sm text-gray-600"},"متن گزینه ۱",-1),Tt=s("div",{class:"mb-1 text-sm text-gray-600"},"متن گزینه ۲",-1),qt={class:"grid grid-cols-2 gap-4"},It=s("div",{class:"mb-1 text-sm text-gray-600"},"گزینه صحیح",-1),kt=s("div",{class:"mb-1 text-sm text-gray-600"},"تاریخ انتشار",-1),Et=s("div",{class:"mb-1 text-sm text-gray-600"},"ترتیب نمایش در همان روز (اختیاری)",-1),Ot=s("div",{class:"text-xs text-gray-500 mt-1"},"میتوانید چند سوال برای یک تاریخ منتشر کنید.",-1),Rt={key:0},Pt=s("div",{class:"mb-1 text-sm text-gray-600"},"طراح سوال",-1),Oi=ke({__name:"index",setup(e){const i=X,o=X.TabPane,a=Y,_=Y.Option;function w(t){return t?t.replace(/-/g,"/"):""}function m(t){return t?t.replace(/\//g,"-"):""}const T=x("submissions"),h=x(!1),q=x(!1),c=x(!1),y=x(!1),R=x(null),I=x(!1),[ie,B]=V(),[se,D]=V();N(T,async t=>{await Ee(),t==="submissions"?B():t==="published"&&D()});const p=x({base_points:10,subscription_bonus:5,submission_reward:20,template_prefix:"کدوم رو ترجیح میدی از",template_sources:[]}),P=x("");N(P,t=>{p.value.template_sources=t.split(",").map(n=>n.trim()).filter(Boolean)});const ne=J(()=>p.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}),k=x(""),E=x("");N(k,t=>{u.value.publish_date=m(t||"")}),N(E,t=>{const n=t.trim();u.value.sort_order=n===""?void 0:Number(n)});const oe=J(()=>y.value?"ویرایش سوال":I.value?"انتشار سوال کاربر":"افزودن سوال جدید"),ae={columns:De,api:Je,defaultPageLimit:20},re={columns:Fe,api:Ke,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},k.value="",E.value="",y.value=!1,R.value=null,I.value=!1}function le(){F(),h.value=!0}function ue(t){F(),I.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 de(t){y.value=!0,R.value=t.id,I.value=!1,u.value={template_source:Ze(t.question_text,p.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=w(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){f.warning("لطفاً منبع سوال را انتخاب کنید");return}if(u.value.question_text=Ye(u.value.template_source,p.value.template_prefix),!u.value.option1_text.trim()||!u.value.option2_text.trim()){f.warning("هر دو گزینه را وارد کنید");return}if(!u.value.correct_option){f.warning("لطفاً گزینه صحیح را انتخاب کنید");return}if(!u.value.publish_date){f.warning("تاریخ انتشار را انتخاب کنید");return}q.value=!0;try{y.value&&R.value?(await Ge(R.value,u.value),f.success("سوال با موفقیت ویرایش شد")):I.value?(await We(u.value),f.success("سوال کاربر با موفقیت منتشر شد"),B()):(await ze(u.value),f.success("سوال با موفقیت اضافه شد")),D(),L()}catch(t){f.error(Z(t))}finally{q.value=!1}}function ce(t){H.confirm({title:"حذف سوال",content:"آیا از حذف این سوال مطمئن هستید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{await Xe(t.id),f.success("سوال حذف شد"),D()}catch(n){f.error((n==null?void 0:n.message)||"خطا در حذف")}}})}function me(t){H.confirm({title:"رد سوال",content:"آیا از رد این سوال مطمئن هستید؟",okText:"بله",cancelText:"خیر",onOk:async()=>{try{await He(t.id),f.success("سوال رد شد"),B()}catch(n){f.error((n==null?void 0:n.message)||"خطا در رد سوال")}}})}async function pe(){try{const t=await $e();p.value=t,P.value=t.template_sources.join(", ")}catch(t){f.error((t==null?void 0:t.message)||"خطا در بارگذاری تنظیمات")}}async function fe(){c.value=!0;try{await Le(p.value),f.success("تنظیمات ذخیره شد")}catch(t){f.error((t==null?void 0:t.message)||"خطا در ذخیره تنظیمات")}finally{c.value=!1}}return Oe(pe),(t,n)=>{const Q=Se,j=ye,S=he,ve=ge,be=xe;return K(),W("div",null,[l(be,null,{default:d(()=>[l(b(i),{activeKey:T.value,"onUpdate:activeKey":n[5]||(n[5]=r=>T.value=r)},{default:d(()=>[l(b(o),{key:"submissions",tab:"سوالات کاربران"},{default:d(()=>[l(Q,z(ae,{onRegister:b(ie)}),{action:d(({record:r})=>[s("div",et,[l(b(A),{class:"cursor-pointer"},{title:d(()=>[tt]),default:d(()=>[l(U,{icon:"vuesax-linear:tick-circle",color:"#16A34A",onClick:M=>ue(r)},null,8,["onClick"])]),_:2},1024),l(b(A),{class:"cursor-pointer"},{title:d(()=>[it]),default:d(()=>[l(U,{icon:"vuesax-linear:close-circle",color:"#DC2626",onClick:M=>me(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),l(b(o),{key:"published",tab:"سوالات روز"},{default:d(()=>[s("div",st,[nt,l(j,{type:"primary",onClick:le},{default:d(()=>[C("افزودن سوال")]),_:1})]),l(Q,z(re,{onRegister:b(se)}),{action:d(({record:r})=>[s("div",ot,[l(b(A),{class:"cursor-pointer"},{title:d(()=>[at]),default:d(()=>[l(U,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:M=>de(r)},null,8,["onClick"])]),_:2},1024),l(b(A),{class:"cursor-pointer"},{title:d(()=>[rt]),default:d(()=>[l(U,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:M=>ce(r)},null,8,["onClick"])]),_:2},1024)])]),_:1},16,["onRegister"])]),_:1}),l(b(o),{key:"settings",tab:"تنظیمات"},{default:d(()=>[s("div",lt,[s("div",ut,[dt,l(j,{type:"primary",size:"small",loading:c.value,onClick:fe},{default:d(()=>[C(" ذخیره تنظیمات ")]),_:1},8,["loading"])]),s("div",_t,[s("div",null,[ct,l(S,{value:p.value.base_points,"onUpdate:value":n[0]||(n[0]=r=>p.value.base_points=r),type:"number"},null,8,["value"])]),s("div",null,[mt,l(S,{value:p.value.subscription_bonus,"onUpdate:value":n[1]||(n[1]=r=>p.value.subscription_bonus=r),type:"number"},null,8,["value"])]),s("div",null,[pt,l(S,{value:p.value.submission_reward,"onUpdate:value":n[2]||(n[2]=r=>p.value.submission_reward=r),type:"number"},null,8,["value"])]),s("div",null,[ft,l(S,{value:p.value.template_prefix,"onUpdate:value":n[3]||(n[3]=r=>p.value.template_prefix=r),placeholder:"کدوم رو ترجیح میدی از"},null,8,["value"])]),s("div",vt,[bt,l(S,{value:P.value,"onUpdate:value":n[4]||(n[4]=r=>P.value=r),placeholder:"علی, رضا, سارا, مریم"},null,8,["value"])])])])]),_:1})]),_:1},8,["activeKey"]),l(ve,{visible:h.value,"onUpdate:visible":n[13]||(n[13]=r=>h.value=r),title:oe.value,onOk:_e,onCancel:L,width:"70%",confirmLoading:q.value},{default:d(()=>[s("div",xt,[s("div",null,[gt,s("div",ht,[l(b(a),{value:u.value.template_source,"onUpdate:value":n[6]||(n[6]=r=>u.value.template_source=r),options:ne.value,placeholder:"انتخاب منبع",class:"min-w-[120px]"},null,8,["value","options"]),s("span",null,Re(p.value.template_prefix),1),yt])]),s("div",St,[s("div",null,[wt,l(S,{value:u.value.option1_text,"onUpdate:value":n[7]||(n[7]=r=>u.value.option1_text=r),placeholder:"گزینه ۱"},null,8,["value"])]),s("div",null,[Tt,l(S,{value:u.value.option2_text,"onUpdate:value":n[8]||(n[8]=r=>u.value.option2_text=r),placeholder:"گزینه ۲"},null,8,["value"])])]),s("div",qt,[s("div",null,[It,l(b(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(b(_),{value:1},{default:d(()=>[C("گزینه ۱")]),_:1}),l(b(_),{value:2},{default:d(()=>[C("گزینه ۲")]),_:1})]),_:1},8,["value"])]),s("div",null,[kt,l(we,{value:k.value,"onUpdate:value":n[10]||(n[10]=r=>k.value=r)},null,8,["value"])])]),s("div",null,[Et,l(S,{value:E.value,"onUpdate:value":n[11]||(n[11]=r=>E.value=r),type:"number",placeholder:"خالی = آخر لیست"},null,8,["value"]),Ot]),u.value.designer_user_id&&u.value.designer_name?(K(),W("div",Rt,[Pt,l(S,{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{Oi as default};
|