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