Files
EpicNext-Cms/src/actions/admin-radio-points.ts
T

41 lines
1.3 KiB
TypeScript

"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<void> {
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");
}