"use server"; import { prisma } from "@/lib/prisma"; import bcrypt from "bcryptjs"; import { revalidatePath } from "next/cache"; export async function getAdmins() { try { const admins = await prisma.admin.findMany({ select: { id: true, name: true, email: true, createdAt: true, updatedAt: true, }, orderBy: { createdAt: 'desc' } }); return { success: true, data: admins }; } catch (error) { console.error("Error fetching admins:", error); return { success: false, error: "Adminleri çekerken bir hata oluştu." }; } } export async function createAdmin(formData: FormData) { try { const name = formData.get("name") as string; const email = formData.get("email") as string; const password = formData.get("password") as string; if (!name || !email || !password) { return { success: false, error: "Lütfen tüm alanları doldurun." }; } const existingAdmin = await prisma.admin.findUnique({ where: { email }, }); if (existingAdmin) { return { success: false, error: "Bu e-posta adresi zaten kullanımda." }; } const hashedPassword = await bcrypt.hash(password, 10); await prisma.admin.create({ data: { name, email, password: hashedPassword, }, }); revalidatePath("/admin/admins"); return { success: true }; } catch (error) { console.error("Error creating admin:", error); return { success: false, error: "Admin oluşturulurken bir hata oluştu." }; } } export async function updateAdmin(id: string, formData: FormData) { try { const name = formData.get("name") as string; const email = formData.get("email") as string; const password = formData.get("password") as string; if (!name || !email) { return { success: false, error: "İsim ve e-posta zorunludur." }; } const dataToUpdate: any = { name, email }; if (password) { dataToUpdate.password = await bcrypt.hash(password, 10); } await prisma.admin.update({ where: { id }, data: dataToUpdate, }); revalidatePath("/admin/admins"); return { success: true }; } catch (error) { console.error("Error updating admin:", error); return { success: false, error: "Admin güncellenirken bir hata oluştu." }; } } export async function deleteAdmin(id: string) { try { await prisma.admin.delete({ where: { id }, }); revalidatePath("/admin/admins"); return { success: true }; } catch (error) { console.error("Error deleting admin:", error); return { success: false, error: "Admin silinirken bir hata oluştu." }; } }