87 lines
3.0 KiB
TypeScript
87 lines
3.0 KiB
TypeScript
"use server";
|
||
import prisma from "@/lib/prisma";
|
||
import { revalidatePath } from "next/cache";
|
||
|
||
export async function loadMockFeatures() {
|
||
await prisma.feature.deleteMany({});
|
||
|
||
const mockFeatures = [
|
||
{ lang: "tr", icon: "Wind", label: "Kitesurf Okulu", sub: "IKO Sertifikalı", order: 1 },
|
||
{ lang: "en", icon: "Wind", label: "Kitesurf School", sub: "IKO Certified", order: 1 },
|
||
{ lang: "tr", icon: "Anchor", label: "Yoga Platformu", sub: "Nehir Kenarı", order: 2 },
|
||
{ lang: "en", icon: "Anchor", label: "Yoga Platform", sub: "Riverside", order: 2 },
|
||
{ lang: "tr", icon: "Utensils", label: "Restoran & Bar", sub: "Ege Mutfağı", order: 3 },
|
||
{ lang: "en", icon: "Utensils", label: "Restaurant & Bar", sub: "Aegean Cuisine", order: 3 },
|
||
{ lang: "tr", icon: "BedDouble", label: "Butik Odalar", sub: "3 Tip Konaklama", order: 4 },
|
||
{ lang: "en", icon: "BedDouble", label: "Boutique Rooms", sub: "3 Types of Stay", order: 4 },
|
||
{ lang: "tr", icon: "Sun", label: "Gün Batımı Terası", sub: "Gökova Manzarası", order: 5 },
|
||
{ lang: "en", icon: "Sun", label: "Sunset Terrace", sub: "Gokova View", order: 5 },
|
||
];
|
||
|
||
await prisma.feature.createMany({ data: mockFeatures });
|
||
|
||
revalidatePath('/admin/features');
|
||
revalidatePath('/tr');
|
||
revalidatePath('/en');
|
||
}
|
||
|
||
export async function addFeature(prevState: any, formData: FormData) {
|
||
try {
|
||
const data = {
|
||
lang: formData.get("lang") as string,
|
||
icon: formData.get("icon") as string,
|
||
label: formData.get("label") as string,
|
||
sub: formData.get("sub") as string,
|
||
order: parseInt(formData.get("order") as string || "0", 10),
|
||
};
|
||
|
||
await prisma.feature.create({ data });
|
||
|
||
revalidatePath('/admin/features');
|
||
revalidatePath('/tr');
|
||
revalidatePath('/en');
|
||
|
||
return { success: true, message: "Özellik başarıyla eklendi." };
|
||
} catch (error) {
|
||
return { error: "Özellik eklenirken bir hata oluştu." };
|
||
}
|
||
}
|
||
|
||
export async function updateFeature(prevState: any, formData: FormData) {
|
||
try {
|
||
const id = parseInt(formData.get("id") as string, 10);
|
||
const data = {
|
||
lang: formData.get("lang") as string,
|
||
icon: formData.get("icon") as string,
|
||
label: formData.get("label") as string,
|
||
sub: formData.get("sub") as string,
|
||
order: parseInt(formData.get("order") as string || "0", 10),
|
||
};
|
||
|
||
await prisma.feature.update({
|
||
where: { id },
|
||
data
|
||
});
|
||
|
||
revalidatePath('/admin/features');
|
||
revalidatePath('/tr');
|
||
revalidatePath('/en');
|
||
|
||
return { success: true, message: "Özellik başarıyla güncellendi." };
|
||
} catch (error) {
|
||
return { error: "Özellik güncellenirken bir hata oluştu." };
|
||
}
|
||
}
|
||
|
||
export async function deleteFeature(id: number) {
|
||
try {
|
||
await prisma.feature.delete({ where: { id } });
|
||
revalidatePath('/admin/features');
|
||
revalidatePath('/tr');
|
||
revalidatePath('/en');
|
||
return { success: true, message: "Özellik silindi." };
|
||
} catch (error) {
|
||
return { error: "Silme işlemi başarısız." };
|
||
}
|
||
}
|