import { Router } from 'express';
import fahrzeugTypController from '../controllers/fahrzeugTyp.controller';
import { authenticate } from '../middleware/auth.middleware';
import { requirePermission } from '../middleware/rbac.middleware';

const router = Router();

// List all vehicle types
router.get(
  '/',
  authenticate,
  fahrzeugTypController.getAll.bind(fahrzeugTypController)
);

// Get single vehicle type
router.get(
  '/:id',
  authenticate,
  fahrzeugTypController.getById.bind(fahrzeugTypController)
);

// CRUD — admin-only
router.post(
  '/',
  authenticate,
  requirePermission('checklisten:manage_templates'),
  fahrzeugTypController.create.bind(fahrzeugTypController)
);

router.patch(
  '/:id',
  authenticate,
  requirePermission('checklisten:manage_templates'),
  fahrzeugTypController.update.bind(fahrzeugTypController)
);

router.delete(
  '/:id',
  authenticate,
  requirePermission('checklisten:manage_templates'),
  fahrzeugTypController.delete.bind(fahrzeugTypController)
);

// Vehicle-specific type management
router.get(
  '/vehicle/:fahrzeugId',
  authenticate,
  fahrzeugTypController.getTypesForVehicle.bind(fahrzeugTypController)
);

router.put(
  '/vehicle/:fahrzeugId',
  authenticate,
  requirePermission('checklisten:manage_templates'),
  fahrzeugTypController.setTypesForVehicle.bind(fahrzeugTypController)
);

export default router;
