const express = require('express'); const router = express.Router(); const authMiddleware = require('../middleware/authMiddleware'); const DocumentTemplateController = require('../controller/documentTemplate/DocumentTemplateController'); const CompanyStampController = require('../controller/companyStamp/CompanyStampController'); // <-- added const CoffeeController = require('../controller/admin/CoffeeController'); const AdminUserController = require('../controller/admin/AdminUserController'); const PersonalProfileController = require('../controller/profile/PersonalProfileController'); // <-- add const PoolController = require('../controller/pool/PoolController'); // <-- new const MatrixController = require('../controller/matrix/MatrixController'); // <-- new // Helper middlewares for company-stamp function adminOnly(req, res, next) { if (!req.user || !['admin','super_admin'].includes(req.user.role)) { return res.status(403).json({ error: 'Admin role required' }); } next(); } function forceCompanyForAdmin(req, res, next) { if (req.user && ['admin','super_admin'].includes(req.user.role) && req.user.user_type !== 'company') { req.user.user_type = 'company'; } next(); } // PATCH /document-templates/:id/state (existing) router.patch('/document-templates/:id/state', authMiddleware, DocumentTemplateController.updateTemplateState); // Company-stamp PATCH (activate) router.patch('/company-stamps/:id/activate', authMiddleware, adminOnly, forceCompanyForAdmin, CompanyStampController.activate); // Admin user management PATCH routes router.patch('/admin/archive-user/:id', authMiddleware, adminOnly, AdminUserController.archiveUser); router.patch('/admin/unarchive-user/:id', authMiddleware, adminOnly, AdminUserController.unarchiveUser); router.patch('/admin/update-verification/:id', authMiddleware, adminOnly, AdminUserController.updateUserVerification); router.patch('/admin/update-user-profile/:id', authMiddleware, adminOnly, AdminUserController.updateUserProfile); router.patch('/admin/update-user-status/:id', authMiddleware, adminOnly, AdminUserController.updateUserStatus); // Admin: set state for coffee product router.patch('/admin/coffee/:id/state', authMiddleware, adminOnly, CoffeeController.setState); // NEW: Admin pool state update router.patch('/admin/pools/:id/state', authMiddleware, adminOnly, PoolController.updateState); // NEW: deactivate a matrix instance (admin-only) router.patch('/admin/matrix/:id/deactivate', authMiddleware, adminOnly, MatrixController.deactivate); // NEW: activate a matrix instance (admin-only) router.patch('/admin/matrix/:id/activate', authMiddleware, adminOnly, MatrixController.activate); // Personal profile (self-service) - no admin guard router.patch('/profile/personal/basic', authMiddleware, PersonalProfileController.updateBasic); router.patch('/profile/personal/bank', authMiddleware, PersonalProfileController.updateBank); // Add other PATCH routes here as needed module.exports = router;