"use server";

import { revalidatePath } from "next/cache";
import { prisma } from "@/lib/prisma";
import { logActivity } from "@/lib/activity";
import { actor } from "./guard";

export async function saveSettings(formData: FormData) {
  const user = await actor("settings", "edit", formData);
  await prisma.companySettings.update({
    where: { id: "company" },
    data: {
      companyName: String(formData.get("companyName") ?? ""),
      address: String(formData.get("address") ?? ""),
      phone: String(formData.get("phone") ?? ""),
      email: String(formData.get("email") ?? ""),
      businessReg: String(formData.get("businessReg") ?? ""),
      taxId: String(formData.get("taxId") ?? ""),
      statisticalId: String(formData.get("statisticalId") ?? ""),
      taxArticle: String(formData.get("taxArticle") ?? ""),
      bankInfo: String(formData.get("bankInfo") ?? ""),
      logoText: String(formData.get("logoText") ?? ""),
      stampText: String(formData.get("stampText") ?? ""),
      vatRate: Number(formData.get("vatRate") ?? 0),
      stampAmount: Number(formData.get("stampAmount") ?? 0),
      proformaPrefix: String(formData.get("proformaPrefix") ?? "PF-"),
      deliveryPrefix: String(formData.get("deliveryPrefix") ?? "BL-"),
      terms: String(formData.get("terms") ?? ""),
    },
  });
  await logActivity(user, "settings", "edit", "Document settings");
  revalidatePath("/settings");
}

export async function markNotificationRead(id: string) {
  await prisma.notification.update({ where: { id }, data: { read: true } });
  revalidatePath("/notifications");
}
