import express, { Router } from 'express';

import * as pushNotificationController from './pushNotification.controller';
import * as pushNotificationValidation from './pushNotification.validation';

import userAuthAndCheckPermissions from '@/modules/auth/auth.user.middleware';
import validate from '@/shared/utils/middlewares/validate.middleware';
import { setAuditFields } from '@/shared/middleware/setAuditFields';
import { AuditMode } from '@/shared/constants/enum.constant';

const router: Router = express.Router();

router
  .route('/bulk-update')
  .patch(
    userAuthAndCheckPermissions(),
    validate(pushNotificationValidation.bulkUpdatePushNotifications()),
    setAuditFields({ mode: AuditMode.UPDATE }),
    pushNotificationController.bulkUpdatePushNotifications,
  );

router
  .route('/')
  .get(
    userAuthAndCheckPermissions(),
    validate(pushNotificationValidation.getPushNotifications),
    pushNotificationController.getPushNotifications,
  );
router
  .route('/:id')
  .patch(
    userAuthAndCheckPermissions(),
    validate(pushNotificationValidation.updatePushNotification()),
    setAuditFields({ mode: AuditMode.UPDATE }),
    pushNotificationController.updatePushNotification,
  );

export default router;
