102 lines
2.7 KiB
JavaScript
102 lines
2.7 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { verifyToken } = require('../middleware/auth');
|
|
const Activity = require('../models/Activity');
|
|
const User = require('../models/User');
|
|
|
|
// Получить последние активности компании
|
|
router.get('/', verifyToken, async (req, res) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const user = await User.findById(userId);
|
|
|
|
if (!user || !user.companyId) {
|
|
return res.json({ activities: [] });
|
|
}
|
|
|
|
const companyId = user.companyId.toString();
|
|
const limit = parseInt(req.query.limit) || 10;
|
|
|
|
const activities = await Activity.find({ companyId })
|
|
.sort({ createdAt: -1 })
|
|
.limit(limit)
|
|
.lean();
|
|
|
|
res.json({ activities });
|
|
} catch (error) {
|
|
console.error('Error getting activities:', error);
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
});
|
|
|
|
// Отметить активность как прочитанную
|
|
router.patch('/:id/read', verifyToken, async (req, res) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const user = await User.findById(userId);
|
|
|
|
if (!user || !user.companyId) {
|
|
return res.status(403).json({ error: 'Access denied' });
|
|
}
|
|
|
|
const companyId = user.companyId.toString();
|
|
const activityId = req.params.id;
|
|
|
|
const activity = await Activity.findOne({
|
|
_id: activityId,
|
|
companyId
|
|
});
|
|
|
|
if (!activity) {
|
|
return res.status(404).json({ error: 'Activity not found' });
|
|
}
|
|
|
|
activity.read = true;
|
|
await activity.save();
|
|
|
|
res.json({ success: true, activity });
|
|
} catch (error) {
|
|
console.error('Error updating activity:', error);
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
});
|
|
|
|
// Отметить все активности как прочитанные
|
|
router.post('/mark-all-read', verifyToken, async (req, res) => {
|
|
try {
|
|
const userId = req.userId;
|
|
const user = await User.findById(userId);
|
|
|
|
if (!user || !user.companyId) {
|
|
return res.status(403).json({ error: 'Access denied' });
|
|
}
|
|
|
|
const companyId = user.companyId.toString();
|
|
|
|
await Activity.updateMany(
|
|
{ companyId, read: false },
|
|
{ $set: { read: true } }
|
|
);
|
|
|
|
res.json({ success: true });
|
|
} catch (error) {
|
|
console.error('Error marking all as read:', error);
|
|
res.status(500).json({ error: error.message });
|
|
}
|
|
});
|
|
|
|
// Создать активность (вспомогательная функция)
|
|
router.createActivity = async (data) => {
|
|
try {
|
|
const activity = new Activity(data);
|
|
await activity.save();
|
|
return activity;
|
|
} catch (error) {
|
|
console.error('Error creating activity:', error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
module.exports = router;
|
|
|