"use server";
import { db } from "@/lib/db";
import { revalidatePath } from "next/cache";

export async function updatePackage(formData: FormData) {
  const id = formData.get("id") as string;
  const name = formData.get("name") as string;
  const description = formData.get("description") as string;
  const priceUsd = parseFloat(formData.get("priceUsd") as string);
  const priceNgn = parseFloat(formData.get("priceNgn") as string);
  const featuresRaw = formData.get("features") as string;
  const stripePriceIdUsdLive = (formData.get("stripePriceIdUsdLive") as string).trim() || null;
  const stripePriceIdNgnLive = (formData.get("stripePriceIdNgnLive") as string).trim() || null;
  const stripePriceIdUsdSandbox = (formData.get("stripePriceIdUsdSandbox") as string).trim() || null;
  const stripePriceIdNgnSandbox = (formData.get("stripePriceIdNgnSandbox") as string).trim() || null;
  const isActive = formData.get("isActive") === "1";

  let features: string[] = [];
  try {
    features = JSON.parse(featuresRaw);
  } catch {
    features = featuresRaw.split("\n").map((f) => f.trim()).filter(Boolean);
  }

  await db.subscriptionPackage.update({
    where: { id },
    data: {
      name,
      description,
      priceUsd,
      priceNgn,
      features,
      stripePriceIdUsdLive,
      stripePriceIdNgnLive,
      stripePriceIdUsdSandbox,
      stripePriceIdNgnSandbox,
      isActive,
    },
  });

  revalidatePath("/admin/subscriptions");
}

export async function cancelSubscription(subscriptionId: string) {
  await db.subscription.update({
    where: { id: subscriptionId },
    data: { status: "cancelled" },
  });
  revalidatePath("/admin/subscriptions");
}
