"use server"; import { revalidatePath } from "next/cache"; import { redirect } from "next/navigation"; import { executeLegacyHotelMutation } from "@/features/housekeeping/domains/hotel/services/mutations"; import { requirePermission } from "@/lib/admin/guard"; import { PERMS } from "@/lib/permissions"; import { siteSettings } from "@/lib/services/site-settings"; function text(formData: FormData, key: string): string { return String(formData.get(key) ?? "") .normalize("NFC") .trim(); } export async function savePoints(formData: FormData): Promise { const staff = await requirePermission(PERMS.RADIO_EDIT); const enabled = ["1", "true", "on"].includes( text(formData, "radio_points_enabled").toLowerCase(), ); await executeLegacyHotelMutation(staff, "radio.points.save", { radio_points_enabled: enabled, radio_points_per_minute: Number( text(formData, "radio_points_per_minute") || 0, ), radio_points_currency: text( formData, "radio_points_currency", ).toLowerCase(), radio_points_max_per_day: Number( text(formData, "radio_points_max_per_day") || 0, ), radio_points_min_listeners: Number( text(formData, "radio_points_min_listeners") || 0, ), }); siteSettings.reload(); revalidatePath("/ase/hotel/radio/points"); redirect("/ase/hotel/radio/points?saved=1"); }