import { Router } from 'express';
import { syncController } from '../controllers/sync.controller';
import { authenticate, hasPermission } from '../middlewares/auth.middleware';
import { validate } from '../middlewares/validation.middleware';
import { syncValidators } from '../validators/sync.validator';
import authConfig from '../../config/auth';
import { syncLimiter } from '../middlewares/rate-limiter.middleware';

// Create router
const router = Router();

// Sync routes with authentication
router.post(
  '/sales',
  authenticate,
  hasPermission([authConfig.permissions.syncData]),
  syncLimiter,
  validate(syncValidators.syncSales),
  syncController.syncSales.bind(syncController)
);

router.get(
  '/status/:syncId',
  authenticate,
  hasPermission([authConfig.permissions.syncData]),
  validate(syncValidators.getSyncStatus),
  syncController.getSyncStatus.bind(syncController)
);

router.get(
  '/history/:posId',
  authenticate,
  hasPermission([authConfig.permissions.syncData]),
  validate(syncValidators.getSyncHistory),
  syncController.getSyncHistory.bind(syncController)
);

export default router;
