import express, { Router } from 'express';
import * as invoiceSettingsValidation from './invoiceSettings.validation';
import * as invoiceSettingsController from './invoiceSettings.controller';
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';
import { MODULE_LIST } from '@/shared/constants/module.constant';
import { ACTIONS } from '@/shared/constants';

const router: Router = express.Router();

router
  .route('/')
  .get(
    userAuthAndCheckPermissions(MODULE_LIST.COMPANY, ACTIONS.READ),
    validate(invoiceSettingsValidation.getInvoiceSettings),
    invoiceSettingsController.getInvoiceSettings,
  )
  .post(
    userAuthAndCheckPermissions(MODULE_LIST.COMPANY, ACTIONS.CREATE),
    validate(invoiceSettingsValidation.upsertInvoiceSettings()),
    //TODO: manage for createdBy also
    setAuditFields({ mode: AuditMode.UPDATE, companyField: 'company' }),
    invoiceSettingsController.upsertInvoiceSettings,
  );

export default router;
