import { Router } from 'express';
import {
  getPublicGateways,
  getAdminGateways,
  createGatewayConfig,
  updateGatewayConfig,
  deleteGateway,
  toggleGateway,
  testGatewayConnection,
} from '../controllers/gateway-config.controller';
import { authenticateJWT } from '../../../middleware/auth.middleware';
import { authorizeRoles } from '../../../middleware/rbac.middleware';

const router = Router();

// 1. Public list (checkout selector query)
router.get('/payment-gateways', getPublicGateways);

// 2. Admin operations (authenticated as Admin only)
router.get('/admin/payment-gateways', authenticateJWT, authorizeRoles('ADMIN'), getAdminGateways);
router.post('/admin/payment-gateways', authenticateJWT, authorizeRoles('ADMIN'), createGatewayConfig);
router.put('/admin/payment-gateways/:id', authenticateJWT, authorizeRoles('ADMIN'), updateGatewayConfig);
router.delete('/admin/payment-gateways/:id', authenticateJWT, authorizeRoles('ADMIN'), deleteGateway);
router.post('/admin/payment-gateways/:id/toggle', authenticateJWT, authorizeRoles('ADMIN'), toggleGateway);
router.post('/admin/payment-gateways/:id/test-connection', authenticateJWT, authorizeRoles('ADMIN'), testGatewayConnection);

export default router;
