"use server"; import config from "@payload-config"; import { getPayload } from "payload"; import { isPayloadUser } from "@/utils/access-control/isPayloadUser"; interface CreateCampaignData { name: string; summary: string; status: "concept" | "inProgress" | "completed"; startDate?: string; endDate?: string; description?: string; } async function authenticate() { const payload = await getPayload({ config }); const { headers } = await import("next/headers"); const hdrs = await headers(); const { user } = await payload.auth({ headers: hdrs, canSetHeaders: false, }); if (!isPayloadUser(user)) { throw new Error("Unauthorized"); } return { payload, user }; } export async function createCampaign(data: CreateCampaignData) { try { const { payload, user } = await authenticate(); // Filter out undefined dates const campaignData: Record = { name: data.name, summary: data.summary, status: data.status, owner: user.id, }; // Only add date fields if they have values if (data.startDate) { campaignData.startDate = data.startDate; } if (data.endDate) { campaignData.endDate = data.endDate; } if (data.description) { campaignData.description = data.description; } const campaign = await payload.create({ collection: "campaigns", data: campaignData as any, depth: 1, }); return { success: true, data: campaign, }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : "Failed to create campaign", }; } }