"use server"; import { eq } from "drizzle-orm"; import { getDb } from "@/db"; import { commissionSettings } from "@/db/schema"; import { requireAdmin } from "@/lib/auth/server"; import { refresh } from "next/cache"; import { isSlipProvider, slipProviderConfigured } from "@/lib/commission/slip-provider"; export async function setCommissionAvailability(isOpen: boolean, message: string) { await requireAdmin(); if (typeof isOpen !== "boolean" || typeof message !== "string") return { status: "error" as const, message: "ข้อมูลไม่ถูกต้อง" }; const closureMessage = message.trim(); if (!isOpen && (closureMessage.length < 1 || closureMessage.length > 1000)) return { status: "error" as const, message: "กรุณาเขียนเหตุผลที่ปิดรับ Commission (ไม่เกิน 1,000 ตัวอักษร)" }; try { const [settings] = await getDb().update(commissionSettings).set({ isOpen, ...(!isOpen ? { closureMessage } : {}), updatedAt: new Date(), }).where(eq(commissionSettings.id, 1)).returning({ isOpen: commissionSettings.isOpen }); if (!settings) return { status: "error" as const, message: "ไม่พบการตั้งค่า Commission" }; return { status: "saved" as const }; } catch { return { status: "error" as const, message: "บันทึกสถานะ Commission ไม่สำเร็จ" }; } } export async function setCommissionSlipProvider(provider: unknown) { await requireAdmin(); if (!isSlipProvider(provider)) return { status: "error" as const, message: "ผู้ให้บริการไม่ถูกต้อง" }; if (!slipProviderConfigured(provider)) return { status: "error" as const, message: "ยังไม่ได้ตั้งค่าผู้ให้บริการนี้บนเซิร์ฟเวอร์" }; try { const [settings] = await getDb().update(commissionSettings).set({ slipProvider: provider, updatedAt: new Date(), }).where(eq(commissionSettings.id, 1)).returning({ slipProvider: commissionSettings.slipProvider }); if (!settings) return { status: "error" as const, message: "ไม่พบการตั้งค่า Commission" }; } catch { return { status: "error" as const, message: "บันทึกผู้ให้บริการตรวจสลิปไม่สำเร็จ" }; } refresh(); return { status: "saved" as const }; }