import { requireUser } from "../../../utils/auth";
import { setMdmManaged } from "../../../db/profile";
import { z } from "zod";

const Body = z.object({
  mdmManaged: z.boolean(),
});

/**
 * POST /api/users/me/mdm-status
 *
 * App ruft diesen Endpoint auf nachdem nativ via NEFilterManager.shared()
 * .loadFromPreferences() der MDM-NEFilter-Active-State detektiert wurde.
 *
 * Body: { mdmManaged: boolean }
 *   true  → MDM-Profil aktiv auf Device — setzt mdm_managed=true in DB
 *   false → Profil nicht aktiv (z.B. nach Trustee-Deactivation, Reset) →
 *           setzt mdm_managed=false (mdm_detected_at bleibt als Audit-Trail)
 *
 * Response: { ok: true, mdmManaged: boolean, mdmDetectedAt: string | null }
 */
export default defineEventHandler(async (event) => {
  const user = await requireUser(event);

  const raw = await readBody(event).catch(() => ({}));
  const parsed = Body.safeParse(raw);
  if (!parsed.success) {
    throw createError({
      statusCode: 400,
      data: { error: "INVALID_BODY", detail: parsed.error.flatten() },
    });
  }

  const { mdmManaged } = parsed.data;
  const result = await setMdmManaged(user.id, mdmManaged);

  return {
    success: true,
    data: {
      ok: true,
      mdmManaged: result.mdmManaged,
      mdmDetectedAt: result.mdmDetectedAt?.toISOString() ?? null,
    },
  };
});
