173 lines
3.8 KiB
JavaScript
173 lines
3.8 KiB
JavaScript
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',
|
|
});
|
|
}
|
|
};
|