/** * Maps module names between backend and n8n workflow */ class N8nMapper { /** * Map Zoho module names */ static mapZohoModule(service, module) { const moduleMap = { crm: { leads: 'leads', contacts: 'contacts', accounts: 'accounts', deals: 'deals', tasks: 'tasks', purchase_orders: 'purchase_orders', sales_orders: 'sales_orders', invoices: 'invoices' }, books: { organizations: 'organizations', contacts: 'contacts', customers: 'customers', vendors: 'vendors', accounts: 'accounts', purchase_orders: 'purchase_orders', sales_orders: 'sales_orders', invoices: 'invoices', bills: 'bills', expenses: 'expenses' }, people: { employees: 'employees', departments: 'departments', timesheets: 'timesheets', leaves: 'leaves', attendence: 'attendence', attendence_entries: 'attendence_entries', attendence_report: 'attendence_report', leave_tracker: 'leave_tracker', leaves_data: 'leaves_data', goals_data: 'goals_data', performance_data: 'performance_data' }, projects: { portals: 'portals', projects: 'projects', tasks: 'tasks', all_tasks: 'all_tasks', tasklists: 'tasklists', all_tasklists: 'all_tasklists', issues: 'issues', phases: 'phases' } }; return moduleMap[service]?.[module] || module; } /** * Map Salesforce module names */ static mapSalesforceModule(service, module) { const moduleMap = { crm: { leads: 'leads', accounts: 'accounts', tasks: 'tasks', opportunities: 'opportunities', events: 'events', reports: 'reports' } }; return moduleMap[service]?.[module] || module; } /** * Get supported modules for a provider and service */ static getSupportedModules(provider, service) { const modules = { zoho: { crm: ['leads', 'contacts', 'accounts', 'deals', 'tasks', 'purchase_orders', 'sales_orders', 'invoices'], books: ['organizations', 'contacts', 'customers', 'vendors', 'accounts', 'purchase_orders', 'sales_orders', 'invoices', 'bills', 'expenses'], people: ['employees', 'departments', 'timesheets', 'leaves', 'attendence', 'attendence_entries', 'attendence_report', 'leave_tracker', 'leaves_data', 'goals_data', 'performance_data'], projects: ['portals', 'projects', 'tasks', 'all_tasks', 'tasklists', 'all_tasklists', 'issues', 'phases'] }, salesforce: { crm: ['leads', 'accounts', 'tasks', 'opportunities', 'events', 'reports'] }, intuit: { // Add QuickBooks modules when implemented } }; return modules[provider]?.[service] || []; } /** * Validate if provider, service, and module combination is supported */ static isSupported(provider, service, module) { const supportedModules = this.getSupportedModules(provider, service); return supportedModules.includes(module); } } module.exports = N8nMapper;