/** * Relationships Routes * API endpoints for publication relationship CRM */ const express = require('express'); const router = express.Router(); const relationshipsController = require('../controllers/relationships.controller'); const { authenticateToken, requireAdmin } = require('../middleware/auth.middleware'); // All relationship routes require admin authentication router.use(authenticateToken); router.use(requireAdmin); /** * POST /api/relationships * Create new relationship */ router.post('/', relationshipsController.createRelationship); /** * GET /api/relationships * Get all relationships with optional filtering * Query params: stage, priorities, minQuality */ router.get('/', relationshipsController.getRelationships); /** * GET /api/relationships/summary * Get CRM summary statistics (must be before /:publicationId route) */ router.get('/summary', relationshipsController.getCRMSummary); /** * GET /api/relationships/:publicationId * Get specific relationship */ router.get('/:publicationId', relationshipsController.getRelationship); /** * PUT /api/relationships/:publicationId * Update relationship */ router.put('/:publicationId', relationshipsController.updateRelationship); /** * POST /api/relationships/:publicationId/sync * Sync relationship statistics from submission data */ router.post('/:publicationId/sync', relationshipsController.syncRelationshipStats); /** * POST /api/relationships/:publicationId/editors * Add or update editor contact */ router.post('/:publicationId/editors', relationshipsController.addEditor); /** * POST /api/relationships/:publicationId/interactions * Add interaction record */ router.post('/:publicationId/interactions', relationshipsController.addInteraction); /** * DELETE /api/relationships/:publicationId * Delete relationship */ router.delete('/:publicationId', relationshipsController.deleteRelationship); module.exports = router;