Files
gunshiz 7ba513c2bb
CI / Verify (push) Successful in 1m56s
CI / Build immutable images and deploy (push) Successful in 3m26s
feat : add slipok and switcher to switch between slip2go and slipok
2026-10-10 00:31:12 +07:00

44 lines
2.5 KiB
TypeScript

"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 };
}