jobs.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const Job = require('../models/Job');
  2. const { successResponse, errorResponse } = require('../utils/apiResponse');
  3. class JobController {
  4. static async getAllJobs(req, res) {
  5. try {
  6. const jobs = await Job.findAll();
  7. successResponse(res, jobs);
  8. } catch (err) {
  9. errorResponse(res, err);
  10. }
  11. }
  12. static async getActiveJobs(req, res) {
  13. try {
  14. const [rows] = await db.query("SELECT * FROM jobs WHERE status = 'active'");
  15. const jobs = rows.map(row => ({
  16. ...row,
  17. pendingResumes: row.pending_resumes,
  18. passedResumes: row.passed_resumes,
  19. aiCriteria: JSON.parse(row.ai_criteria),
  20. createdAt: row.created_at,
  21. updatedAt: row.updated_at
  22. }));
  23. successResponse(res, jobs);
  24. } catch (err) {
  25. errorResponse(res, err);
  26. }
  27. }
  28. static async getJob(req, res) {
  29. try {
  30. const job = await Job.findById(req.params.id);
  31. if (!job) {
  32. return errorResponse(res, 'Job not found', 404);
  33. }
  34. successResponse(res, job);
  35. } catch (err) {
  36. errorResponse(res, err);
  37. }
  38. }
  39. static async createJob(req, res) {
  40. try {
  41. const newJob = await Job.create(req.body);
  42. successResponse(res, newJob, 201);
  43. } catch (err) {
  44. errorResponse(res, err);
  45. }
  46. }
  47. static async updateJob(req, res) {
  48. try {
  49. const updatedJob = await Job.update(req.params.id, req.body);
  50. successResponse(res, updatedJob);
  51. } catch (err) {
  52. errorResponse(res, err);
  53. }
  54. }
  55. static async triggerScreening(req, res) {
  56. try {
  57. const job = await Job.triggerScreening(req.params.id);
  58. successResponse(res, job);
  59. } catch (err) {
  60. errorResponse(res, err);
  61. }
  62. }
  63. }
  64. module.exports = JobController;