"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 /performance/cycles router.get('/cycles', auth_1.requireAuth, async (req, res) => { try { const cycles = await prisma_1.default.reviewCycle.findMany({ where: { companyId: req.user.companyId }, include: { _count: { select: { reviews: true } } }, orderBy: { createdAt: 'desc' }, }); return res.json(cycles); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // POST /performance/cycles router.post('/cycles', auth_1.requireAuth, async (req, res) => { try { const cycle = await prisma_1.default.reviewCycle.create({ data: { ...req.body, companyId: req.user.companyId }, }); return res.status(201).json(cycle); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // GET /performance/cycles/:id/reviews router.get('/cycles/:id/reviews', auth_1.requireAuth, async (req, res) => { try { const reviews = await prisma_1.default.performanceReview.findMany({ where: { cycleId: req.params.id }, include: { reviewee: { select: { firstName: true, lastName: true } }, reviewer: { select: { firstName: true, lastName: true } }, }, }); return res.json(reviews); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // PATCH /performance/reviews/:id router.patch('/reviews/:id', auth_1.requireAuth, async (req, res) => { try { const review = await prisma_1.default.performanceReview.update({ where: { id: req.params.id }, data: { ...req.body, submittedAt: new Date(), status: 'SUBMITTED' }, }); return res.json(review); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // GET /performance/goals router.get('/goals', auth_1.requireAuth, async (req, res) => { try { const employeeId = req.user.employeeId; if (!employeeId) return res.json([]); const goals = await prisma_1.default.goal.findMany({ where: { employeeId }, orderBy: { createdAt: 'desc' }, }); return res.json(goals); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // POST /performance/goals router.post('/goals', auth_1.requireAuth, async (req, res) => { try { const employeeId = req.user.employeeId; if (!employeeId) return res.status(400).json({ error: 'Employee not found' }); const goal = await prisma_1.default.goal.create({ data: { ...req.body, employeeId }, }); return res.status(201).json(goal); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // PATCH /performance/goals/:id router.patch('/goals/:id', auth_1.requireAuth, async (req, res) => { try { const goal = await prisma_1.default.goal.update({ where: { id: req.params.id }, data: req.body }); return res.json(goal); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); // GET /performance/feedback router.get('/feedback', auth_1.requireAuth, async (req, res) => { try { const employeeId = req.user.employeeId; if (!employeeId) return res.json([]); const feedback = await prisma_1.default.feedback.findMany({ where: { receiverId: employeeId }, include: { giver: { select: { firstName: true, lastName: true } } }, orderBy: { createdAt: 'desc' }, }); return res.json(feedback); } catch (err) { return res.status(500).json({ error: 'Internal server error' }); } }); exports.default = router; //# sourceMappingURL=performance.js.map