Files
machartaa_admin_dist/dist/assets/competition-ed3a0e58.js
T
2025-12-30 19:54:17 +03:30

2 lines
6.5 KiB
JavaScript

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