/** * Submissions Routes * API endpoints for submission tracking */ const express = require('express'); const router = express.Router(); const submissionsController = require('../controllers/submissions.controller'); const { authenticateToken, requireAdmin } = require('../middleware/auth.middleware'); // All submission routes require admin authentication router.use(authenticateToken); router.use(requireAdmin); /** * POST /api/submissions * Create new submission tracking entry */ router.post('/', submissionsController.createSubmission); /** * GET /api/submissions * Get all submissions with optional filtering * Query params: status, publicationId, limit, offset */ router.get('/', submissionsController.getSubmissions); /** * GET /api/submissions/statistics * Get submission statistics (must be before /:id route) */ router.get('/statistics', submissionsController.getSubmissionStatistics); /** * GET /api/submissions/publication/:publicationId * Get submissions for specific publication */ router.get('/publication/:publicationId', submissionsController.getSubmissionsByPublication); /** * GET /api/submissions/by-blog-post/:blogPostId * Get submission by blog post ID */ router.get('/by-blog-post/:blogPostId', submissionsController.getSubmissionByBlogPost); /** * POST /api/submissions/:id/translate * Translate document using DeepL */ router.post('/:id/translate', submissionsController.translateDocument); /** * GET /api/submissions/:id/export * Export submission package */ router.get('/:id/export', submissionsController.exportSubmission); /** * GET /api/submissions/:id * Get specific submission by ID */ router.get('/:id', submissionsController.getSubmissionById); /** * PUT /api/submissions/:id * Update submission entry */ router.put('/:id', submissionsController.updateSubmission); /** * PUT /api/submissions/:id/status * Update submission status */ router.put('/:id/status', submissionsController.updateSubmissionStatus); /** * POST /api/submissions/:id/notes * Add note to submission */ router.post('/:id/notes', submissionsController.addSubmissionNote); /** * DELETE /api/submissions/:id * Delete submission tracking entry */ router.delete('/:id', submissionsController.deleteSubmission); module.exports = router;