/** * Copyright (c) 2026 Niolla * All rights reserved. * * This source code is proprietary and confidential. * Unauthorized copying, modification, distribution, or use * of this file, via any medium, is strictly prohibited. */ // app/routes/document.routes.js const express = require("express"); const router = express.Router(); const generateDocumentController = require("../controllers/generateDocument.controller"); const { authenticate, } = require("../middleware/auth.middleware"); const { authorizedAccountType, checkPermission } = require("../middleware/permission.middleware"); const PERMISSIONS = require("../constants/permissions"); // Get available document types router.get( "/types", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.getAvailableDocumentTypes ); // Get saved documents router.post( "/saved", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.getSavedDocuments ); // Generate Document (async - returns jobId immediately) router.post( "/generate", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.generateDocument ); router.post( "/draft", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.generateDraftDocument ); // Generate Reference Number router.get( "/reference-number/:documentType", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.generateReferenceNo ); // Get Job Status router.get( "/job/:jobId/status", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.getJobStatus ); // Download Document router.get( "/download/:uuid", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.downloadDocument ); // Cancel Job router.delete( "/job/:jobId", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.cancelJob ); // Get document details router.get( "/:docId", authenticate, authorizedAccountType(["admin", "management", "team_head", "user"]), generateDocumentController.getDocumentData ); module.exports = router;