"use server"; import { revalidatePath } from "next/cache"; import { executeLegacyHotelMutation } from "@/features/housekeeping/domains/hotel/services/mutations"; import { requirePermission } from "@/lib/admin/guard"; import { PERMS } from "@/lib/permissions"; function text(formData: FormData, key: string): string { return String(formData.get(key) ?? "") .normalize("NFC") .trim(); } function enabled(formData: FormData, key: string): boolean { return ["1", "true", "on"].includes(text(formData, key).toLowerCase()); } export async function createTrack(formData: FormData): Promise { const staff = await requirePermission(PERMS.RADIO_EDIT); const duration = text(formData, "duration"); await executeLegacyHotelMutation(staff, "radio.autodj.create", { title: text(formData, "title"), artist: text(formData, "artist") || undefined, album: text(formData, "album") || undefined, artworkUrl: text(formData, "artworkUrl") || undefined, duration: duration ? Number(duration) : null, sortOrder: Number(text(formData, "sortOrder") || 0), isActive: enabled(formData, "isActive"), }); revalidatePath("/ase/hotel/radio/autodj"); } export async function toggleTrack(formData: FormData): Promise { const staff = await requirePermission(PERMS.RADIO_EDIT); await executeLegacyHotelMutation(staff, "radio.autodj.toggle", { id: text(formData, "id"), isActive: enabled(formData, "isActive"), }); revalidatePath("/ase/hotel/radio/autodj"); } export async function deleteTrack(formData: FormData): Promise { const staff = await requirePermission(PERMS.RADIO_EDIT); await executeLegacyHotelMutation(staff, "radio.autodj.delete", { id: text(formData, "id"), }); revalidatePath("/ase/hotel/radio/autodj"); }