Files
EpicNext-Cms/src/actions/admin-radio-autodj.ts
T
Simo abc707cfb2
CI / check (pull_request) Failing after 36s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped
feat(housekeeping): deliver hotel operations
2026-08-30 14:34:26 +02:00

49 lines
1.7 KiB
TypeScript

"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<void> {
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("/admin/radio/autodj");
}
export async function toggleTrack(formData: FormData): Promise<void> {
const staff = await requirePermission(PERMS.RADIO_EDIT);
await executeLegacyHotelMutation(staff, "radio.autodj.toggle", {
id: text(formData, "id"),
isActive: enabled(formData, "isActive"),
});
revalidatePath("/admin/radio/autodj");
}
export async function deleteTrack(formData: FormData): Promise<void> {
const staff = await requirePermission(PERMS.RADIO_EDIT);
await executeLegacyHotelMutation(staff, "radio.autodj.delete", {
id: text(formData, "id"),
});
revalidatePath("/admin/radio/autodj");
}