import { notFound } from "next/navigation";
import ar from "../../../messages/ar.json";
import { db } from "@/lib/db";
import { labelViewModel } from "@/server/labels/render";
import { verifyLabelSignature } from "@/server/labels/signing";
import "../label.css";

export const dynamic = "force-dynamic";

export default async function AwbPage({
  params,
  searchParams,
}: {
  params: Promise<{ orderId: string }>;
  searchParams: Promise<{ expires?: string; sig?: string }>;
}) {
  const [{ orderId }, query] = await Promise.all([params, searchParams]);
  if (!verifyLabelSignature(orderId, query.expires, query.sig)) notFound();

  const order = await db.order.findUnique({
    where: { id: orderId },
    include: { customer: true, items: true },
  });
  if (!order) notFound();
  const label = labelViewModel(order);

  return (
    <main className="awb-screen" dir="rtl">
      <article className="awb-label">
        <header className="awb-header">{label.heading}</header>
        <div
          className="awb-barcode"
          dangerouslySetInnerHTML={{ __html: label.barcodeSvg ?? "<strong>DRAFT</strong>" }}
        />
        <div className="awb-grid">
          <div><strong>{ar.awb.orderId}</strong><span dir="ltr">{order.id}</span></div>
          <div><strong>AWB</strong><span dir="ltr">{label.awbNumber}</span></div>
          <div><strong>{ar.awb.recipient}</strong>{order.customer.name}</div>
          <div><strong>{ar.awb.phone}</strong><span dir="ltr">{order.customer.phoneE164.replace(/^\+/, "")}</span></div>
        </div>
        <section className="awb-address"><strong>{ar.awb.address}</strong>{label.fullAddress}</section>
        <div className="awb-grid">
          <div><strong>{ar.awb.zone}</strong>{order.zone ?? "-"}</div>
          <div><strong>CARRIER</strong>{order.carrier ?? "-"}</div>
        </div>
        <section className="awb-cod"><strong>{ar.awb.cod}</strong>{label.cod}</section>
        <section className="awb-items"><strong>{ar.awb.contents}</strong>{label.items.join(" • ")}</section>
        <footer className="awb-footer">
          <span><strong>{ar.awb.sender}</strong>{process.env.STORE_NAME ?? "Smart COD"}</span>
          <span>{label.date}</span>
        </footer>
      </article>
    </main>
  );
}
