import { auth } from "@/lib/auth"
import { db } from "@/lib/db"
import { redirect } from "next/navigation"
import { revalidatePath } from "next/cache"
import Link from "next/link"

export default async function AdminSettingsPage() {
  const session = await auth()
  if (!session?.user || session.user.role !== "ADMIN") redirect("/")

  // Get or create global settings
  let settings = await db.appSettings.findUnique({ where: { id: "GLOBAL_SETTINGS" } })
  if (!settings) {
    settings = await db.appSettings.create({
      data: { id: "GLOBAL_SETTINGS", freezeDate: null },
    })
  }

  const isFrozen = settings.freezeDate != null && settings.freezeDate <= new Date()

  const toggleFreeze = async () => {
    "use server"
    const current = await db.appSettings.findUnique({ where: { id: "GLOBAL_SETTINGS" } })
    const nowFrozen = current?.freezeDate != null && current.freezeDate <= new Date()
    await db.appSettings.update({
      where: { id: "GLOBAL_SETTINGS" },
      data: { freezeDate: nowFrozen ? null : new Date() },
    })
    revalidatePath("/admin/settings")
  }

  const toggleRegistrations = async () => {
    "use server"
    const current = await db.appSettings.findUnique({ where: { id: "GLOBAL_SETTINGS" } })
    await db.appSettings.update({
      where: { id: "GLOBAL_SETTINGS" },
      data: { registrationsClosed: !(current?.registrationsClosed ?? false) },
    })
    revalidatePath("/admin/settings")
  }

  const setFreezeDate = async (formData: FormData) => {
    "use server"
    const dateStr = formData.get("freezeDate") as string
    const timeStr = formData.get("freezeTime") as string
    const freezeDate = dateStr ? new Date(`${dateStr}T${timeStr || "00:00"}:00`) : null
    await db.appSettings.update({
      where: { id: "GLOBAL_SETTINGS" },
      data: { freezeDate },
    })
    revalidatePath("/admin/settings")
  }

  return (
    <main className="container" style={{ padding: "3rem 1rem", minHeight: "100vh", maxWidth: "700px" }}>
      {/* Back navigation */}
      <div style={{ marginBottom: "2rem", display: "flex", alignItems: "center", gap: "1rem" }}>
        <Link href="/admin" style={{ color: "var(--text-muted)", display: "flex", alignItems: "center", gap: "0.25rem", textDecoration: "none" }}>
          <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
            <path d="m15 18-6-6 6-6" />
          </svg>
          Dashboard Admin
        </Link>
        <span style={{ color: "var(--text-muted)" }}>/</span>
        <span style={{ fontWeight: 600 }}>Setări aplicație</span>
      </div>

      {/* Freeze Status Banner */}
      <div
        style={{
          padding: "1.25rem 1.5rem",
          borderRadius: "var(--radius-lg)",
          marginBottom: "2rem",
          background: isFrozen ? "rgba(239,68,68,0.1)" : "rgba(16,185,129,0.1)",
          border: `1px solid ${isFrozen ? "var(--danger)" : "var(--success)"}`,
          display: "flex",
          alignItems: "center",
          gap: "1rem",
        }}
      >
        <span style={{ fontSize: "2rem" }}>{isFrozen ? "🔒" : "🔓"}</span>
        <div>
          <div style={{ fontWeight: 700, color: isFrozen ? "var(--danger)" : "var(--success)" }}>
            {isFrozen ? "Contribuțiile sunt ÎNGHEȚATE" : "Contribuțiile sunt ACTIVE"}
          </div>
          <div style={{ fontSize: "0.9rem", color: "var(--text-muted)", marginTop: "0.2rem" }}>
            {isFrozen
              ? `Elevii nu mai pot trimite sau edita intrări din ${settings.freezeDate?.toLocaleString("ro-RO")}.`
              : "Elevii pot trimite și edita intrările lor."}
          </div>
        </div>
      </div>

      {/* Quick Toggle */}
      <div style={{ background: "var(--surface-color)", borderRadius: "var(--radius-lg)", border: "1px solid var(--border-color)", padding: "1.5rem 2rem", marginBottom: "1.5rem" }}>
        <h2 style={{ fontSize: "1.1rem", fontWeight: 600, marginBottom: "0.5rem" }}>Comutare rapidă</h2>
        <p style={{ color: "var(--text-muted)", fontSize: "0.9rem", marginBottom: "1.25rem" }}>
          {isFrozen
            ? "Apasă pentru a debloca imediat contribuțiile elevilor."
            : "Apasă pentru a îngheța imediat toate contribuțiile."}
        </p>
        <form action={toggleFreeze}>
          <button
            type="submit"
            style={{
              padding: "0.75rem 2rem",
              borderRadius: "var(--radius-md)",
              background: isFrozen ? "var(--success)" : "var(--danger)",
              color: "white",
              border: "none",
              fontWeight: 600,
              cursor: "pointer",
              fontSize: "0.95rem",
            }}
          >
            {isFrozen ? "🔓 Deblochează contribuțiile" : "🔒 Îngheață contribuțiile acum"}
          </button>
        </form>
      </div>

      {/* Quick Toggle - Registrations */}
      <div style={{ background: "var(--surface-color)", borderRadius: "var(--radius-lg)", border: "1px solid var(--border-color)", padding: "1.5rem 2rem", marginBottom: "1.5rem" }}>
        <h2 style={{ fontSize: "1.1rem", fontWeight: 600, marginBottom: "0.5rem" }}>Comutare Înregistrări</h2>
        <p style={{ color: "var(--text-muted)", fontSize: "0.9rem", marginBottom: "1.25rem" }}>
          {settings.registrationsClosed
            ? "Înregistrările sunt OPRITE. Apasă pentru a le activa din nou."
            : "Apasă pentru a opri complet posibilitatea elevilor de a-și face conturi noi."}
        </p>
        <form action={toggleRegistrations}>
          <button
            type="submit"
            style={{
              padding: "0.75rem 2rem",
              borderRadius: "var(--radius-md)",
              background: settings.registrationsClosed ? "var(--success)" : "var(--danger)",
              color: "white",
              border: "none",
              fontWeight: 600,
              cursor: "pointer",
              fontSize: "0.95rem",
            }}
          >
            {settings.registrationsClosed ? "🔓 Activează înregistrările" : "🔒 Oprește înregistrările"}
          </button>
        </form>
      </div>

      {/* Schedule Freeze */}
      <div style={{ background: "var(--surface-color)", borderRadius: "var(--radius-lg)", border: "1px solid var(--border-color)", padding: "1.5rem 2rem", marginBottom: "1.5rem" }}>
        <h2 style={{ fontSize: "1.1rem", fontWeight: 600, marginBottom: "0.5rem" }}>Planifică înghețarea</h2>
        <p style={{ color: "var(--text-muted)", fontSize: "0.9rem", marginBottom: "1.25rem" }}>
          Setează o dată și oră exactă la care contribuțiile vor fi înghețate automat.
        </p>
        <form action={setFreezeDate} style={{ display: "flex", gap: "1rem", alignItems: "flex-end", flexWrap: "wrap" }}>
          <div>
            <label style={{ display: "block", fontSize: "0.85rem", color: "var(--text-muted)", marginBottom: "0.35rem" }}>Data</label>
            <input
              type="date"
              name="freezeDate"
              defaultValue={settings.freezeDate ? settings.freezeDate.toISOString().split("T")[0] : ""}
              style={{
                padding: "0.65rem 0.75rem",
                borderRadius: "var(--radius-sm)",
                border: "1px solid var(--border-color)",
                background: "var(--surface-hover)",
                color: "var(--text-main)",
              }}
            />
          </div>
          <div>
            <label style={{ display: "block", fontSize: "0.85rem", color: "var(--text-muted)", marginBottom: "0.35rem" }}>Ora</label>
            <input
              type="time"
              name="freezeTime"
              defaultValue={settings.freezeDate
                ? settings.freezeDate.toLocaleTimeString("ro-RO", { hour: "2-digit", minute: "2-digit", hour12: false })
                : "23:59"}
              style={{
                padding: "0.65rem 0.75rem",
                borderRadius: "var(--radius-sm)",
                border: "1px solid var(--border-color)",
                background: "var(--surface-hover)",
                color: "var(--text-main)",
              }}
            />
          </div>
          <button
            type="submit"
            style={{
              padding: "0.65rem 1.5rem",
              borderRadius: "var(--radius-md)",
              background: "var(--primary)",
              color: "white",
              border: "none",
              fontWeight: 600,
              cursor: "pointer",
            }}
          >
            Salvează planificarea
          </button>
        </form>
      </div>

      {/* Navigation to other admin sections */}
      <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr", gap: "1rem" }}>
        <Link
          href="/admin"
          style={{
            padding: "1rem",
            background: "var(--surface-color)",
            border: "1px solid var(--border-color)",
            borderRadius: "var(--radius-md)",
            textAlign: "center",
            color: "var(--text-main)",
            fontWeight: 500,
            fontSize: "0.9rem",
          }}
        >
          📋 Gestionare Intrări
        </Link>
        <Link
          href="/admin/users"
          style={{
            padding: "1rem",
            background: "var(--surface-color)",
            border: "1px solid var(--border-color)",
            borderRadius: "var(--radius-md)",
            textAlign: "center",
            color: "var(--text-main)",
            fontWeight: 500,
            fontSize: "0.9rem",
          }}
        >
          👥 Gestionare Elevi
        </Link>
      </div>
    </main>
  )
}
