111 lines
3.1 KiB
JavaScript
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;
|
|
|