b
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
"use server";
|
||||
import prisma from "@/lib/prisma";
|
||||
import { revalidatePath } from "next/cache";
|
||||
|
||||
export async function loadMockActivities() {
|
||||
await prisma.activity.deleteMany({});
|
||||
|
||||
const mockActivities = [
|
||||
{
|
||||
lang: "tr",
|
||||
title: "Kitesurf",
|
||||
description: "Başlangıçtan ileri seviyeye. Akyaka'nın ünlü termik rüzgarında uçun.",
|
||||
price: "₺2.000/Saat",
|
||||
image: "https://images.unsplash.com/photo-1526367790999-0150786686a2?q=80&w=2940&auto=format&fit=crop",
|
||||
badge: "IKO Sertifikalı",
|
||||
order: 1
|
||||
},
|
||||
{
|
||||
lang: "en",
|
||||
title: "Kitesurf",
|
||||
description: "From beginner to advanced. Fly in Akyaka's famous thermal wind.",
|
||||
price: "₺2.000/Hour",
|
||||
image: "https://images.unsplash.com/photo-1526367790999-0150786686a2?q=80&w=2940&auto=format&fit=crop",
|
||||
badge: "IKO Certified",
|
||||
order: 1
|
||||
},
|
||||
{
|
||||
lang: "tr",
|
||||
title: "Yoga",
|
||||
description: "Güne nehir kenarında huzur dolu bir yoga seansıyla başlayın.",
|
||||
price: "₺400/Seans",
|
||||
image: "https://images.unsplash.com/photo-1544367567-0f2fcb009e0b?q=80&w=2940&auto=format&fit=crop",
|
||||
badge: null,
|
||||
order: 2
|
||||
},
|
||||
{
|
||||
lang: "en",
|
||||
title: "Yoga",
|
||||
description: "Start the day with a peaceful yoga session by the river.",
|
||||
price: "₺400/Session",
|
||||
image: "https://images.unsplash.com/photo-1544367567-0f2fcb009e0b?q=80&w=2940&auto=format&fit=crop",
|
||||
badge: null,
|
||||
order: 2
|
||||
},
|
||||
{
|
||||
lang: "tr",
|
||||
title: "Stand-Up Paddle",
|
||||
description: "Azmak nehrinin berrak sularında eşsiz bir keşif.",
|
||||
price: "₺300/Saat",
|
||||
image: "https://images.unsplash.com/photo-1522883392419-7d8cb2435728?q=80&w=2924&auto=format&fit=crop",
|
||||
badge: null,
|
||||
order: 3
|
||||
},
|
||||
{
|
||||
lang: "en",
|
||||
title: "Stand-Up Paddle",
|
||||
description: "A unique discovery in the crystal clear waters of Azmak River.",
|
||||
price: "₺300/Hour",
|
||||
image: "https://images.unsplash.com/photo-1522883392419-7d8cb2435728?q=80&w=2924&auto=format&fit=crop",
|
||||
badge: null,
|
||||
order: 3
|
||||
},
|
||||
{
|
||||
lang: "tr",
|
||||
title: "Bisiklet Kiralama",
|
||||
description: "Akyaka Köy Turu ile doğanın tadını çıkarın.",
|
||||
price: "₺250/Gün",
|
||||
image: "https://images.unsplash.com/photo-1511994298241-608e28f14fde?q=80&w=2940&auto=format&fit=crop",
|
||||
badge: null,
|
||||
order: 4
|
||||
},
|
||||
{
|
||||
lang: "en",
|
||||
title: "Bicycle Rental",
|
||||
description: "Enjoy nature with an Akyaka Village Tour.",
|
||||
price: "₺250/Day",
|
||||
image: "https://images.unsplash.com/photo-1511994298241-608e28f14fde?q=80&w=2940&auto=format&fit=crop",
|
||||
badge: null,
|
||||
order: 4
|
||||
}
|
||||
];
|
||||
|
||||
await prisma.activity.createMany({ data: mockActivities });
|
||||
|
||||
revalidatePath('/admin/activities');
|
||||
revalidatePath('/tr');
|
||||
revalidatePath('/en');
|
||||
}
|
||||
|
||||
export async function addActivity(prevState: any, formData: FormData) {
|
||||
try {
|
||||
const data = {
|
||||
lang: formData.get("lang") as string,
|
||||
title: formData.get("title") as string,
|
||||
description: formData.get("description") as string,
|
||||
price: formData.get("price") as string,
|
||||
image: formData.get("image") as string,
|
||||
badge: formData.get("badge") as string || null,
|
||||
order: parseInt(formData.get("order") as string || "0", 10),
|
||||
};
|
||||
|
||||
await prisma.activity.create({ data });
|
||||
|
||||
revalidatePath('/admin/activities');
|
||||
revalidatePath('/tr');
|
||||
revalidatePath('/en');
|
||||
|
||||
return { success: true, message: "Aktivite başarıyla eklendi." };
|
||||
} catch (error) {
|
||||
return { error: "Aktivite eklenirken bir hata oluştu." };
|
||||
}
|
||||
}
|
||||
|
||||
export async function updateActivity(prevState: any, formData: FormData) {
|
||||
try {
|
||||
const id = parseInt(formData.get("id") as string, 10);
|
||||
const data = {
|
||||
lang: formData.get("lang") as string,
|
||||
title: formData.get("title") as string,
|
||||
description: formData.get("description") as string,
|
||||
price: formData.get("price") as string,
|
||||
image: formData.get("image") as string,
|
||||
badge: formData.get("badge") as string || null,
|
||||
order: parseInt(formData.get("order") as string || "0", 10),
|
||||
};
|
||||
|
||||
await prisma.activity.update({
|
||||
where: { id },
|
||||
data
|
||||
});
|
||||
|
||||
revalidatePath('/admin/activities');
|
||||
revalidatePath('/tr');
|
||||
revalidatePath('/en');
|
||||
|
||||
return { success: true, message: "Aktivite başarıyla güncellendi." };
|
||||
} catch (error) {
|
||||
return { error: "Aktivite güncellenirken bir hata oluştu." };
|
||||
}
|
||||
}
|
||||
|
||||
export async function deleteActivity(id: number) {
|
||||
try {
|
||||
await prisma.activity.delete({ where: { id } });
|
||||
revalidatePath('/admin/activities');
|
||||
revalidatePath('/tr');
|
||||
revalidatePath('/en');
|
||||
return { success: true, message: "Aktivite silindi." };
|
||||
} catch (error) {
|
||||
return { error: "Silme işlemi başarısız." };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user