import { notFound } from "next/navigation";
import Link from "next/link";
import { completeList, regenerateShare, removeListItem, reopenList, toggleShare, updateListItem } from "@/lib/actions";
import { ConfirmButton } from "@/components/confirm-button";
import { CopyLink } from "@/components/copy-link";
import { ProductSearch } from "@/components/product-search";
import { Report } from "@/components/report";
import { PageHead } from "@/components/ui";
import { getList, getListItems, getProducts } from "@/lib/data";
import type { Product, ShoppingList, ShoppingListItem } from "@/lib/types";

export const dynamic="force-dynamic";
export default async function ListDetail({params}:{params:Promise<{id:string}>}){
 const {id}=await params;const [list,items,allProducts]=await Promise.all([getList(id),getListItems(id),getProducts()]);if(!list)notFound();const l=list as ShoppingList,rows=items as ShoppingListItem[],products=allProducts.filter((p)=>p.active);const base=process.env.NEXT_PUBLIC_APP_URL?.replace(/\/$/,"")??"";const shareUrl=l.share_token?`${base}/freigabe/${l.share_token}`:"";
 return <><PageHead eyebrow={l.status==="draft"?"Entwurf":"Abgeschlossen"} title={l.name} text={`${rows.length} Bestellpositionen`}><Link href="/listen" className="button ghost">Zur Übersicht</Link>{l.status==="draft"?<form action={completeList}><input type="hidden" name="id" value={id}/><ConfirmButton className="button" label="Liste abschließen" question="Liste abschließen und einen Freigabelink erstellen?"/></form>:<><Link className="button secondary" href={`/api/listen/${id}/pdf`}>PDF laden</Link><form action={reopenList}><input type="hidden" name="id" value={id}/><ConfirmButton className="button ghost" label="Wieder öffnen" question="Die Freigabe wird deaktiviert. Liste wieder bearbeiten?"/></form></>}</PageHead>
 {l.status==="draft"?<><ProductSearch products={(products??[])as Product[]} listId={id}/><div className="section-head"><h2>Bestellpositionen</h2></div><div className="table-wrap"><table className="table"><thead><tr><th>Produkt</th><th>Lieferant</th><th>Einheit</th><th>Anzahl</th><th></th></tr></thead><tbody>{rows.map(i=><tr key={i.id}><td><strong>{i.product_name}</strong><div className="muted">{i.article_number||"Keine Artikelnummer"}</div></td><td>{i.supplier_name}</td><td>{i.packaging_unit||"–"}</td><td><form className="actions" action={updateListItem}><input type="hidden" name="id" value={i.id}/><input type="hidden" name="list_id" value={id}/><input className="search qty" name="quantity" type="number" min="1" step="1" defaultValue={i.quantity}/><button className="button ghost small">Speichern</button></form></td><td><form action={removeListItem}><input type="hidden" name="id" value={i.id}/><input type="hidden" name="list_id" value={id}/><ConfirmButton label="Entfernen" question={`${i.product_name} von der Liste entfernen?`}/></form></td></tr>)}</tbody></table>{!rows.length&&<div className="empty">Suchen Sie oben nach einem Produkt und fügen Sie es hinzu.</div>}</div></>:<><section className="card no-print" style={{marginBottom:24}}><div className="section-head" style={{margin:0}}><div><h2>Bericht teilen</h2><span className="muted">Der Link ist schreibgeschützt und zeigt nur diesen Bericht.</span></div><div className="actions">{l.share_enabled&&shareUrl&&<CopyLink value={shareUrl}/>}<form action={toggleShare}><input type="hidden" name="id" value={id}/><input type="hidden" name="enabled" value={String(!l.share_enabled)}/><button className="button ghost">{l.share_enabled?"Link deaktivieren":"Link aktivieren"}</button></form><form action={regenerateShare}><input type="hidden" name="id" value={id}/><ConfirmButton className="button ghost" label="Neuen Link erzeugen" question="Der bisherige Link wird ungültig. Fortfahren?"/></form></div></div>{l.share_enabled&&shareUrl&&<div className="notice" style={{marginTop:16,overflowWrap:"anywhere"}}>{shareUrl}</div>}</section><Report list={l} items={rows}/></>}
 </>;
}
