1import{u as k,r as o,j as e}from"./react-vendor-CShGlGts.js";import{s as u,B as c,aa as N,bo as _,I as b,J as M,a7 as y,aR as S,z as p}from"./index-BYC0bmF9.js";import{h as f}from"./dokumentBezug-DglMOcYo.js";import{L as C}from"./layout-template-BDbO_umB.js";import"./query-BUBuIGkW.js";import"./shared-utils--gW9Kwo0.js";import"./supabase-C0joAID3.js";function L(r,n){const i=new Map(n.map(a=>[a.id,a]));return r.filter(a=>f(a.ref_id)).map(a=>{const s=i.get(a.ref_id);return{reservationId:a.ref_id,datum:a.date,geaendertAm:a.updated_at,gast:s?.guest_name??null,gruppe:s?.group_name??null,verwaist:!s}}).sort((a,s)=>a.datum===s.datum?s.geaendertAm.localeCompare(a.geaendertAm):s.datum.localeCompare(a.datum))}function l(r){return r.gruppe?.trim()||r.gast?.trim()||"Menükarte"}async function A(){const{data:r,error:n}=await u.from("morgenpost_documents").select("date, ref_id, updated_at").eq("doc_kind","menuekarte");if(n||!r?.length)return[];const i=[...new Set(r.map(s=>s.ref_id).filter(s=>f(s)))];if(!i.length)return[];const{data:a}=await u.from("restaurant_reservations").select("id, guest_name, group_name, reservation_date").in("id",i);return L(r,a??[])}async function D(r){const{error:n}=await u.from("morgenpost_documents").delete().eq("doc_kind","menuekarte").eq("ref_id",r);return n?{ok:!1,fehler:n.message}:{ok:!0}
1}function E(){const r=k(),[n,i]=o.useState([]),[a,s]=o.useState(!0),[m,x]=o.useState(""),g=async()=>{s(!0),i(await A()),s(!1)};o.useEffect(()=>{g()},[]);const v=m.trim().toLowerCase(),h=n.filter(t=>`${l(t)} ${t.gast??""} ${t.datum}`.toLowerCase().includes(v)),j=async t=>{if(!confirm(`Menükarte â${l(t)}" löschen? Die Reservierung bleibt bestehen.`))return;const{ok:d,fehler:w}=await D(t.reservationId);if(!d){p.error(w||"Menükarte konnte nicht gelöscht werden");return}p.success("Menükarte gelöscht"),await g()};return e.jsxs("div",{className:"max-w-5xl mx-auto p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex min-w-0 items-start gap-2",children:[e.jsx(c,{size:"icon",variant:"ghost","aria-label":"Zurück zum Druckbereich",title:"Zurück zum Druckbereich",onClick:()=>r("/print-template-manager"),children:e.jsx(N,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Menükarten"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Karten entstehen in der Reservierung über âMenükarte gestaltenâ. Hier bearbeiten und drucken."})]})]}),e.jsxs(c,{variant:"outline",onClick:()=>r("/print/menues/vorlagen/menuekarte-standard"),children:[e.jsx(C,{className:"mr-2 h-4 w-4"}),"Vorlage"]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(_,{className:"h-4 w-4 absolute left-2.5 top-2.5 text-muted-foreground"}),e.jsx(b,{className:"pl-8",placeholder:"Gruppe, Gast oder Datum suchen",value:m,onChange:t=>x(t.target.value)})]}),a&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Lädt â¦"}),!a&&h.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"Noch keine Menükarten. Eine Karte entsteht in der Reservierung, sobald ein Menü Gänge hat."}),e.jsx("div",{className:"divide-y rounded-lg border bg-card",children:h.map(t=>e.jsxs("div",{className:"flex items-center gap-3 p-3 hover:bg-muted/50 cursor-pointer",onClick:()=>r(`/print/menuekarte/${t.reservationId}`),children:[e.jsx(M,{className:"h-5 w-5 text-muted-foreground shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"font-medium truncate",children:l(t)}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:[new Date(`${t.datum}T12:00:00`).toLocaleDateString("de-AT",{dateStyle:"long"}),t.gruppe&&t.gast?` · ${t.gast}`:""," · geändert"," ",new Date(t.geaendertAm).toLocaleString("de-AT",{dateStyle:"short",timeStyle:"short"})]})]}),t.verwaist&&e.jsx(y,{variant:"destructive",children:"Reservierung fehlt"}),e.jsx(c,{size:"icon",variant:"ghost",title:"Löschen",onClick:d=>{d.stopPropagation(),j(t)},children:e.jsx(S,{className:"h-4 w-4"})})]},t.reservationId))})]})}export{E 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.