import { revalidatePath } from "next/cache"; import { auth } from "../../lib/auth"; import { getSystemUsers } from "../../lib/queries"; import { getMetas, getMetaGlobal, setMeta, setMetaGlobal } from "../../lib/metas"; import { EJECUTIVOS_VENTA } from "../../lib/derive"; import LoginPrompt from "../../components/LoginPrompt"; export const dynamic = "force-dynamic"; export default async function AdminMetasPage() { const session = await auth(); if (!session?.email) return ; if (!session.isAdmin) { return (

Metas

Esta pƔgina es solo para administradores.

); } const allUsers = await getSystemUsers(session.accessToken); const metas = getMetas(); const metaGlobal = getMetaGlobal(); const vendedoras = EJECUTIVOS_VENTA.map((nombre) => { const u = allUsers.find((x) => x.name === nombre); return { nombre, email: u?.email || null, monto: u ? metas[u.email] || 0 : 0 }; }); async function guardarMeta(formData) { "use server"; const email = formData.get("email"); const monto = Number(formData.get("monto")); if (email && monto >= 0) setMeta(email, monto); revalidatePath("/admin/metas"); revalidatePath("/"); revalidatePath("/ganadas"); revalidatePath("/prevision"); revalidatePath("/tendencia"); } async function guardarGlobal(formData) { "use server"; const monto = Number(formData.get("metaGlobal")); if (monto >= 0) setMetaGlobal(monto); revalidatePath("/admin/metas"); revalidatePath("/"); revalidatePath("/ganadas"); revalidatePath("/prevision"); revalidatePath("/tendencia"); } return (

Metas mensuales

Solo administradores. Se guardan en SQLite (sobreviven a cada publicación, ver Etapa 4 en migration.md).

Meta global del equipo

Meta por ejecutiva

{vendedoras.map((v) => (
{v.nombre} {v.email ? (
) : ( No encontrada en systemusers )}
))}
); }