r
This commit is contained in:
69
server.js
69
server.js
@@ -8,7 +8,7 @@ require('dotenv').config();
|
||||
|
||||
const { db, logActivity, createUserTaskFolder, saveTaskMetadata, updateTaskMetadata, checkTaskAccess } = require('./database');
|
||||
const authService = require('./auth');
|
||||
const adminRouter = require('./admin-server');
|
||||
const adminRouter = require('./admin-server');
|
||||
|
||||
const app = express();
|
||||
const PORT = process.env.PORT || 3000;
|
||||
@@ -649,6 +649,71 @@ app.get('/api/tasks', requireAuth, (req, res) => {
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/api/tasks/no-date', requireAuth, (req, res) => {
|
||||
const userId = req.session.user.id;
|
||||
|
||||
const query = `
|
||||
SELECT DISTINCT
|
||||
t.*,
|
||||
u.name as creator_name,
|
||||
u.login as creator_login,
|
||||
ot.title as original_task_title,
|
||||
ou.name as original_creator_name,
|
||||
GROUP_CONCAT(DISTINCT ta.user_id) as assigned_user_ids,
|
||||
GROUP_CONCAT(DISTINCT u2.name) as assigned_user_names
|
||||
FROM tasks t
|
||||
LEFT JOIN users u ON t.created_by = u.id
|
||||
LEFT JOIN tasks ot ON t.original_task_id = ot.id
|
||||
LEFT JOIN users ou ON ot.created_by = ou.id
|
||||
LEFT JOIN task_assignments ta ON t.id = ta.task_id
|
||||
LEFT JOIN users u2 ON ta.user_id = u2.id
|
||||
WHERE t.status = 'active'
|
||||
AND t.closed_at IS NULL
|
||||
AND (t.due_date IS NULL OR t.due_date = '')
|
||||
AND (ta.due_date IS NULL OR ta.due_date = '')
|
||||
`;
|
||||
|
||||
const params = [];
|
||||
|
||||
if (req.session.user.role !== 'admin') {
|
||||
query += ` AND (t.created_by = ? OR ta.user_id = ?)`;
|
||||
params.push(userId, userId);
|
||||
}
|
||||
|
||||
query += " GROUP BY t.id ORDER BY t.created_at DESC";
|
||||
|
||||
db.all(query, params, (err, tasks) => {
|
||||
if (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
return;
|
||||
}
|
||||
|
||||
const taskPromises = tasks.map(task => {
|
||||
return new Promise((resolve) => {
|
||||
db.all(`
|
||||
SELECT ta.*, u.name as user_name, u.login as user_login
|
||||
FROM task_assignments ta
|
||||
LEFT JOIN users u ON ta.user_id = u.id
|
||||
WHERE ta.task_id = ?
|
||||
`, [task.id], (err, assignments) => {
|
||||
if (err) {
|
||||
task.assignments = [];
|
||||
resolve(task);
|
||||
return;
|
||||
}
|
||||
|
||||
task.assignments = assignments || [];
|
||||
resolve(task);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Promise.all(taskPromises).then(completedTasks => {
|
||||
res.json(completedTasks);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
app.post('/api/tasks', requireAuth, upload.array('files', 15), (req, res) => {
|
||||
const { title, description, assignedUsers, originalTaskId, dueDate } = req.body;
|
||||
const createdBy = req.session.user.id;
|
||||
@@ -1299,12 +1364,14 @@ app.get('/api/activity-logs', requireAuth, (req, res) => {
|
||||
res.json(logs);
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/admin', (req, res) => {
|
||||
if (!req.session.user || req.session.user.role !== 'admin') {
|
||||
return res.status(403).send('Доступ запрещен');
|
||||
}
|
||||
res.sendFile(path.join(__dirname, 'public/admin.html'));
|
||||
});
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`CRM сервер запущен на порту ${PORT}`);
|
||||
console.log(`Откройте http://localhost:${PORT} в браузере`);
|
||||
|
||||
Reference in New Issue
Block a user