104 lines
3.6 KiB
JavaScript
104 lines
3.6 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 /engagement/announcements
|
|
router.get('/announcements', auth_1.requireAuth, async (req, res) => {
|
|
try {
|
|
const announcements = await prisma_1.default.announcement.findMany({
|
|
where: { companyId: req.user.companyId },
|
|
orderBy: [{ isPinned: 'desc' }, { publishedAt: 'desc' }],
|
|
take: 20,
|
|
});
|
|
return res.json(announcements);
|
|
}
|
|
catch (err) {
|
|
return res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
// POST /engagement/announcements
|
|
router.post('/announcements', auth_1.requireAuth, async (req, res) => {
|
|
try {
|
|
const announcement = await prisma_1.default.announcement.create({
|
|
data: {
|
|
...req.body,
|
|
companyId: req.user.companyId,
|
|
authorId: req.user.employeeId,
|
|
},
|
|
});
|
|
return res.status(201).json(announcement);
|
|
}
|
|
catch (err) {
|
|
return res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
// GET /engagement/recognition
|
|
router.get('/recognition', auth_1.requireAuth, async (req, res) => {
|
|
try {
|
|
const recognitions = await prisma_1.default.recognition.findMany({
|
|
where: { isPublic: true },
|
|
include: {
|
|
giver: { select: { firstName: true, lastName: true, department: { select: { name: true } } } },
|
|
receiver: { select: { firstName: true, lastName: true } },
|
|
},
|
|
orderBy: { createdAt: 'desc' },
|
|
take: 20,
|
|
});
|
|
return res.json(recognitions);
|
|
}
|
|
catch (err) {
|
|
return res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
// POST /engagement/recognition
|
|
router.post('/recognition', auth_1.requireAuth, async (req, res) => {
|
|
try {
|
|
const employeeId = req.user.employeeId;
|
|
if (!employeeId)
|
|
return res.status(400).json({ error: 'Employee not found' });
|
|
const recognition = await prisma_1.default.recognition.create({
|
|
data: {
|
|
...req.body,
|
|
giverId: employeeId,
|
|
companyId: req.user.companyId,
|
|
},
|
|
});
|
|
return res.status(201).json(recognition);
|
|
}
|
|
catch (err) {
|
|
return res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
// GET /engagement/surveys
|
|
router.get('/surveys', auth_1.requireAuth, async (req, res) => {
|
|
try {
|
|
const surveys = await prisma_1.default.survey.findMany({
|
|
where: { companyId: req.user.companyId },
|
|
include: { _count: { select: { responses: true } } },
|
|
orderBy: { createdAt: 'desc' },
|
|
});
|
|
return res.json(surveys);
|
|
}
|
|
catch (err) {
|
|
return res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
// POST /engagement/surveys
|
|
router.post('/surveys', auth_1.requireAuth, async (req, res) => {
|
|
try {
|
|
const survey = await prisma_1.default.survey.create({
|
|
data: { ...req.body, companyId: req.user.companyId },
|
|
});
|
|
return res.status(201).json(survey);
|
|
}
|
|
catch (err) {
|
|
return res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
exports.default = router;
|
|
//# sourceMappingURL=engagement.js.map
|