Centralized_Reporting_Backend/src/integrations/n8n/mapper.js
2025-10-10 12:10:33 +05:30

111 lines
3.1 KiB
JavaScript

/**
* 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;