const express = require('express');
const router = express.Router();
const adminController = require('../controllers/adminController');
const { protect } = require('../middleware/authMiddleware');
const adminMiddleware = require('../middleware/adminMiddleware');
const {
  getAllReports,
  getReportById,
  updateReportStatus,
  getReportsStats
} = require('../controllers/reportController');
const {
  blockDevice,
  unblockDeviceAdmin,
  getBlockedDevicesList,
  getBlockedDeviceDetails
} = require('../controllers/deviceSecurityController');

// Все маршруты защищены middleware для проверки авторизации и прав администратора
router.use(protect, adminMiddleware);

// Маршруты для управления пользователями
router.get('/users', adminController.getAllUsers);
router.get('/users/:id', adminController.getUserDetails);
router.put('/users/:id/toggle-active', adminController.toggleUserActive);

// Маршруты для просмотра статистики
router.get('/statistics', adminController.getAppStatistics);

// Маршруты для управления жалобами
router.get('/reports', getAllReports);
router.get('/reports/stats', getReportsStats);
router.get('/reports/:id', getReportById);
router.put('/reports/:id', updateReportStatus);

// Маршруты для просмотра диалогов и сообщений
router.get('/conversations', adminController.getAllConversations);
router.get('/conversations/:id', adminController.getConversationById); // Новый маршрут для получения диалога по ID
router.get('/conversations/:id/messages', adminController.getConversationMessages);

// Маршруты для управления блокировками устройств
router.get('/blocked-devices', getBlockedDevicesList);
router.get('/blocked-devices/:id', getBlockedDeviceDetails);
router.post('/block-device', blockDevice);
router.post('/unblock-device', unblockDeviceAdmin);

module.exports = router;