import Link from "next/link";
import { requireUser } from "@/lib/auth";
import { db } from "@/lib/db";
import { formatDate } from "@/lib/format";

export default async function MyPropertiesPage() {
  const user = await requireUser();
  const properties = await db.property.findMany({
    where: { clientId: user.id },
    orderBy: { createdAt: "desc" },
    include: { _count: { select: { photos: true } }, orders: { select: { status: true } } },
  });

  return (
    <>
      <h1>My Properties</h1>
      {properties.length === 0 ? (
        <p className="muted">No properties yet. Your photos will appear here once the studio uploads them.</p>
      ) : (
        <ul className="list">
          {properties.map((p) => {
            const paid = p.orders.some((o) => o.status === "PAID");
            const pending = !paid && p.orders.some((o) => o.status === "PENDING");
            return (
              <li key={p.id}>
                <Link href={`/properties/${p.id}`}>
                  <strong>{p.address}</strong>
                </Link>
                <div className="muted">
                  Shot {formatDate(p.shootDate)} · {p._count.photos} photos ·{" "}
                  {paid ? (
                    <span className="badge PAID">Paid</span>
                  ) : pending ? (
                    <span className="badge PENDING">Awaiting payment</span>
                  ) : (
                    <span className="muted">No order yet</span>
                  )}
                </div>
              </li>
            );
          })}
        </ul>
      )}
    </>
  );
}
