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
)}
))}
);
}