Files
gg-backend/backend/src/controllers/career.controller.js
T

133 lines
2.7 KiB
JavaScript
Raw Normal View History

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 {
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,
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,
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 {
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({
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 {
const { id } = req.params;
2026-03-13 14:54:47 +05:30
await prisma.career.delete({
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
});
}
};