"use server";
import { prisma } from "@/lib/prisma";
import { revalidatePath } from "next/cache";
import os from "os";

export async function getLocalIpAddresses() {
  const interfaces = os.networkInterfaces();
  const addresses: string[] = [];
  for (const name of Object.keys(interfaces)) {
    for (const iface of interfaces[name] || []) {
      if (iface.family === "IPv4" && !iface.internal) {
        addresses.push(iface.address);
      }
    }
  }
  return addresses;
}

export async function getSettings() {
  let setting = await prisma.setting.findFirst();
  if (!setting) {
    setting = await prisma.setting.create({
      data: {
        siteName: "فروشگاه توکان",
      }
    });
  }
  return setting;
}

export async function updateSettings(id: string, data: any) {
  try {
    const { labelPrinter, receiptPrinter, printers, ...rest } = data;
    const updateData: any = { ...rest, syncStatus: 1 };
    if (labelPrinter !== undefined || receiptPrinter !== undefined) {
       updateData.printers = JSON.stringify({ labelPrinter, receiptPrinter });
    }

    const setting = await prisma.setting.update({
      where: { id },
      data: updateData,
    });
    revalidatePath("/admin/settings");
    revalidatePath("/admin/orders/pos");
    return { success: true, setting };
  } catch (error: any) {
    return { success: false, error: error.message };
  }
}
