Files
machartaa_admin_dist/dist/assets/competition-b9c6b933.js
T

2 lines
6.7 KiB
JavaScript

import{_ as A,I as h}from"./index-82b07f49.js";async function k(){const{data:e,error:r}=await h.from("matchs").select("*");if(r)throw r;return e}async function z(e,r){const{data:n,error:s}=await h.from("matchs").update(r).eq("id",e).select();if(s)throw s;return n}async function R(e){const{data:r,error:n}=await h.from("matchs").select("*").eq("id",e).single();if(n)throw n;const{data:s,error:o}=await h.from("questions").select("*").eq("match_id",e);if(o)throw o;return{...r,questions:s||[]}}async function P(e){console.log("addMatchWithQuestions payload:",e);const{data:r,error:n}=await h.from("matchs").insert([e.match]).select().single();if(console.log("Match insert result:",{matchData:r,matchError:n}),n)throw console.error("Match insert error:",n),n;for(const s of e.questions){const{data:o,error:f}=await h.from("questions").insert([{match_id:r.id,question:s.question,options:s.options,correct_answer:s.correct_answer}]).select().single();if(f)throw f;console.log("Question created:",o)}return r}async function V(e,r){const{error:n}=await h.from("matchs").update(r.match).eq("id",e);if(n)throw n;const{data:s}=await h.from("questions").select("id").eq("match_id",e);if(s)for(const o of s)await h.from("questions").delete().eq("id",o.id);for(const o of r.questions){const{data:f,error:g}=await h.from("questions").insert([{match_id:e,question:o.question,options:o.options,correct_answer:o.correct_answer}]).select().single();if(g)throw g;console.log("Question updated:",f)}return{id:e}}async function $(e){await h.from("questions").delete().eq("match_id",e);const{error:r}=await h.from("matchs").delete().eq("id",e);if(r)throw r}async function O(e){const{TableEngineRequest:r}=await A(()=>import("./buildSupabaseQuery-4056c4b8.js"),["assets/buildSupabaseQuery-4056c4b8.js","assets/index-82b07f49.js","assets/index-f86b861c.css"]),n={...e};!n.sort&&!n.order&&(n.order="-id");const s=await r(n,"matchs");try{if(Array.isArray(s==null?void 0:s.rows)){const o=n.page||1,f=n.limit||200,g=(o-1)*f,q=s.rows.map((_,p)=>({id:_.id,title:_.title??"",description:_.description??"",created_at:_.created_at??"",index:g+p,..._}));return{...s,rows:q}}}catch(o){console.log("[getMatchTable] normalize error:",o)}return s}async function j(e){var r,n,s,o,f;try{const{limit:g,filters:q,page:_,sort:p,order:l,search:m}=e;let i=h.from("answers").select("*, matchs!match_id(id, title, description, minimum_score), users!user_id(id, first_name, last_name, phone, name, email, username)",{count:"exact"});q&&Array.isArray(q)&&q.forEach(t=>{const{field:a,op:c,value:d,hidden:u}=t;u||(a==="match_id"&&c==="eq"?i=i.eq("match_id",d):a==="match_id"&&c==="in"&&(i=i.in("match_id",Array.isArray(d)?d:[d])))});const{data:M,error:w,count:L}=await i;if(w)throw console.error("[getWinnersTable] Supabase query error:",w),w;if(!M||M.length===0)return{rows:[],total:0,query:{...e,total:0}};let y=M.map(t=>{const c=(Array.isArray(t.matchs)?t.matchs[0]:t.matchs)||{},u=(Array.isArray(t.users)?t.users[0]:t.users)||{},S=c.minimum_score?Number(c.minimum_score):0,T=t.score?Number(t.score):0;let b="نامشخص";return u&&Object.keys(u).length>0&&(u.name?b=u.name:u.first_name||u.last_name?b=`${u.first_name||""} ${u.last_name||""}`.trim():u.phone?b=u.phone:u.email?b=u.email:u.username&&(b=u.username)),{id:t.id,match_id:t.match_id,user_id:t.user_id,score:t.score,match_title:c.title||"",match_description:c.description||"",match_minimum_score:c.minimum_score||null,user_name:b,user_mobile:(u==null?void 0:u.phone)||"",created_at:t.created_at||"",_match:c,_user:u,_userScore:T,_minimumScore:S}}).filter(t=>t._userScore>=t._minimumScore).map(t=>{const{_match:a,_user:c,_userScore:d,_minimumScore:u,...S}=t;return S});if(e.search){const t=e.search.toLowerCase();y=y.filter(a=>(a.match_title||"").toLowerCase().includes(t)||(a.match_description||"").toLowerCase().includes(t)||(a.user_name||"").toLowerCase().includes(t)||(a.user_mobile||"").toLowerCase().includes(t)||String(a.score||"").includes(t))}e.filters&&e.filters.length>0&&(y=y.filter(t=>e.filters.every(a=>{if(!a.field||a.hidden)return!0;const c=t[a.field],d=a.value;if(d==null||d==="")return!0;switch(a.op){case"eq":return String(c)===String(d);case"neq":return String(c)!==String(d);case"gt":return Number(c)>Number(d);case"gte":return Number(c)>=Number(d);case"lt":return Number(c)<Number(d);case"lte":return Number(c)<=Number(d);case"has":case"like":return String(c||"").toLowerCase().includes(String(d).toLowerCase());case"sw":return String(c||"").toLowerCase().startsWith(String(d).toLowerCase());case"ew":return String(c||"").toLowerCase().endsWith(String(d).toLowerCase());default:return!0}})));let W=[...y];if(e.sort||e.order){const t=((r=e.sort)==null?void 0:r.key)||((n=e.order)!=null&&n.startsWith("-")||(s=e.order)!=null&&s.startsWith("+")?e.order.slice(1):e.order)||"created_at",a=((o=e.sort)==null?void 0:o.order)==="asc"||((f=e.order)==null?void 0:f.startsWith("+"));W.sort((c,d)=>{const u=c[t],S=d[t];return u<S?a?-1:1:u>S?a?1:-1:0})}else W.sort((t,a)=>{const c=t.created_at?new Date(t.created_at).getTime():0;return(a.created_at?new Date(a.created_at).getTime():0)-c});const D=e.page||1,C=e.limit||20,E=(D-1)*C,N=E+C;return{rows:W.slice(E,N).map((t,a)=>({...t,index:E+a})),total:y.length,query:{...e,total:y.length}}}catch(g){throw g}}async function B(e){const r=e.map(o=>{const f={match_id:o.match_id,rank:o.rank};return o.user_id!==void 0?f.user_id=o.user_id:o.winner_id!==void 0&&(f.user_id=o.winner_id),f}),{data:n,error:s}=await h.from("winners_match").insert(r).select();if(s)throw s;return n}async function I(e){const{data:r,error:n}=await h.from("winners_match").select("*").eq("match_id",e).order("rank",{ascending:!0});if(n)throw n;if(!r||r.length===0)return[];const s=[...new Set(r.map(l=>l.user_id||l.winner_id).filter(Boolean))];if(s.length===0)return[];const[o,f]=await Promise.all([h.from("users").select("*").in("id",s),h.from("answers").select("user_id, score").eq("match_id",e).in("user_id",s)]),g=o.data||[],q=f.data||[],_=new Map;g.forEach(l=>{const m=l.id;if(_.set(m,l),_.set(String(m),l),typeof m=="string"){const i=m.toLowerCase().replace(/-/g,"");_.set(i,l),m.includes("-")&&(_.set(m.replace(/-/g,""),l),_.set(m.replace(/-/g,"").toLowerCase(),l))}});const p=new Map;return q.forEach(l=>{const m=l.user_id;p.set(m,l.score||0),p.set(String(m),l.score||0)}),r.map(l=>{const m=l.user_id||l.winner_id,i=_.get(m)||_.get(String(m))||g.find(L=>String(L.id)===String(m))||{},M=p.get(m)||p.get(String(m))||0;let w="نامشخص";return i&&Object.keys(i).length>0&&(i.name?w=i.name:i.first_name||i.last_name?w=`${i.first_name||""} ${i.last_name||""}`.trim():i.phone?w=i.phone:i.email?w=i.email:i.username&&(w=i.username)),{...l,user_name:w,user_mobile:(i==null?void 0:i.phone)||"",user_email:(i==null?void 0:i.email)||"",score:Number(M)||0}})}export{k as a,O as b,P as c,R as d,z as e,$ as f,j as g,I as h,B as s,V as u};