1import{o as De}from"./rolldown-runtime-CfSZB2vO.js";import{$ as u,A as i,C as M,D as g,E as I,I as r,Mt as o,N as te,R as ae,T as K,Tt as we,Vt as l,Yt as Se,_ as P,ht as Ce,j as s,pn as c,vt as n,w as d}from"./vue.runtime.esm-bundler-CjpbemCW.js";import{n as j,r as O,t as xe}from"./jwt-C1g7L4pz.js";import{a as Le,i as Fe,l as Te,n as Ie,o as he,r as Ee,s as Re}from"./alert-dialog-Cdj4_OVd.js";import{t as J}from"./checkbox-177N1aTb.js";import{B as Ue,M as Ve}from"./index.js";import{n as C}from"./button-9LpO_wNB.js";import{t as N}from"./iconify-CNQyYGOy.js";import{t as $e}from"./input-Cr50i-3q.js";import{n as X,r as Z,t as ee}from"./alert-VqrAprss.js";import{t as Me}from"./events-api-D9KdtgS5.js";import{a as Ne,i as Ae,n as We,r as Be}from"./lib-GHJfo31F.js";import{t as Pe}from"./edit-events-B5CL1eTv.js";import{n as je,r as Oe,t as h}from"./SortableHeader-CiV6oFcu.js";import{t as Ke}from"./AdminSignUpUserPopover-DDzAijnT.js";import{t as ze}from"./SendMessageToMultipleUsersModal-BPVY_ZiI.js";import{t as He}from"./vuedraggable.umd-jY8LoVXt.js";ae();we(),Se();var qe=De(He()),Qe={key:0},Ye={key:1},Ge={class:"mt-2"},Je={key:2,class:"mb-6 flex flex-wrap items-center gap-2"},Xe={key:3},Ze={class:"bg-card flex items-center gap-3 rounded-md border p-3"},et={class:"handle text-muted-foreground cursor-grab",title:"Dra for Ã¥ flytte"},tt={class:"w-10 shrink-0 font-medium"},at={class:"min-w-0 flex-1 truncate"},lt={class:"text-muted-foreground hidden max-w-[12rem] truncate text-sm sm:block"},st={key:0,class:"text-destructive mb-2 text-sm"},nt={class:"flex items-center gap-2"},rt={class:"mb-4 flex items-center"},it={key:0,class:"text-destructive text-sm"},ot=te({__name:"EditEventWaitingList",emits:["reloadParticipantCountTrigger","loaded"],setup(le,{emit:A}){const E=A,{getSavedData:z}=Pe(),{t:f,locale:W}=Ue(),se=Ve(),m=Number.parseInt(se.params.eventId),ne=new Me(xe,O,j),v=o([]),D=o(),x=o([]),R=o(!1),L=o(!0),{search:U,sortBy:H,sortDir:re,setSorting:q}=Oe();async function Q(){L.value=!0;const e=await ne.listUsersInWaitingList(m);D.value=z(m),x.value=e.data,L.value=!1,E("loaded")}Q();async function V(){await Q(),E("reloadParticipantCountTrigger")}const w=o(null),F=o(!1),k=o("");function ie(e){k.value="",w.value=e}async function oe(){const e=w.value;if(!e||F.value)return;const t=e.entEventUserDatabaseID??0;if(t<1){k.value="Fant ikke ventelisteraden.";return}F.value=!0,k.value="";try{const a=await j.post(`${O}/api/Events/RemoveUserFromWaitingList?eventId=${m}&id=${t}`);if(a.status!==200){k.value=`Kunne ikke slette fra ventelisten (status ${a.status}).`,console.error("RemoveUserFromWaitingList svarte",a.status,{eventId:m,waitingListId:t});return}w.value=null,await V()}catch(a){const y=a?.response?.status;k.value=y?`Kunne ikke slette fra ventelisten (status ${y}).`:"Kunne ikke slette fra ventelisten.",console.error("RemoveUserFromWaitingList feilet",y??a,{eventId:m,waitingListId:t})}finally{F.value=!1}}function ue(){v.value.length>0&&(R.value=!0)}function de(e){v.value=e===!0?x.value.map(t=>t.userID??0):[]}function ve(e,t){e===!0&&t.userID?v.value.push(t.userID):v.value.splice(v.value.indexOf(t.userID??-1),1)}function ge(e){const t=(e.ticketTitle??"").trim();return t||(D.value?.ticketTypes?.find(a=>a.ticketTypeId===e.ticketId)?.ticketTypeTitle??"").trim()}function fe(e){const t=D.value?.ticketTypes?.find(y=>y.ticketTypeId===e.ticketId),a=(t?.price??0)>0;return t?(t.soldTickets??0)>=(t.countTickets??0)?{label:"Utsolgt â venter pÃ¥ plass",blocked:!0,paid:a}:{label:"Ledig plass â slippes inn automatisk",blocked:!1,paid:a}:{label:"Venter pÃ¥ plass",blocked:!0,paid:a}}const b=M(()=>x.value.map((e,t)=>({...e,position:t+1,fullName:(e.attendeeName??"").trim(),sortDate:new Date(e.entEventUserDateTime??new Date(0)).valueOf(),ticketLabel:ge(e),status:fe(e)}
1))),pe=M(()=>b.value.some(e=>e.status.blocked)),Y=M(()=>b.value.some(e=>e.status.paid)),ce=qe.default,S=o(!1),_=o([]),T=o(!1),p=o(""),G=M(()=>b.value.length>1&&b.value.every(e=>(e.entEventUserDatabaseID??0)>0));function me(){p.value="",U.value="",_.value=[...b.value],S.value=!0}function ke(){S.value=!1,_.value=[],p.value=""}async function be(){if(T.value)return;const e=_.value.map(t=>t.entEventUserDatabaseID??0);if(e.some(t=>t<1)){p.value="Fant ikke ventelisteraden for alle deltakerne. Last inn siden pÃ¥ nytt.";return}T.value=!0,p.value="";try{const t=await j.post(`${O}/api/Events/SaveWaitingListOrder?eventId=${m}`,{orderedIds:e});if(t.status!==200){p.value=`Kunne ikke lagre rekkefølgen (status ${t.status}).`,console.error("SaveWaitingListOrder svarte",t.status,{eventId:m,orderedIds:e});return}S.value=!1,_.value=[],await V()}catch(t){const a=t?.response?.status;a===409?(p.value="Ventelisten ble endret av noen andre. Lista er lastet inn pÃ¥ nytt â se over rekkefølgen og lagre igjen.",await V(),_.value=[...b.value]):p.value=a?`Kunne ikke lagre rekkefølgen (status ${a}).`:"Kunne ikke lagre rekkefølgen.",console.error("SaveWaitingListOrder feilet",a??t,{eventId:m,orderedIds:e})}finally{T.value=!1}}const $=o(H.value?[{id:H.value,desc:re.value==="desc"}]:[{id:"position",desc:!1}]);Ce($,e=>{const t=e[0];if(!t){q(void 0,"desc");return}q(t.id,t.desc?"desc":"asc")});const _e=new Intl.Collator(W.value??"nb-no",{sensitivity:"base"});function B(e,t,a){return _e.compare(String(e.getValue(a)??""),String(t.getValue(a)??""))}const ye=We({get data(){return b.value},columns:[{id:"select",header:()=>r(J,{modelValue:v.value.length===x.value.length&&x.value.length>0,"aria-label":"Velg alle","onUpdate:modelValue":e=>de(e)}),cell:({row:e})=>r(J,{modelValue:v.value.includes(e.original.userID??-1),"aria-label":`Velg ${e.original.fullName}`,"onUpdate:modelValue":t=>ve(t,e.original)}),enableSorting:!1},{id:"position",accessorFn:e=>e.position,header:({column:e})=>r(h,{column:e,label:"Plass"}),cell:({row:e})=>r("span",{},`#${e.original.position}`)},{id:"fullName",accessorFn:e=>e.fullName,header:({column:e})=>r(h,{column:e,label:"Navn"}),cell:({row:e})=>r("span",{},e.original.fullName),sortingFn:B,filterFn:(e,t,a)=>a?e.original.fullName.toLowerCase().includes(String(a).toLowerCase()):!0},{id:"ticketTitle",accessorFn:e=>e.ticketLabel,header:({column:e})=>r(h,{column:e,label:"Billettype"}),cell:({row:e})=>r("span",{},e.original.ticketLabel||"PÃ¥melding"),sortingFn:B},{id:"status",accessorFn:e=>e.status.label,header:({column:e})=>r(h,{column:e,label:"Status"}),cell:({row:e})=>{const t=e.original.status;return r("div",{class:"flex flex-col"},[r("span",{class:t.blocked?"text-muted-foreground":"text-green-700"},t.label),t.blocked&&t.paid?r("span",{class:"text-xs text-muted-foreground"}
1,"FÃ¥r betalingslenke ved opprykk"):null])},sortingFn:B},{id:"sortDate",accessorFn:e=>e.sortDate,header:({column:e})=>r(h,{column:e,label:"Dato"}),cell:({row:e})=>r("span",{},new Date(e.original.entEventUserDateTime??new Date(0)).toLocaleString(W.value??"nb-no"))},{id:"actions",header:()=>"Valg",cell:({row:e})=>r("div",{class:"flex items-center gap-2"},[D.value?r(Ke,{event:D.value,user:e.original,onReloadTrigger:V}):null,r(C,{variant:"destructive",size:"sm",title:"Slett fra venteliste",onClick:()=>ie(e.original)},()=>[r(N,{icon:"fa:trash",class:"h-4 w-4"})])]),enableSorting:!1}],state:{get sorting(){return $.value},get globalFilter(){return U.value}},getCoreRowModel:Be(),getSortedRowModel:Ne(),getFilteredRowModel:Ae(),onSortingChange:e=>{$.value=typeof e=="function"?e($.value):e},globalFilterFn:(e,t,a)=>a?e.original.fullName.toLowerCase().includes(String(a).toLowerCase()):!0});return(e,t)=>(u(),g("div",null,[R.value?(u(),K(ze,{key:0,"user-ids":v.value,"organizer-user-id":D.value?.organizer??0,onCanceled:t[0]||(t[0]=a=>R.value=!1),onCompleted:t[1]||(t[1]=a=>R.value=!1)},null,8,["user-ids","organizer-user-id"])):I("",!0),!L.value&&!S.value&&pe.value?(u(),K(l(Z),{key:1,class:"mb-6"},{default:n(()=>[s(l(ee),null,{default:n(()=>[...t[5]||(t[5]=[i("Slik slipper du inn de som venter",-1)])]),_:1}),s(l(X),null,{default:n(()=>[Y.value?(u(),g("p",Qe," Ãk antall plasser pÃ¥ billettypen. De som stÃ¥r i kø rykker da opp automatisk i rekkefølge, og fÃ¥r e-post og SMS med betalingslenke og en frist. Rekker de ikke fristen, frigjøres plassen til neste i køen. ")):(u(),g("p",Ye," Ãk antall plasser pÃ¥ billettypen. De som stÃ¥r i kø rykker da opp automatisk i rekkefølge og fÃ¥r beskjed pÃ¥ SMS. ")),d("p",Ge,[t[8]||(t[8]=i(" «Meld på»-knappen i tabellen er noe annet: den overstyrer kapasiteten og legger deltakeren inn ",-1)),Y.value?(u(),g(P,{key:0},[t[6]||(t[6]=d("strong",null,"gratis",-1)),t[7]||(t[7]=i(", uten betalingskrav. ",-1))],64)):(u(),g(P,{key:1},[i(" uavhengig av kapasitet. ")],64)),t[9]||(t[9]=i(" Bruk den bare nÃ¥r du bevisst vil gjøre et unntak. ",-1))])]),_:1})]),_:1})):I("",!0),S.value?I("",!0):(u(),g("div",Je,[s(l(C),{variant:"secondary",disabled:v.value.length===0,title:v.value.length===0?l(f)("events.select-users-first"):l(f)("events.invite-selected"),onClick:ue},{default:n(()=>[s(l(N),{icon:"ic:outline-email"}),t[10]||(t[10]=i(" Send melding ",-1))]),_:1},8,["disabled","title"]),s(l(C),{variant:"outline",disabled:L.value||!G.value,title:G.value?"Bestem selv hvem som stÃ¥r først i køen":"Det mÃ¥ stÃ¥ minst to personer pÃ¥ ventelisten",onClick:me},{default:n(()=>[s(l(N),{icon:"ic:baseline-swap-vert"}),t[11]||(t[11]=i(" Endre rekkefølge ",-1))]),_:1},8,["disabled","title"])])),S.value?(u(),g("div",Xe,[s(l(Z),{variant:"warning",class:"mb-4"},{default:n(()=>[s(l(ee),null,{default:n(()=>[...t[12]||(t[12]=[i("Rekkefølgen bestemmer hvem som fÃ¥r plassen",-1)])]),_:1}),s(l(X),null,{default:n(()=>[...t[13]||(t[13]=[d("p",null," Blir det en ledig plass, gÃ¥r den til den øverste i lista. Flytter du noen opp, er det altsÃ¥ de som fÃ¥r tilbudet â i stedet for den som sto foran. ",-1),d("p",{class:"mt-2"}," Ingen fÃ¥r beskjed om endringen, verken de du flytter eller de som blir forbigÃ¥tt. ",-1)])]),_:1})]),_:1}),s(l(ce),{modelValue:_.value,"onUpdate:modelValue":t[2]||(t[2]=a=>_.value=a),handle:".handle","ghost-class":"opacity-50","item-key":"entEventUserDatabaseID",class:"mb-4 flex flex-col gap-2"},{item:n(({element:a,index:y})=>[d("div",Ze,[d("span",et,[s(l(N),{icon:"ic:baseline-drag-indicator",class:"h-5 w-5"})]),d("span",tt,"#"+c(y+1),1),d("span",at,c(a.fullName||"Uten navn"),1),d("span",lt,c(a.ticketLabel||"PÃ¥melding"),1)])]),_:1},8,["modelValue"]),p.value?(u(),g("p",st,c(p.value),1)):I("",!0),d("div",nt,[s(l(C),{disabled:T.value,onClick:be},{default:n(()=>[...t[14]||(t[14]=[i(" Lagre rekkefølge ",-1)])]),_:1},8,["disabled"]),s(l(C),{variant:"secondary",disabled:T.value,onClick:ke},{default:n(()=>[i(c(e.$filters.upperCaseFirst(l(f)("global.cancel"))),1)]),_:1},8,["disabled"])])])):(u(),g(P,{key:4},[d("div",rt,[s(l($e),{"model-value":l(U),placeholder:"Søk pÃ¥ navn",class:"max-w-sm","onUpdate:modelValue":t[3]||(t[3]=a=>U.value=String(a))},null,8,["model-value"])]),s(je,{table:l(ye),"is-loading":L.value,"skeleton-columns":6,"empty-message":l(f)("events.no-users-on-waiting-list")},null,8,["table","is-loading","empty-message"])],64)),s(l(Te),{open:w.value!==null,"onUpdate:open":t[4]||(t[4]=a=>{a||(w.value=null)})},{default:n(()=>[s(l(he),null,{default:n(()=>[s(l(Ee),null,{default:n(()=>[s(l(Ie),null,{default:n(()=>[...t[15]||(t[15]=[i("Slett fra venteliste",-1)])]),_:1}),s(l(Le),null,{default:n(()=>[i(" Vil du fjerne "+c(w.value?.fullName||"deltakeren")+" fra ventelisten? Deltakeren fÃ¥r ingen beskjed, og de bak i køen rykker opp. Handlingen kan ikke angres. ",1)]),_:1})]),_:1}),k.value?(u(),g("p",it,c(k.value),1)):I("",!0),s(l(Fe),null,{default:n(()=>[s(l(Re),{disabled:F.value},{default:n(()=>[i(c(e.$filters.upperCaseFirst(l(f)("global.cancel"))),1)]),_:1},8,["disabled"]),s(l(C),{variant:"destructive",disabled:F.value,onClick:oe},{default:n(()=>[i(c(e.$filters.upperCaseFirst(l(f)("global.delete"))),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1},8,["open"])]))}}),ut=ot;ae();var dt=te({__name:"WaitingList",emits:["reload-participant-count-trigger"],setup(le,{emit:A}){const E=A;return(z,f)=>(u(),K(ut,{onReloadParticipantCountTrigger:f[0]||(f[0]=W=>E("reload-participant-count-trigger"))}))}}),Tt=dt;export{Tt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.