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