2 lines
19 KiB
JavaScript
2 lines
19 KiB
JavaScript
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};
|