"use server";
import { prisma } from "@/lib/prisma";
import { revalidatePath } from "next/cache";

export async function getSuppliers() {
  try {
    const suppliers = await prisma.supplier.findMany({
      where: { deletedAt: null },
      orderBy: { createdAt: "desc" },
    });
    return { success: true, suppliers };
  } catch (err: any) {
    console.error("Error fetching suppliers:", err);
    return { success: false, error: err.message || "خطا در دریافت تامین‌کنندگان" };
  }
}

export async function getSupplierById(id: string) {
  try {
    const supplier = await prisma.supplier.findUnique({
      where: { id },
      include: {
        purchases: {
          orderBy: { createdAt: "desc" },
          take: 10,
        },
        transactions: {
          orderBy: { createdAt: "desc" },
          take: 10,
        },
      },
    });
    if (!supplier) return { success: false, error: "تامین‌کننده یافت نشد" };
    return { success: true, supplier };
  } catch (err: any) {
    console.error("Error fetching supplier:", err);
    return { success: false, error: err.message || "خطا در دریافت تامین‌کننده" };
  }
}

export async function createSupplier(data: { name: string; phone?: string }) {
  try {
    if (!data.name) return { success: false, error: "نام تامین‌کننده الزامی است" };
    const supplier = await prisma.supplier.create({
      data: {
        name: data.name,
        phone: data.phone || null,
      },
    });
    revalidatePath("/admin/suppliers");
    return { success: true, supplier };
  } catch (err: any) {
    console.error("Error creating supplier:", err);
    return { success: false, error: err.message || "خطا در ایجاد تامین‌کننده" };
  }
}

export async function updateSupplier(id: string, data: { name: string; phone?: string }) {
  try {
    if (!data.name) return { success: false, error: "نام تامین‌کننده الزامی است" };
    const supplier = await prisma.supplier.update({
      where: { id },
      data: {
        name: data.name,
        phone: data.phone || null,
      },
    });
    revalidatePath("/admin/suppliers");
    return { success: true, supplier };
  } catch (err: any) {
    console.error("Error updating supplier:", err);
    return { success: false, error: err.message || "خطا در ویرایش تامین‌کننده" };
  }
}

export async function deleteSupplier(id: string) {
  try {
    await prisma.supplier.update({
      where: { id },
      data: { deletedAt: new Date() },
    });
    revalidatePath("/admin/suppliers");
    return { success: true };
  } catch (err: any) {
    console.error("Error deleting supplier:", err);
    return { success: false, error: err.message || "خطا در حذف تامین‌کننده" };
  }
}
