Files

104 lines
2.6 KiB
TypeScript
Raw Permalink 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 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." };
}
}