Files
kitebeachakyaka/app/actions/activities.ts
T
2026-06-09 15:15:40 +03:00

153 lines
4.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"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." };
}
}