Files
machartaa_admin_dist/dist/assets/competition-4b1da384.js
T
2025-12-08 19:11:04 +03:30

2 lines
6.6 KiB
JavaScript

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