"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const express_1 = require("express"); const prisma_1 = __importDefault(require("../lib/prisma")); const auth_1 = require("../middleware/auth"); const router = (0, express_1.Router)(); // GET /recruitment/jobs router.get('/jobs', auth_1.requireAuth, async (req, res) => { try { const { status } = req.query; const where = { companyId: req.user.companyId }; if (status) where.status = status; const jobs = await prisma_1.default.job.findMany({ where, include: { department: { select: { name: true } }, location: { select: { name: true } }, _count: { select: { candidates: true } }, }, orderBy: { createdAt: 'desc' }, }); return res.json(jobs); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // POST /recruitment/jobs router.post('/jobs', auth_1.requireAuth, async (req, res) => { try { const job = await prisma_1.default.job.create({ data: { ...req.body, companyId: req.user.companyId }, }); return res.status(201).json(job); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // PATCH /recruitment/jobs/:id router.patch('/jobs/:id', auth_1.requireAuth, async (req, res) => { try { const job = await prisma_1.default.job.update({ where: { id: req.params.id }, data: req.body }); return res.json(job); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // GET /recruitment/jobs/:id/candidates router.get('/jobs/:id/candidates', auth_1.requireAuth, async (req, res) => { try { const candidates = await prisma_1.default.candidate.findMany({ where: { jobId: req.params.id }, include: { interviews: true }, orderBy: { appliedAt: 'desc' }, }); return res.json(candidates); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // POST /recruitment/jobs/:id/candidates router.post('/jobs/:id/candidates', auth_1.requireAuth, async (req, res) => { try { const candidate = await prisma_1.default.candidate.create({ data: { ...req.body, jobId: req.params.id, currentStage: 'APPLIED' }, }); return res.status(201).json(candidate); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // PATCH /recruitment/candidates/:id/stage router.patch('/candidates/:id/stage', auth_1.requireAuth, async (req, res) => { try { const candidate = await prisma_1.default.candidate.update({ where: { id: req.params.id }, data: { currentStage: req.body.stage, notes: req.body.notes }, }); return res.json(candidate); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // POST /recruitment/candidates/:id/interviews router.post('/candidates/:id/interviews', auth_1.requireAuth, async (req, res) => { try { const interview = await prisma_1.default.interviewRound.create({ data: { ...req.body, candidateId: req.params.id }, }); return res.status(201).json(interview); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); exports.default = router; //# sourceMappingURL=recruitment.js.map