50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
"use server";
|
||
|
||
import { createClient } from "@/lib/supabase/server";
|
||
import { revalidatePath } from "next/cache";
|
||
|
||
function cleanText(value: FormDataEntryValue | null) {
|
||
const text = typeof value === "string" ? value.trim() : "";
|
||
return text.length > 0 ? text : null;
|
||
}
|
||
|
||
export async function addClientActivity(clientId: string, formData: FormData) {
|
||
const supabase = await createClient();
|
||
const {
|
||
data: { user },
|
||
error: userError,
|
||
} = await supabase.auth.getUser();
|
||
|
||
if (userError || !user) {
|
||
throw new Error("Kullanıcı bulunamadı.");
|
||
}
|
||
|
||
const title = cleanText(formData.get("title"));
|
||
if (!title) {
|
||
throw new Error("Aktivite başlığı zorunludur.");
|
||
}
|
||
|
||
const { error } = await supabase.from("client_activities").insert({
|
||
user_id: user.id,
|
||
client_id: clientId,
|
||
type: formData.get("type") as string || "note",
|
||
title,
|
||
content: cleanText(formData.get("content")),
|
||
activity_date: formData.get("activity_date") as string || new Date().toISOString(),
|
||
});
|
||
|
||
if (error) {
|
||
throw new Error(`Aktivite eklenemedi: ${error.message}`);
|
||
}
|
||
|
||
// Update client's last_contact_date
|
||
await supabase
|
||
.from("clients")
|
||
.update({ last_contact_date: new Date().toISOString() })
|
||
.eq("id", clientId)
|
||
.eq("user_id", user.id);
|
||
|
||
revalidatePath(`/clients/${clientId}`);
|
||
revalidatePath(`/clients`);
|
||
}
|