27 lines
984 B
TypeScript
27 lines
984 B
TypeScript
"use server";
|
|
|
|
import { revalidatePath } from "next/cache";
|
|
import { cleanText, optionalDate, requiredText } from "@/server/web/form-data";
|
|
import { requireFreelancerBackend } from "@/server/web/freelancer";
|
|
|
|
const ACTIVITY_TYPES = ["note", "call", "meeting", "email"] as const;
|
|
|
|
export async function addClientActivity(clientId: string, formData: FormData) {
|
|
const { actor, service } = await requireFreelancerBackend();
|
|
const rawType = cleanText(formData.get("type"));
|
|
const type = rawType && ACTIVITY_TYPES.includes(rawType as (typeof ACTIVITY_TYPES)[number])
|
|
? rawType as (typeof ACTIVITY_TYPES)[number]
|
|
: "note";
|
|
|
|
service.addClientActivity(actor, {
|
|
clientId,
|
|
type,
|
|
title: requiredText(formData.get("title"), "Aktivite başlığı zorunludur."),
|
|
content: cleanText(formData.get("content")),
|
|
activityDate: optionalDate(formData.get("activity_date")) ?? new Date(),
|
|
});
|
|
|
|
revalidatePath(`/clients/${clientId}`);
|
|
revalidatePath("/clients");
|
|
}
|