"use server";

import { revalidatePath } from "next/cache";
import { redirect } from "next/navigation";
import { prisma } from "@/lib/prisma";
import { requirePermission } from "@/lib/permissions";

const BASE = "/iv-manage-84x2/reviews";

function revalidateAll(productSlug?: string) {
  revalidatePath(BASE);
  if (productSlug) revalidatePath(`/product/${productSlug}`);
}

export async function approveReview(id: string) {
  await requirePermission("reviews", "approve");
  const review = await prisma.review.update({ where: { id }, data: { status: "approved" }, include: { product: true } });
  revalidateAll(review.product.slug);
  redirect(`${BASE}?success=Review+approved.`);
}

export async function rejectReview(id: string) {
  await requirePermission("reviews", "approve");
  const review = await prisma.review.update({ where: { id }, data: { status: "rejected" }, include: { product: true } });
  revalidateAll(review.product.slug);
  redirect(`${BASE}?success=Review+rejected.`);
}

export async function deleteReview(id: string) {
  await requirePermission("reviews", "delete");
  const review = await prisma.review.delete({ where: { id }, include: { product: true } });
  revalidateAll(review.product.slug);
  redirect(`${BASE}?success=Review+deleted.`);
}
