import express, { Router } from 'express';

import * as makanifySitesValidation from '@/modules/makanifySites/makanifySites.validation';
import * as makanifyWebsiteController from '@/modules/makanifySites/makanifySites.controller';

import { validateMiddleware } from '@/shared/utils/middlewares/index';
import userAuthAndCheckPermissions from '@/modules/auth/auth.user.middleware';
import { setAuditFields } from '@/shared/middleware/setAuditFields';
import { AuditMode } from '@/shared/constants/enum.constant';
import {
  fetchMakanifySites,
  makanifyExtract,
} from '@/shared/utils/middlewares/makanifySites.middleware';
const router: Router = express.Router();

router
  .route('/')
  .put(
    userAuthAndCheckPermissions(),
    validateMiddleware(makanifySitesValidation.createMakanifySites(true)),
    setAuditFields({ mode: AuditMode.CREATE, companyField: 'company' }),
    makanifyWebsiteController.createSite,
  );

router
  .route('/homepage')
  .get(makanifyExtract, makanifyWebsiteController.fetchHomepage);

router
  .route('/fetchSite')
  .get(
    userAuthAndCheckPermissions(),
    fetchMakanifySites,
    makanifyWebsiteController.fetchSite,
  );
router
  .route('/listings')
  .get(makanifyExtract, makanifyWebsiteController.fetchListings);

router.get(
  '/isSiteCreated',
  validateMiddleware(makanifySitesValidation.isSiteCreated()),
  makanifyWebsiteController.isSiteCreated,
);

router
  .route('/filters')
  .get(makanifyExtract, makanifyWebsiteController.fetchFilters);

router
  .route('/inquiry')
  .post(
    makanifyExtract,
    validateMiddleware(makanifySitesValidation.createMakanifyLead()),
    makanifyWebsiteController.createLead,
  );

export default router;
