1import{r as m,U as lt,g as J,s as Q,d as rt,o as ct,u as ut,k as O,c as l,a as e,h as g,B as R,C as dt,i as s,O as _t,A as vt,I as B,E as K,Q as pt,j as D,t as i,F as j,p as V,b as mt,e as r,q as z,z as ht,n as Z}from"./index-CLUkG7Y1.js";import{_ as ft}from"./NotificationIcons.vue_vue_type_script_setup_true_lang-BgAG1NRr.js";function yt(){const F=m(!1),A=m(null),T=lt([]),P=m(""),C=m("all"),N=m("active"),_=50,v=m(1),d=m(0),o=J(()=>Math.max(1,Math.ceil(d.value/_))),M=m(0),h=m(0);let x=0;async function L($={}){const k=++x;$.silent||(F.value=!0),A.value=null;try{const p=(v.value-1)*_,{data:S,error:w}=await Q.rpc("admin_parents_summary_page",{p_q:P.value.trim()||null,p_notif:C.value,p_active:N.value,p_limit:_,p_offset:p});if(k!==x)return;if(w)throw w;const f=S??{};T.value=Array.isArray(f.items)?f.items:[],d.value=Number(f.total_count??0),M.value=Number(f.total_active_children??0),h.value=Number(f.total_active_applications??0)}catch(p){if(k!==x)return;A.value=(p==null?void 0:p.message)??String(p)}finally{k===x&&!$.silent&&(F.value=!1)}}return{loading:F,error:A,items:T,q:P,notif:C,active:N,page:v,pageSize:_,totalCount:d,totalPages:o,totalActiveChildren:M,totalActiveApplications:h,load:L}}const bt={class:"card bg-base-200"},gt={class:"card-body gap-4"},kt={class:"flex items-center justify-between gap-3"},wt={class:"flex items-end gap-2"},zt=["onKeyup"],xt={class:"-mt-2 flex items-center justify-between"},At={class:"text-sm opacity-70"},Ct={key:0},Nt={key:0},St={key:1,class:"loading"},Tt={key:0,class:"text-sm opacity-70"},Pt={key:1,class:"alert alert-warning"},$t={key:2,class:"loading"},qt={key:3,class:"alert alert-error"},jt={class:"overflow-visible"},Ft={class:"table"},Mt={class:"relative whitespace-nowrap"},Dt={class:"relative z-0 pointer-events-none"},Vt={class:"top-4 block"},Lt={class:"relative whitespace-nowrap"},It={class:"relative z-0 pointer-events-none"},Ot={key:0},Rt={key:1,class:"top-4 block opacity-70"},Bt={class:"relative whitespace-nowrap"},Et={class:"relative z-0 pointer-events-none"},Ut={class:"relative whitespace-nowrap"},Ht={class:"relative z-0 pointer-events-none"},Kt={class:"group relative whitespace-nowrap"},Zt={class:"relative z-0 pointer-events-none"},Jt={class:"badge badge-outline"},Qt={key:0,class:"bg-base-300 text-base-content absolute z-10 hidden min-w-max rounded p-2 text-sm whitespace-pre shadow-lg group-hover:block"},Wt={class:"m-0 list-none p-0"},Yt={class:"relative"},Gt={class:"relative z-0 pointer-events-none"},Xt={class:"group relative whitespace-nowrap"},te={class:"relative z-0 pointer-events-none"},ee={class:"flex items-center gap-2"},ae={class:"text-sm opacity-70"},ne={class:"bg-base-300 text-base-content absolute z-10 hidden min-w-max rounded p-2 text-sm whitespace-pre shadow-lg group-hover:block"},se={class:"mb-1 font-semibold"},ie={class:"opacity-80"},oe={key:0,class:"m-0 mt-2 list-disc pl-5"},le={key:1,class:"mt-2 whitespace-pre-line opacity-80"},re={class:"mt-2 flex items-center justify-between"},ce={class:"text-sm opacity-70"},ue={class:"join"},de=["disabled"],_e=["onClick"],ve={key:1,class:"btn btn-sm join-item",disabled:""},pe={key:2,class:"btn btn-sm join-item",disabled:""},me=["disabled"],ye=rt({__name:"ApplicationsParentsListPage",setup(F){const A=ut(),T=mt(),{loading:P,error:C,items:N,q:_,notif:v,active:d,page:o,totalCount:M,totalPages:h,totalActiveChildren:x,totalActiveApplications:L,load:$}=yt(),k=m(!1),p=m(null);let S=!1,w=!1,f=0;const W=J(()=>N.value.map(a=>{const n=st(a);return{...a,detailTo:et(a.parent_id),parentDisplayName:`${a.parent_first_name??"â"} ${a.parent_last_name??"â"}`,firstApplicationCreatedLabel:it(a.first_application_created_at),paymentDotClass:nt(a.payment_status_code),paymentTitle:n}})),E=new Set;function Y(a){return Array.isArray(a.payments_status_lines)?a.payments_status_lines.filter(n=>typeof n=="string"):typeof a.payments_status_text=="string"&&a.payments_status_text.trim()?a.payments_status_text.split(` 2`).map(n=>n.trim()).filter(Boolean):[]}function G(a){const n=new Set,c=/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/;for(const t of a||[]){const u=Y(t);
2for(const y of u){if(!y.startsWith("Chybà platba pro pÅihlášku:"))continue;const b=y.match(c);b!=null&&b[0]&&n.add(b[0])}}return Array.from(n)}async function X(a){const n=N.value;if(n.reduce((y,b)=>y+Number((b==null?void 0:b.payments_active_missing_count)??0),0)<=0)return;const t=G(n).filter(y=>!E.has(y));if(!t.length||k.value)return;k.value=!0,p.value=null;const{error:u}=await Q.rpc("admin_application_payments_ensure",{p_application_ids:t});if(u){p.value=u.message,k.value=!1;return}t.forEach(y=>E.add(y)),k.value=!1,a===f&&await $({silent:!0})}async function U(){const a=++f;await $(),!(C.value||a!==f)&&window.setTimeout(()=>{a===f&&X(a)},0)}ct(async()=>{const a=A.query;_.value=typeof a.q=="string"?a.q:"",v.value=typeof a.notif=="string"?a.notif:"all",d.value=typeof a.active=="string"?a.active:"active";const n=Number(a.page);o.value=Number.isFinite(n)&&n>0?n:1,await U(),S=!0});async function H(){if(o.value!==1){o.value=1;return}await q()}async function q(){await T.replace({query:{...A.query,q:_.value||void 0,notif:v.value!=="all"?v.value:void 0,active:d.value!=="active"?d.value:void 0,page:o.value>1?String(o.value):void 0}}),await U()}O(d,async()=>{if(!(!S||w)){if(o.value!==1){o.value=1;return}await q()}}),O(v,async()=>{if(!(!S||w)){if(o.value!==1){o.value=1;return}await q()}}),O(o,async()=>{!S||w||await q()});async function tt(){w=!0,_.value="",v.value="all",d.value="active",o.value=1;try{await q()}finally{w=!1}}function et(a){return{name:"dashboard-application-parent-detail",params:{parentId:a}}}function I(a){a<1||a>h.value||a===o.value||(o.value=a)}function at(){T.push({name:"dashboard-applications-pending-list"})}function nt(a){return a==="missing"?"bg-error border-error":a==="all_paid"?"bg-success border-success":a==="partial_paid"?"bg-transparent border-success":"bg-transparent border-neutral"}function st(a){const n=Number((a==null?void 0:a.payments_active_apps_count)??0),c=Number((a==null?void 0:a.payments_active_paid_count)??0),t=Number((a==null?void 0:a.payments_active_missing_count)??0);return n<=0?"Bez aktivnÃch pÅihlášek":t>0?`Inicializace u ${t} z ${n} aktivnÃch pÅihlášek`:c===n?`VÅ¡e zaplaceno (${c}/${n})`:c>0?`ÄásteÄnÄ zaplaceno (${c}/${n})`:`Nic nezaplaceno (0/${n})`}function it(a){if(!a)return"â";const n=new Date(a),c=n.getDate(),t=n.getMonth()+1,u=n.getFullYear(),y=String(n.getHours()).padStart(2,"0"),b=String(n.getMinutes()).padStart(2,"0"),ot=String(n.getSeconds()).padStart(2,"0");return`${c}. ${t}. ${u} ${y}:${b}:${ot}`}return(a,n)=>{const c=ht("router-link");return r(),l("div",bt,[e("div",gt,[e("div",kt,[n[7]||(n[7]=e("h2",{class:"card-title"},"PÅihlášky (seskupeno podle rodiÄů)",-1)),e("div",wt,[R(e("input",{class:"input input-bordered w-80","onUpdate:modelValue":n[0]||(n[0]=t=>B(_)?_.value=t:null),placeholder:"Hledat jméno rodiÄe/dÃtÄte nebo e-mail vÄ. sekundárnÃhoâ¦",onKeyup:_t(vt(H,["prevent"]),["enter"])},null,40,zt),[[dt,s(_)]]),e("button",{type:"button",class:"btn btn-primary",onClick:H},"Hledat"),R(e("select",{"onUpdate:modelValue":n[1]||(n[1]=t=>B(v)?v.value=t:null),class:"select select-bordered w-64"},n[5]||(n[5]=[pt('<option value="all">VÅ¡echny stavy</option><option value="health">Zdravotnà omezenÃ</option><option value="friends">Preferovanà kamarádi</option><option value="diet">Stravovacà preference</option><option value="notes_organizer">Poznámka (poÅadatel)</option><option value="notes_parent">Poznámka (rodiÄ)</option><option value="waitlisted">NáhradnÃk</option><option value="notes_parent_unresolved">Poznámka (rodiÄ) â nevyÅeÅ¡ené</option><option value="notes_parent_resolved">Poznámka (rodiÄ) â vyÅeÅ¡ené</option><option value="priority">ZvýraznÄno (zpozorni!)</option><option value="unpaid">Nezaplaceno</option>',11)]),512),[[K,s(v)]]),R(e("select",{"onUpdate:modelValue":n[2]||(n[2]=t=>B(d)?d.value=t:null),class:"select select-bordered w-56"},n[6]||(n[6]=[e("option",{value:"active"},"Jen aktivnÃ",-1),e("option",{value:"all"},"VÅ¡echny",-1),e("option",{value:"inactive"},"Jen neaktivnÃ",-1)]),512),[[K,s(d)]]),e("button",{type:"button",class:"btn btn-error",onClick:tt}," Reset filtrů "),e("button",{type:"button",class:"btn btn-neutral",onClick:at}," NevyÅÃzené pÅihlášky ")])]),e("div",xt,[e("div",At,[s(P)?(r(),l("div",St,"NaÄÃtámâ¦")):(r(),l("div",Ct,[D(" Zobrazeno "+i(s(N).length)+" z "+i(s(M))+" záznamů na této stránce. Celkový poÄet vÅ¡ech aktivnÃch pÅihlášek: "+i(s(L))+" ",1),s(x)!==null?(r(),l("span",Nt,"("+i(s(x))+" dÄtÃ)",1)):g("",!0),n[8]||(n[8]=D(". ",-1))]))])]),k.value?(r(),l("div",Tt,"Inicializuji chybÄjÃcà platbyâ¦")):g("",!0),p.value?(r(),l("div",Pt,[e("span",null,"Inicializace plateb selhala: "+i(p.value),1)])):g("",!0),s(P)?(r(),l("div",$t,"NaÄÃtámâ¦")):g("",!0),s(C)?(r(),l("div",qt,[e("span",null,i(s(C)),1)])):g("",!0),e("div",jt,[e("table",Ft,[n[10]||(n[10]=e("thead",null,[e("tr",null,[e("th",
2null,"RodiÄ"),e("th",null,"E-mail"),e("th",null,"Telefon"),e("th",null,"Notifikace"),e("th",null,"DÄti"),e("th",null,"PÅihlášky (aktivnà / celkem)"),e("th",null,"Stav platby")])],-1)),e("tbody",null,[(r(!0),l(j,null,V(W.value,t=>(r(),l("tr",{key:t.parent_id,class:"hover cursor-pointer"},[e("td",Mt,[z(c,{to:t.detailTo,class:"absolute inset-0 z-10","aria-label":"OtevÅÃt detail rodiÄe"},null,8,["to"]),e("div",Dt,[D(i(t.parentDisplayName)+" ",1),n[9]||(n[9]=e("br",null,null,-1)),e("small",Vt,i(t.firstApplicationCreatedLabel),1)])]),e("td",Lt,[z(c,{to:t.detailTo,class:"absolute inset-0 z-10","aria-label":"OtevÅÃt detail rodiÄe"},null,8,["to"]),e("div",It,[D(i(t.parent_contact_email??"â")+" ",1),t.second_guardian_emails_text?(r(),l("br",Ot)):g("",!0),t.second_guardian_emails_text?(r(),l("small",Rt," sek: "+i(t.second_guardian_emails_text),1)):g("",!0)])]),e("td",Bt,[z(c,{to:t.detailTo,class:"absolute inset-0 z-10","aria-label":"OtevÅÃt detail rodiÄe"},null,8,["to"]),e("div",Et,i(t.parent_contact_phone??"â"),1)]),e("td",Ut,[z(c,{to:t.detailTo,class:"absolute inset-0 z-10","aria-label":"OtevÅÃt detail rodiÄe"},null,8,["to"]),e("div",Ht,[z(ft,{health:!!t.has_health_limitations,friends:!!t.has_friends_preference,diet:!!t.has_diet_preference,"note-organizer":!!t.has_notes_organizer,"note-parent":!!t.has_notes_parent,waitlisted:!!t.has_waitlisted_application,"note-parent-unresolved":!!t.has_notes_parent_unresolved,attention:!!t.has_attention_flag,"size-class":"text-base"},null,8,["health","friends","diet","note-organizer","note-parent","waitlisted","note-parent-unresolved","attention"])])]),e("td",Kt,[z(c,{to:t.detailTo,class:"absolute inset-0 z-10","aria-label":"OtevÅÃt detail rodiÄe"},null,8,["to"]),e("div",Zt,[e("span",Jt,i(t.children_count),1),t.children_names&&t.children_names.length?(r(),l("div",Qt,[e("ul",Wt,[(r(!0),l(j,null,V(t.children_names,u=>(r(),l("li",{key:u},i(u),1))),128))])])):g("",!0)])]),e("td",Yt,[z(c,{to:t.detailTo,class:"absolute inset-0 z-10","aria-label":"OtevÅÃt detail rodiÄe"},null,8,["to"]),e("div",Gt,i(t.applications_active_count)+" / "+i(t.applications_count),1)]),e("td",Xt,[z(c,{to:t.detailTo,class:"absolute inset-0 z-10","aria-label":"OtevÅÃt detail rodiÄe"},null,8,["to"]),e("div",te,[e("div",ee,[e("span",{class:Z(["inline-block h-3 w-3 rounded-full border",t.paymentDotClass]),"aria-hidden":"true"},null,2),e("span",ae,i(t.paymentTitle),1)]),e("div",ne,[e("div",se,i(t.paymentTitle),1),e("div",ie," AktivnÃ: "+i(t.payments_active_apps_count??0)+", zaplaceno: "+i(t.payments_active_paid_count??0)+", chybà platba: "+i(t.payments_active_missing_count??0)+", nezaplaceno: "+i(t.payments_active_not_paid_count??0),1),t.payments_status_lines&&t.payments_status_lines.length?(r(),l("ul",oe,[(r(!0),l(j,null,V(t.payments_status_lines,u=>(r(),l("li",{key:u},i(u),1))),128))])):t.payments_status_text?(r(),l("div",le,i(t.payments_status_text),1)):g("",!0)])])])]))),128))])])]),e("div",re,[e("div",ce,"Stránka "+i(s(o))+" / "+i(s(h)),1),e("div",ue,[e("button",{class:"btn btn-sm join-item",disabled:s(o)<=1,onClick:n[3]||(n[3]=t=>I(s(o)-1))}," « ",8,de),(r(!0),l(j,null,V(s(h),t=>(r(),l(j,{key:t},[t===1||t===s(h)||Math.abs(t-s(o))<=2?(r(),l("button",{key:0,class:Z(["btn btn-sm join-item",{"btn-active":t===s(o)}]),onClick:u=>I(t)},i(t),11,_e)):t===2&&s(o)>4?(r(),l("button",ve," ⦠")):t===s(h)-1&&s(o)<s(h)-3?(r(),l("button",pe," ⦠")):g("",!0)],64))),128)),e("button",{class:"btn btn-sm join-item",disabled:s(o)>=s(h),onClick:n[4]||(n[4]=t=>I(s(o)+1))}," » ",8,me)])])])])}}});export{ye 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.