41 lines
1.3 KiB
TypeScript
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");
|
|
}
|