import prisma from "../prisma/client.js"; export const getAllDepartments = async (req, res) => { try { const {admin} = req.query; const departments = await prisma.department.findMany({ where: admin === "true" ? {} : {isActive: true}, orderBy: [{sortOrder: "asc"}, {name: "asc"}], }); const response = departments.map((dep) => ({ departmentId: dep.departmentId, name: dep.name, image: dep.image ?? "", para1: dep.para1 ?? "", para2: dep.para2 ?? "", para3: dep.para3 ?? "", facilities: dep.facilities ?? "", services: dep.services ?? "", isActive: dep.isActive, sortOrder: dep.sortOrder, })); return res.status(200).json({ success: true, data: response, }); } catch (error) { console.error(error); return res.status(500).json({ success: false, message: "Failed to fetch departments", }); } }; export const getDepartmentByName = async (req, res) => { try { const {name} = req.query; if (!name) { return res.status(400).json({ success: false, message: "Department name is required", }); } const department = await prisma.department.findFirst({ where: { name: name, isActive: true, }, }); if (!department) { return res.status(404).json({ success: false, message: "Department not found or inactive", }); } const response = { departmentId: department.departmentId, name: department.name, image: department.image ?? "", para1: department.para1 ?? "", para2: department.para2 ?? "", para3: department.para3 ?? "", facilities: department.facilities ?? "", services: department.services ?? "", isActive: department.isActive, sortOrder: department.sortOrder, }; return res.status(200).json({ success: true, data: [response], }); } catch (error) { console.error(error); return res.status(500).json({ success: false, message: "Failed to fetch department", }); } }; export async function createDepartment(req, res) { try { const { departmentId, name, image, para1, para2, para3, facilities, services, isActive, sortOrder, } = req.body; if (!departmentId || !name) { return res .status(400) .json({error: "departmentId and name are required"}); } const department = await prisma.department.create({ data: { departmentId, name, image, para1, para2, para3, facilities, services, isActive: isActive !== undefined ? isActive : true, sortOrder: sortOrder !== undefined ? Number(sortOrder) : 0, }, }); res.status(201).json({ message: "Department created successfully", data: department, }); } catch (error) { if (error.code === "P2002") { return res.status(409).json({error: "Department already exists"}); } console.error(error); res.status(500).json({error: "Failed to create department"}); } } export const updateDepartment = async (req, res) => { try { const {departmentId} = req.params; const updateData = {...req.body}; if (updateData.sortOrder !== undefined) { updateData.sortOrder = Number(updateData.sortOrder); } const department = await prisma.department.update({ where: {departmentId}, data: updateData, }); return res.status(200).json({ success: true, message: "Department updated successfully", data: department, }); } catch (error) { console.error(error); return res.status(500).json({ success: false, message: "Failed to update department", }); } }; export const deleteDepartment = async (req, res) => { try { const {departmentId} = req.params; await prisma.department.delete({ where: {departmentId}, }); return res.status(200).json({ success: true, message: "Department deleted successfully", }); } catch (error) { console.error(error); return res.status(500).json({ success: false, message: "Failed to delete department", }); } };