File size: 1,279 Bytes
f0447ab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { Router } from 'express';
import { requireAuth, requireRole, AuthRequest } from '../auth/middleware';

const router = Router();

router.use(requireAuth);

router.get('/prioritized', async (req: AuthRequest, res) => {
  // TODO: query tasks for user/org, order by AI priority score
  res.json({
    data: {
      tasks: [],
      meta: { next_cursor: null, has_more: false },
    },
  });
});

router.get('/', async (req: AuthRequest, res) => {
  const { status, assignee_id, cursor } = req.query;
  // TODO: paginated task list
  res.json({ data: { tasks: [], meta: { next_cursor: null, has_more: false } } });
});

router.post('/', requireRole('admin', 'recruiter'), async (req: AuthRequest, res) => {
  const { title, type, assignee_id, related_application_id, due_date } = req.body;
  // TODO: insert task, optionally trigger AI priority scoring
  const task = {
    id: 'task-' + Date.now(),
    title,
    type,
    priority: 50,
    status: 'pending',
    assignee_id,
    created_by: req.user!.id,
  };
  res.status(201).json({ data: task });
});

router.patch('/:id/status', async (req: AuthRequest, res) => {
  const { status } = req.body;
  // TODO: update task status
  res.json({ data: { id: req.params.id, status } });
});

export { router as tasksRouter };