2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
import{_ as ue}from"./button.vue_vue_type_style_index_0_lang-720928c4.js";import{d as de,U as _e,r as d,i as ve,o as a,c as r,a as e,O as c,b as P,w as D,e as T,N as k,F as M,S as $,T as K,X as he,K as X,a0 as g,bf as pe,bd as fe}from"./index-860fa59f.js";import{f as me,g as ge,s as ye,a as we}from"./competition-4b1da384.js";import{_ as ke}from"./BasicInput.vue_vue_type_style_index_0_lang-3237e636.js";import{_ as be}from"./_plugin-vue_export-helper-483988fe.js";import"./Icon-d8714ef2.js";import"./usePrice-7afab779.js";import"./index-6052676c.js";import"./vnode-1c666eb2.js";const i=F=>(pe("data-v-5e73729a"),F=F(),fe(),F),xe={class:"lottery-container"},Se={class:"lottery-header"},Ce={class:"lottery-title"},We=i(()=>e("p",{class:"lottery-subtitle"},"قرعه کشی برندگان مسابقه",-1)),Ie={class:"lottery-content"},Me={key:0,class:"loading-state"},$e=i(()=>e("div",{class:"spinner"},null,-1)),Fe=i(()=>e("p",null,"در حال بارگذاری...",-1)),Be=[$e,Fe],Ne={key:1,class:"error-state"},De=i(()=>e("span",{class:"error-icon"},"❌",-1)),Te={key:2,class:"winner-result"},He={class:"all-winners-container"},Le={class:"winner-header"},Oe=i(()=>e("span",{class:"trophy-icon-large"},"🏆",-1)),Pe=i(()=>e("h2",{class:"winner-title"},"برندگان نهایی",-1)),qe={key:0,class:"lottery-completed-message"},ze={class:"all-winners-list"},Ee={class:"final-winner-rank"},Re={class:"final-winner-info"},Ue={class:"final-winner-name"},Ve={class:"final-winner-details"},Ae={class:"final-detail-item"},Ke={class:"celebration"},Xe={key:3,class:"final-winner-result"},Ye={class:"winner-card-animated"},je=i(()=>e("div",{class:"winner-badge-large"},[e("span",{class:"trophy-icon-large"},"🏆")],-1)),Ge=i(()=>e("h2",{class:"winner-title-large"},"تبریک! برنده انتخاب شد",-1)),Je={class:"winner-info-large"},Qe={class:"winner-name-large"},Ze={class:"winner-details-large"},es={class:"detail-item-large"},ss={class:"celebration-large"},ts={key:4,class:"empty-state"},ns=i(()=>e("span",{class:"empty-icon"},"ℹ️",-1)),as=i(()=>e("p",null,"برای این مسابقه برندهای یافت نشد",-1)),ls=[ns,as],os={key:5,class:"lottery-wheel-container"},is={key:0,class:"selected-winners-section"},rs=i(()=>e("h3",{class:"selected-winners-title"},"برندگان انتخاب شده:",-1)),cs={class:"selected-winners-list"},us={class:"winner-rank-badge"},ds={class:"winner-info-item"},_s=i(()=>e("span",{class:"winner-info-icon"},"👤",-1)),vs={class:"winner-info-name"},hs={class:"winner-info-score"},ps={class:"participants-info"},fs={class:"info-card"},ms=i(()=>e("span",null,"👥",-1)),gs={key:0,class:"lottery-count-info"},ys={class:"lottery-display-wrapper"},ws={class:"lottery-display-container"},ks={class:"display-frame"},bs={class:"display-window"},xs=i(()=>e("div",{class:"lottery-shadows"},[e("div",{class:"shadow-top"}),e("div",{class:"shadow-bottom"})],-1)),Ss={class:"name-content"},Cs=i(()=>e("span",{class:"name-icon"},"👤",-1)),Ws={class:"name-text"},Is={class:"name-score"},Ms=i(()=>e("div",{class:"frame-pointer"},[e("span",null,"⬇️")],-1)),$s={class:"lottery-controls"},Fs={key:0,class:"lottery-count-input-section"},Bs={class:"count-input-wrapper"},Ns=i(()=>e("label",{class:"count-input-label"}," چند مرتبه قرعهکشی انجام شود؟ ",-1)),Ds={class:"count-input-container"},Ts={class:"count-input-hint"},Hs=i(()=>e("span",{class:"mr-2"},"🎁",-1)),Ls={key:2,class:"spinning-indicator"},Os=i(()=>e("div",{class:"spinner-large"},null,-1)),Ps=i(()=>e("p",null,"در حال قرعه کشی...",-1)),qs=[Os,Ps],zs={key:3,class:"current-winner-display"},Es={class:"current-winner-card"},Rs=i(()=>e("span",{class:"current-winner-icon"},"🏆",-1)),Us={class:"current-winner-info"},Vs={class:"current-winner-name"},As={class:"current-winner-details"},Ks=i(()=>e("span",{class:"mr-2"},"💾",-1)),Xs=de({__name:"index",setup(F){const q=_e(),y=d(null),z=d(""),v=d([]),x=d(!0),b=d(""),p=d(!1),Y=d(-1),_=d(null),C=d(!1),B=d(null),j=d(null),N=d(0),H=d([]),h=d(0),W=d(1),u=d([]),G=d(0),L=d(!1),I=d(!1),J=()=>typeof window<"u"&&window.innerWidth<=768?70:80,Q=async()=>{try{const l=(await we()).find(o=>o.id===y.value);if(l&&(j.value=l,l.winner_id)){C.value=!0,I.value=!0;const o=v.value.find(t=>!!(t.user_id&&String(t.user_id)===String(l.winner_id)||t.id&&String(t.id)===String(l.winner_id)));o?B.value=o:B.value={user_id:l.winner_id,user_name:"برنده نهایی",user_mobile:"",score:0}}}catch(s){console.error("Error loading match:",s)}},E=async()=>{if(!y.value){b.value="شناسه مسابقه یافت نشد",x.value=!1;return}try{x.value=!0,b.value="";try{const o=await me(y.value);if(o&&o.length>0){u.value=o.map(t=>({user_id:t.user_id||t.winner_id,id:t.user_id||t.winner_id,user_name:t.user_name||t.name||"نامشخص",user_mobile:t.user_mobile||t.phone||t.mobile||"نامشخص",score:t.score||t.user_score||0,rank:t.rank||0})),C.value=!0,I.value=!0,B.value=u.value[u.value.length-1],x.value=!1;return}}catch{console.log("No saved winners found, proceeding with lottery")}const s={page:1,limit:1e4,filters:[{field:"match_id",op:"eq",value:y.value,cr:"and",hidden:!1,type:"number"}]},l=await ge(s);v.value=l.rows||[],v.value.length===0?b.value="برای این مسابقه برندهای یافت نشد":(R(),await Q())}catch(s){console.error("Error loading winners:",s),b.value="خطا در بارگذاری برندگان: "+(s.message||"خطای ناشناخته")}finally{x.value=!1}},R=(s,l)=>{const o=s||v.value,t=l||(o.length>100?3:4),w=Math.max(10,t+5);H.value=[];for(let n=0;n<w;n++)H.value.push(...o);N.value=0},Z=()=>{const s=typeof W.value=="string"?parseInt(W.value,10):Number(W.value);if(!s||isNaN(s)||s<1){g.warning("لطفاً تعداد معتبری وارد کنید");return}if(s>v.value.length){g.warning(`تعداد قرعهکشی نمیتواند بیشتر از تعداد شرکتکنندگان (${v.value.length}) باشد`);return}h.value=s,u.value=[],G.value=0,L.value=!0,I.value=!1,_.value=null,p.value=!1,g.success(`تعداد ${s} قرعهکشی تنظیم شد. اکنون میتوانید قرعهکشی را شروع کنید.`)},ee=async()=>{if(v.value.length===0){g.warning("برندهای برای قرعه کشی وجود ندارد");return}if(u.value.length>=h.value){g.warning("تمام قرعهکشیها انجام شده است");return}await se()},se=async()=>{const s=v.value.filter(S=>!u.value.some(f=>f.user_id&&S.user_id&&String(f.user_id)===String(S.user_id)||f.id&&S.id&&String(f.id)===String(S.id)));if(s.length===0){g.warning("تمام شرکتکنندگان قبلاً انتخاب شدهاند"),L.value=!1;return}const l=s.length>100?3:4;R(s,l),p.value=!0,Y.value=-1,_.value=null;const o=Math.floor(Math.random()*s.length),t=s[o],w=J(),m=(window.innerWidth<=768?200:240)/2-w/2,ne=-(o*w)+m,ae=-(s.length*w*l),U=ne+ae,le=3e3,oe=Math.min(s.length*2,2e3),ie=le+oe,re=Date.now(),V=0,A=()=>{const S=Date.now()-re,f=Math.min(S/ie,1);let O=f;f<.75?O=f*(1/.75)*.85:O=.85+(f-.75)/.25*.15;const ce=1-Math.pow(1-O,3);N.value=V+(U-V)*ce,f<1?requestAnimationFrame(A):(N.value=U,_.value=t,p.value=!1,u.value.push({...t,rank:u.value.length+1}),setTimeout(()=>{_.value=null},2e3))};A()},te=async()=>{try{if(!y.value||u.value.length===0){g.error("خطا در ذخیره برندگان");return}const s=u.value.map((l,o)=>({match_id:y.value,user_id:l.user_id||l.id,rank:o+1}));await ye(s),g.success(`تمام ${u.value.length} برنده با موفقیت ذخیره شدند`),C.value=!0,I.value=!1,B.value=u.value[u.value.length-1],L.value=!1}catch(s){console.error("Error saving winners:",s),g.error("خطا در ذخیره برندگان: "+(s.message||"خطای ناشناخته"))}};return ve(()=>{const s=q.query.matchId,l=q.query.title;s&&(y.value=Number(s)),l&&(z.value=decodeURIComponent(String(l))),y.value?E():(b.value="شناسه مسابقه یافت نشد",x.value=!1)}),(s,l)=>{var t,w;const o=ue;return a(),r("div",xe,[e("div",Se,[e("h1",Ce,c(z.value),1),We]),e("div",Ie,[x.value?(a(),r("div",Me,Be)):b.value?(a(),r("div",Ne,[De,e("p",null,c(b.value),1),P(o,{onClick:E},{default:D(()=>[T("تلاش مجدد")]),_:1})])):C.value?(a(),r("div",Te,[e("div",He,[e("div",Le,[Oe,Pe,I.value?(a(),r("p",qe,"✅ قرعهکشی این مسابقه قبلاً انجام شده است")):k("",!0)]),e("div",ze,[(a(!0),r(M,null,$(u.value,(n,m)=>(a(),r("div",{key:`final-winner-${n.user_id||n.id}-${m}`,class:"final-winner-card"},[e("div",Ee,"نفر "+c(m+1),1),e("div",Re,[e("div",Ue,c(n.user_name),1),e("div",Ve,[e("span",Ae," 🏅 امتیاز: "+c(n.score),1)])])]))),128))]),e("div",Ke,[(a(),r(M,null,$(20,n=>e("div",{class:"confetti",key:n})),64))])])])):_.value?(a(),r("div",Xe,[e("div",Ye,[je,Ge,e("div",Je,[e("div",Qe,c(_.value.user_name),1),e("div",Ze,[e("span",es," 🏅 امتیاز: "+c(_.value.score),1)])]),e("div",ss,[(a(),r(M,null,$(20,n=>e("div",{class:"confetti-large",key:n})),64))])])])):v.value.length===0?(a(),r("div",ts,ls)):(a(),r("div",os,[u.value.length>0?(a(),r("div",is,[rs,e("div",cs,[(a(!0),r(M,null,$(u.value,(n,m)=>(a(),r("div",{key:`selected-${n.user_id||n.id}-${m}`,class:"selected-winner-item"},[e("div",us,"نفر "+c(m+1),1),e("div",ds,[_s,e("span",vs,c(n.user_name),1),e("span",hs,c(n.score)+" امتیاز",1)])]))),128))])])):k("",!0),e("div",ps,[e("div",fs,[ms,e("span",null,"تعداد شرکتکنندگان: "+c(v.value.length)+" نفر",1),h.value>0?(a(),r("span",gs," | تعداد قرعهکشی: "+c(h.value)+" | انجام شده: "+c(u.value.length)+" / "+c(h.value),1)):k("",!0)])]),e("div",ys,[e("div",ws,[e("div",ks,[e("div",bs,[xs,e("div",{class:K(["name-list",{spinning:p.value}]),style:he({transform:`translateY(${N.value}px)`})},[(a(!0),r(M,null,$(H.value,(n,m)=>(a(),r("div",{key:`${n.id}-${m}`,class:K(["name-item",{highlight:!p.value&&_.value&&(_.value.id===n.id||_.value.user_id===n.user_id)}])},[e("div",Ss,[Cs,e("span",Ws,c(n.user_name),1),e("span",Is,c(n.score)+" امتیاز",1)])],2))),128))],6)]),Ms])])]),e("div",$s,[!p.value&&!_.value&&h.value===0&&!C.value?(a(),r("div",Fs,[e("div",Bs,[Ns,e("div",Ds,[P(ke,{value:W.value,"onUpdate:value":l[0]||(l[0]=n=>W.value=n),type:"number",placeHolder:`حداکثر ${((t=v.value)==null?void 0:t.length)||0} نفر`,class:"count-input"},null,8,["value","placeHolder"]),P(o,{onClick:Z,style:{backgroundColor:"#FF6B35",borderColor:"#FF6B35",color:"#fff",fontSize:"16px",padding:"8px 24px",height:"auto"},class:"count-submit-btn",type:"primary"},{default:D(()=>[T(" ثبت ")]),_:1})]),e("p",Ts," تعداد شرکتکنندگان: "+c(((w=v.value)==null?void 0:w.length)||0)+" نفر ",1)])])):k("",!0),!p.value&&!_.value&&h.value>0&&u.value.length<h.value?(a(),X(o,{key:1,onClick:ee,style:{backgroundColor:"#FF6B35",borderColor:"#FF6B35",color:"#fff",fontSize:"18px",padding:"12px 32px",height:"auto"},class:"lottery-start-btn"},{default:D(()=>[Hs,T(" شروع قرعه کشی ("+c(u.value.length+1)+"/"+c(h.value)+") ",1)]),_:1})):k("",!0),p.value?(a(),r("div",Ls,qs)):k("",!0),_.value&&!p.value?(a(),r("div",zs,[e("div",Es,[Rs,e("div",Us,[e("p",Vs,c(_.value.user_name),1),e("p",As," امتیاز: "+c(_.value.score),1)])])])):k("",!0),!p.value&&!_.value&&h.value>0&&u.value.length===h.value?(a(),X(o,{key:4,onClick:te,style:{backgroundColor:"#217346",borderColor:"#217346",color:"#fff",fontSize:"18px",padding:"12px 32px",height:"auto"},class:"lottery-save-btn"},{default:D(()=>[Ks,T(" ذخیره تمام برندگان ")]),_:1})):k("",!0)])]))])])}}});const at=be(Xs,[["__scopeId","data-v-5e73729a"]]);export{at as default};
|