import Link from "next/link";
import { and, asc, eq, sql } from "drizzle-orm";
import { requireSession } from "@/lib/auth";
import { canEditCatalog } from "@/lib/rbac";
import { db } from "@/db";
import { trainingCourses } from "@/db/schema";
import { PageHeader } from "@/components/ui";
import { CourseManager, type CourseRow } from "./course-form";

export const dynamic = "force-dynamic";

export default async function TrainingCoursesPage() {
  const session = await requireSession();

  // Ai cũng xem được danh sách khoá (NVKD cần tra khi tư vấn); chỉ quản lý mới thêm/sửa/gỡ.
  const canEdit = canEditCatalog(session);

  const rows: CourseRow[] = await db
    .select({
      id: trainingCourses.id,
      name: trainingCourses.name,
      description: trainingCourses.description,
      schedule: trainingCourses.schedule,
      conditions: trainingCourses.conditions,
      format: trainingCourses.format,
      hasCertificate: trainingCourses.hasCertificate,
      isActive: trainingCourses.isActive,
      attendedCount: sql<number>`(select count(distinct c.customer_id)::int from customer_course_completions c where c.course_id = training_courses.id)`,
    })
    .from(trainingCourses)
    .where(and(eq(trainingCourses.tenantId, session.tenantId), eq(trainingCourses.isActive, true)))
    .orderBy(asc(trainingCourses.name));

  return (
    <>
      <PageHeader
        title="Chương trình chuyển giao"
        subtitle={'"Chương trình chuyển giao" — đại lý phải học quy trình sử dụng trước khi lấy một số sản phẩm. Ghi nhận khách nào đã học khóa nào ở trang chi tiết khách hàng.'}
        actions={
          <Link href="/danh-muc" className="btn-ghost">
            ← Danh mục
          </Link>
        }
      />
      <CourseManager rows={rows} canEdit={canEdit} />
    </>
  );
}
