import express, { Router } from 'express';

import * as contactsController from '@/modules/contacts/contacts.controller';
import userAuthAndCheckPermissions from '../auth/auth.user.middleware';
import { AuditMode } from '@/shared/constants/enum.constant';
import { setAuditFields } from '@/shared/middleware/setAuditFields';

const router: Router = express.Router();

router
  .route('/')
  .get(userAuthAndCheckPermissions(), contactsController.getContacts)
  .post(
    userAuthAndCheckPermissions(),
    setAuditFields({ mode: AuditMode.CREATE, companyField: 'company' }),
    contactsController.createContact,
  );

router
  .route('/export')
  .get(userAuthAndCheckPermissions(), contactsController.exportContacts);

router
  .route('/:id')
  .get(userAuthAndCheckPermissions(), contactsController.getContactById)
  .patch(
    userAuthAndCheckPermissions(),
    // validateMiddleware(roleValidation.updateRole()),
    setAuditFields({ mode: AuditMode.UPDATE }),
    contactsController.updateContact,
  )
  .delete(
    userAuthAndCheckPermissions(),
    // validateMiddleware(roleValidation.deleteRoleById),
    contactsController.deleteContactById,
  );

router
  .route('/:id/referenceContact')
  .get(userAuthAndCheckPermissions(), contactsController.checkIfRefContact);

export default router;
