import cron from 'node-cron'; import { logger } from '../../utils/logger'; import { syncInvoicesService } from './bills.service'; import { syncUnitsDataFromUrlService } from './units.service'; import { syncWorkOrderDataFromJsonService } from './workorder.service'; import { syncVendorsFromJsonService } from './vendors.service'; import { syncGlAccountsFromJsonService } from './glaccounts.service'; const CRON_SCHEDULE = process.env.CRON_SCHEDULE || '0 0 * * *'; const SYNC_INVOICES = process.env.SYNC_INVOICES; export const setupCronJobs = () => { cron.schedule(CRON_SCHEDULE, async () => { logger.info('Running scheduled propertyware sync job'); try { /* NOTE: disabled below crons because currently property sync is not done from PW apis * but it fetches data from url in json format and syncing all the portfolios, buildings and units. * Reason: PW api were not giving all the portfolios in their api and we were not getting any response from support team. * So to have things in working we have implemented this approach as client suggested */ // await syncPortfolioDataService(); // logger.info('Scheduled portfolio sync completed successfully'); // await syncBuildingsDataService(); // logger.info('Scheduled buildings sync completed successfully'); // await syncUnitsDataService(); // logger.info('Scheduled units sync completed successfully'); // New cron to sync all properties data using json data fetched from url await syncUnitsDataFromUrlService(); logger.info('Scheduled properties sync completed successfully'); await syncWorkOrderDataFromJsonService(); logger.info('Scheduled work order sync completed successfully'); await syncVendorsFromJsonService(); logger.info('Scheduled vendor sync completed successfully'); await syncGlAccountsFromJsonService(); logger.info('Scheduled Gl Accounts sync completed successfully'); if (SYNC_INVOICES === "true") { await syncInvoicesService(); logger.info('Scheduled invoices sync completed successfully'); } } catch (error) { logger.error('Error in scheduled portfolio sync:', error); } }); logger.info('Cron job for propertyware sync has been scheduled'); };