2026-05-26 15:48:01 +05:30
|
|
|
import prisma from '../prisma/client.js';
|
2026-03-13 14:54:47 +05:30
|
|
|
|
|
|
|
|
// GET ALL CAREERS
|
|
|
|
|
|
|
|
|
|
export const getAllCareers = async (req, res) => {
|
|
|
|
|
try {
|
2026-05-11 00:04:22 +05:30
|
|
|
const { admin } = req.query;
|
|
|
|
|
|
2026-03-13 14:54:47 +05:30
|
|
|
const careers = await prisma.career.findMany({
|
2026-05-26 15:48:01 +05:30
|
|
|
where: admin === 'true' ? {} : { isActive: true },
|
|
|
|
|
orderBy: [{ sortOrder: 'asc' }, { createdAt: 'desc' }],
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const response = careers.map((c) => ({
|
|
|
|
|
id: c.id,
|
|
|
|
|
post: c.post,
|
|
|
|
|
designation: c.designation,
|
|
|
|
|
qualification: c.qualification,
|
|
|
|
|
experienceNeed: c.experienceNeed,
|
|
|
|
|
email: c.email,
|
|
|
|
|
number: c.number,
|
|
|
|
|
status: c.status,
|
2026-05-11 00:04:22 +05:30
|
|
|
isActive: c.isActive,
|
|
|
|
|
sortOrder: c.sortOrder,
|
2026-03-13 14:54:47 +05:30
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
return res.status(200).json({
|
|
|
|
|
success: true,
|
|
|
|
|
data: response,
|
|
|
|
|
});
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).json({
|
|
|
|
|
success: false,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Failed to fetch careers',
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// CREATE CAREER
|
|
|
|
|
|
|
|
|
|
export const createCareer = async (req, res) => {
|
|
|
|
|
try {
|
2026-05-26 15:48:01 +05:30
|
|
|
const { post, designation, qualification, experienceNeed, email, number, status, isActive, sortOrder } = req.body;
|
2026-03-13 14:54:47 +05:30
|
|
|
|
|
|
|
|
if (!post || !designation) {
|
|
|
|
|
return res.status(400).json({
|
|
|
|
|
success: false,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Post and designation are required',
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const career = await prisma.career.create({
|
|
|
|
|
data: {
|
|
|
|
|
post,
|
|
|
|
|
designation,
|
|
|
|
|
qualification,
|
|
|
|
|
experienceNeed,
|
|
|
|
|
email,
|
|
|
|
|
number,
|
|
|
|
|
status,
|
2026-05-11 00:04:22 +05:30
|
|
|
isActive: isActive !== undefined ? isActive : true,
|
|
|
|
|
sortOrder: sortOrder !== undefined ? Number(sortOrder) : 0,
|
2026-03-13 14:54:47 +05:30
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return res.status(201).json({
|
|
|
|
|
success: true,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Career created successfully',
|
2026-03-13 14:54:47 +05:30
|
|
|
data: career,
|
|
|
|
|
});
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).json({
|
|
|
|
|
success: false,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Failed to create career',
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// UPDATE CAREER (PATCH)
|
|
|
|
|
|
|
|
|
|
export const updateCareer = async (req, res) => {
|
|
|
|
|
try {
|
2026-05-11 00:04:22 +05:30
|
|
|
const { id } = req.params;
|
|
|
|
|
const updateData = { ...req.body };
|
|
|
|
|
|
|
|
|
|
if (updateData.sortOrder !== undefined) {
|
|
|
|
|
updateData.sortOrder = Number(updateData.sortOrder);
|
|
|
|
|
}
|
2026-03-13 14:54:47 +05:30
|
|
|
|
|
|
|
|
const career = await prisma.career.update({
|
2026-05-11 00:04:22 +05:30
|
|
|
where: { id: Number(id) },
|
|
|
|
|
data: updateData,
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return res.status(200).json({
|
|
|
|
|
success: true,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Career updated successfully',
|
2026-03-13 14:54:47 +05:30
|
|
|
data: career,
|
|
|
|
|
});
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).json({
|
|
|
|
|
success: false,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Failed to update career',
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// DELETE CAREER
|
|
|
|
|
|
|
|
|
|
export const deleteCareer = async (req, res) => {
|
|
|
|
|
try {
|
2026-05-11 00:04:22 +05:30
|
|
|
const { id } = req.params;
|
2026-03-13 14:54:47 +05:30
|
|
|
|
|
|
|
|
await prisma.career.delete({
|
2026-05-11 00:04:22 +05:30
|
|
|
where: { id: Number(id) },
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return res.status(200).json({
|
|
|
|
|
success: true,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Career deleted successfully',
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
return res.status(500).json({
|
|
|
|
|
success: false,
|
2026-05-26 15:48:01 +05:30
|
|
|
message: 'Failed to delete career',
|
2026-03-13 14:54:47 +05:30
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|