124 lines
4.3 KiB
JavaScript
124 lines
4.3 KiB
JavaScript
"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
|