import { Router } from 'express'; import { warehousesController } from './warehouses.controller.js'; import { authenticate, requireRoles } from '../../shared/middleware/auth.middleware.js'; const router = Router(); // All routes require authentication router.use(authenticate); // ========== LOCATIONS (before :id routes to avoid conflicts) ========== // List all locations router.get('/locations', (req, res, next) => warehousesController.findAllLocations(req, res, next)); // Get location by ID router.get('/locations/:id', (req, res, next) => warehousesController.findLocationById(req, res, next)); // Create location router.post('/locations', requireRoles('admin', 'manager', 'inventory', 'super_admin'), (req, res, next) => warehousesController.createLocation(req, res, next) ); // Update location router.patch('/locations/:id', requireRoles('admin', 'manager', 'inventory', 'super_admin'), (req, res, next) => warehousesController.updateLocation(req, res, next) ); // Delete location router.delete('/locations/:id', requireRoles('admin', 'super_admin'), (req, res, next) => warehousesController.deleteLocation(req, res, next) ); // ========== CONVENIENCE ROUTES ========== // Get default warehouse router.get('/default', (req, res, next) => warehousesController.getDefault(req, res, next)); // Get active warehouses router.get('/active', (req, res, next) => warehousesController.getActive(req, res, next)); // Get warehouse by code router.get('/code/:code', (req, res, next) => warehousesController.findByCode(req, res, next)); // Get locations for a specific warehouse router.get('/:warehouseId/locations', (req, res, next) => warehousesController.getWarehouseLocations(req, res, next)); // ========== WAREHOUSES ========== // List warehouses router.get('/', (req, res, next) => warehousesController.findAll(req, res, next)); // Get warehouse by ID router.get('/:id', (req, res, next) => warehousesController.findById(req, res, next)); // Create warehouse router.post('/', requireRoles('admin', 'manager', 'super_admin'), (req, res, next) => warehousesController.create(req, res, next) ); // Update warehouse router.patch('/:id', requireRoles('admin', 'manager', 'super_admin'), (req, res, next) => warehousesController.update(req, res, next) ); // Delete warehouse router.delete('/:id', requireRoles('admin', 'super_admin'), (req, res, next) => warehousesController.delete(req, res, next) ); export default router;