import Link from "next/link";
import { redirect } from "next/navigation";

import { Button } from "@/components/ui/button";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { listApprovedLabsForClinic } from "@/lib/appwrite/job-queries";
import { listPatients } from "@/lib/appwrite/patient-queries";
import { requireTenant, requireTenantKind } from "@/lib/appwrite/tenant-guard";
import { NewJobForm } from "./components/new-job-form";

export const metadata = {
  title: "DLS — Yeni İş Yayınla",
};

export default async function NewJobPage() {
  let ctx;
  try {
    ctx = await requireTenant();
    requireTenantKind(ctx, ["clinic"]);
  } catch {
    redirect("/dashboard");
  }

  const [labs, patients] = await Promise.all([
    listApprovedLabsForClinic(ctx.tenantId),
    listPatients(ctx.tenantId, { includeArchived: false }),
  ]);
  const defaultCurrency = ctx.settings?.defaultCurrency ?? "TRY";

  return (
    <div className="flex-1 space-y-6 px-6">
      <div className="flex flex-col gap-1">
        <h1 className="text-2xl font-bold tracking-tight">Yeni İş Yayınla</h1>
        <p className="text-muted-foreground text-sm">
          Bağlı laboratuvarınıza yeni bir protez işi gönderin.
        </p>
      </div>

      {labs.length === 0 ? (
        <Card>
          <CardHeader>
            <CardTitle>Önce bir laboratuvarla bağlantı kurun</CardTitle>
            <CardDescription>
              İş gönderebilmeniz için onaylanmış bir laboratuvar bağlantınız olmalı.
            </CardDescription>
          </CardHeader>
          <CardContent>
            <Button asChild>
              <Link href="/connections">Bağlantı Kur</Link>
            </Button>
          </CardContent>
        </Card>
      ) : (
        <Card>
          <CardHeader>
            <CardTitle>İş Bilgileri</CardTitle>
            <CardDescription>
              Hasta kodu, protez türü ve diğer detayları girin. Dosya yüklemesi sonraki sürümde.
            </CardDescription>
          </CardHeader>
          <CardContent>
            <NewJobForm
              labs={labs}
              patients={patients.map((p) => ({
                id: p.$id,
                code: p.patientCode,
                label: `${p.firstName} ${p.lastName}`,
              }))}
              defaultCurrency={defaultCurrency}
            />
          </CardContent>
        </Card>
      )}
    </div>
  );
}
