This commit is contained in:
2026-06-09 15:15:40 +03:00
parent f6b4acb760
commit d908d83ca5
58 changed files with 4320 additions and 419 deletions
+86
View File
@@ -0,0 +1,86 @@
"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." };
}
}