UNPKG

@dispatch9/client-sdk

Version:

Official Node.js SDK for Dispatch9 API - Complete solution with email/phone client creation, order management, client management, and dual-method authentication

162 lines (136 loc) • 5.8 kB
require('dotenv').config(); const { Dispatch9Client } = require('../src'); async function analyticsExample() { const client = new Dispatch9Client({ apiKey: process.env.DISPATCH9_API_KEY, baseURL: process.env.DISPATCH9_BASE_URL || 'http://localhost:3001', debug: true }); try { console.log('šŸš€ Testing Analytics with Dispatch9 SDK\n'); // Get dashboard analytics console.log('šŸ“Š Fetching dashboard analytics...'); try { const analytics = await client.getAnalytics({ startDate: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), // 30 days ago endDate: new Date(), granularity: 'day' }); console.log('šŸ“ˆ Dashboard Analytics:'); if (analytics.summary) { console.log(` Total Orders: ${analytics.summary.totalOrders || 0}`); console.log(` Completed Orders: ${analytics.summary.completedOrders || 0}`); console.log(` Success Rate: ${analytics.summary.successRate || 0}%`); console.log(` Average Delivery Time: ${analytics.summary.avgDeliveryTime || 'N/A'}`); } if (analytics.trends && analytics.trends.length > 0) { console.log(' Recent Trends:'); analytics.trends.slice(0, 5).forEach((trend, index) => { console.log(` ${trend.date}: ${trend.orders} orders`); }); } } catch (analyticsError) { console.log('ā„¹ļø Dashboard analytics not available or insufficient data'); } console.log(); // Get performance metrics console.log('⚔ Fetching performance metrics...'); try { const performance = await client.getPerformanceMetrics({ period: 'last30days' }); console.log('šŸŽÆ Performance Metrics:'); if (performance.deliveryMetrics) { console.log(` On-Time Delivery Rate: ${performance.deliveryMetrics.onTimeRate || 0}%`); console.log(` Average Delivery Time: ${performance.deliveryMetrics.avgTime || 'N/A'}`); console.log(` Failed Deliveries: ${performance.deliveryMetrics.failureRate || 0}%`); } if (performance.workerMetrics) { console.log(` Active Workers: ${performance.workerMetrics.activeCount || 0}`); console.log(` Average Orders per Worker: ${performance.workerMetrics.avgOrdersPerWorker || 0}`); } } catch (performanceError) { console.log('ā„¹ļø Performance metrics not available'); } console.log(); // Get order statistics console.log('šŸ“¦ Fetching order statistics...'); try { const orderStats = await client.getOrderStats({ groupBy: 'status', period: 'last7days' }); console.log('šŸ“‹ Order Statistics (Last 7 Days):'); if (orderStats.byStatus) { Object.entries(orderStats.byStatus).forEach(([status, count]) => { console.log(` ${status.charAt(0).toUpperCase() + status.slice(1)}: ${count}`); }); } if (orderStats.byPriority) { console.log(' By Priority:'); Object.entries(orderStats.byPriority).forEach(([priority, count]) => { console.log(` ${priority}: ${count}`); }); } } catch (statsError) { console.log('ā„¹ļø Order statistics not available'); } console.log(); // Get recent activity summary console.log('šŸ”„ Getting recent activity...'); const recentOrders = await client.getOrders({ limit: 10, sortBy: 'createdAt:desc' }); console.log('šŸ“ˆ Recent Activity Summary:'); console.log(` Total Orders in System: ${recentOrders.totalResults || 0}`); if (recentOrders.results && recentOrders.results.length > 0) { // Analyze recent orders const statusCounts = {}; const priorityCounts = {}; recentOrders.results.forEach(order => { statusCounts[order.status] = (statusCounts[order.status] || 0) + 1; priorityCounts[order.priority || 'normal'] = (priorityCounts[order.priority || 'normal'] || 0) + 1; }); console.log(' Recent Orders Breakdown:'); Object.entries(statusCounts).forEach(([status, count]) => { console.log(` ${status}: ${count}`); }); console.log(' Priority Distribution:'); Object.entries(priorityCounts).forEach(([priority, count]) => { console.log(` ${priority}: ${count}`); }); // Show latest order const latestOrder = recentOrders.results[0]; console.log(` Latest Order: #${latestOrder.orderNumber || latestOrder.id} (${latestOrder.status})`); } console.log(); // Worker activity console.log('🚚 Checking worker activity...'); const workers = await client.getWorkers({ limit: 5 }); console.log('šŸ‘„ Worker Overview:'); console.log(` Total Workers: ${workers.totalResults || 0}`); if (workers.results && workers.results.length > 0) { console.log(' Recent Workers:'); workers.results.forEach((worker, index) => { console.log(` ${index + 1}. ${worker.name} - ${worker.status || 'Unknown'}`); }); } console.log(); console.log('āœ… Analytics example completed successfully!'); console.log('\nšŸ’” Tips:'); console.log(' - Analytics data depends on your organization\'s activity'); console.log(' - Some metrics may not be available for new accounts'); console.log(' - Check your API key permissions if data is missing'); } catch (error) { console.error('āŒ Error:', error.message); if (error.message.includes('API key')) { console.log('\nšŸ’” Make sure your API key has analytics read permissions'); } } } // Run the example if (require.main === module) { analyticsExample(); } module.exports = analyticsExample;