document.getElementById('fetch-order').addEventListener('click', async function () { const orderNumber = document.getElementById('order-number').value; if (!orderNumber) { alert('Please enter an order number.'); return; } try { // Fetch order details const orderResponse = await fetch(`/api/orders/${orderNumber}`); if (orderResponse.ok) { const orderData = await orderResponse.json(); displayOrderDetails(orderData); // Fetch tracking details only after successfully getting order data const trackingResponse = await fetch(`/api/tracking/${orderNumber}`); if (trackingResponse.ok) { const trackingData = await trackingResponse.json(); displayTrackingDetails(trackingData); generateEmailContent(orderData, trackingData); } else { throw new Error('Tracking information not found'); } } else { throw new Error('Order not found'); } } catch (error) { alert(error.message); } }); function displayOrderDetails(orderData) { document.getElementById('customer-name').textContent = `Customer: ${orderData.customer_name}`; document.getElementById('address').textContent = `Address: ${orderData.shipping_address.address1}, ${orderData.shipping_address.city}, ${orderData.shipping_address.state} ${orderData.shipping_address.zip}`; document.getElementById('email').textContent = `Email: ${orderData.email}`; document.getElementById('phone').textContent = `Phone: ${orderData.phone}`; document.getElementById('customer-email').value = orderData.email; document.getElementById('order-details').classList.remove('hidden'); } function displayTrackingDetails(trackingData) { const trackingList = document.getElementById('tracking-list'); trackingList.innerHTML = ''; // Clear previous tracking details trackingData.tracking_details.forEach((detail, index) => { const listItem = document.createElement('li'); listItem.innerHTML = `Package #${index + 1}: ${detail.tracking_number} (${detail.carrier})`; trackingList.appendChild(listItem); }); document.getElementById('tracking-details').classList.remove('hidden'); } function getTrackingUrl(detail) { const carrierUrls = { 'Speedee': 'https://www.speedee.delivery/track?trackingNumber=', 'UPS': 'https://www.ups.com/track?loc=en_US&tracknum=', 'FedEx': 'https://www.fedex.com/apps/fedextrack/?tracknumbers=', 'USPS': 'https://tools.usps.com/go/TrackConfirmAction_input?qtc_tLabels1=', 'GLS': 'https://gls-group.eu/EU/en/parcel-tracking?match=', 'OnTrac': 'https://www.ontrac.com/trackingres.asp?tracking_number=' }; return carrierUrls[detail.carrier] + detail.tracking_number; } function generateEmailContent(orderData, trackingData) { const customerFirstName = orderData.customer_name.split(' ')[0]; const orderNumber = trackingData.order_number; let emailContent = `Hello ${customerFirstName},\n\nWe are pleased to inform you that your order #${orderNumber} has been drop-shipped directly from our distributor to your address.\n\n`; emailContent += `Here is your tracking information for the shipment(s):\n`; trackingData.tracking_details.forEach((detail, index) => { emailContent += `Package #${index + 1}: ${detail.tracking_number}\n`; }); emailContent += `\nPlease allow up to 24 hours for tracking information to update online.\n\n`; emailContent += `Thank you for choosing us. We truly appreciate your business and are here if you have any questions.`; document.getElementById('email-content').value = emailContent; document.getElementById('email-subject').value = `Order #${orderNumber} Drop Shipped`; document.getElementById('email-section').classList.remove('hidden'); } // Copy subject line document.getElementById('copy-subject').addEventListener('click', function () { const subject = document.getElementById('email-subject'); subject.select(); document.execCommand('copy'); // alert('Subject copied to clipboard'); }); // Copy customer email address document.getElementById('copy-email-address').addEventListener('click', function () { const email = document.getElementById('customer-email'); email.select(); document.execCommand('copy'); // alert('Customer email copied to clipboard'); }); // Copy email content to clipboard document.getElementById('copy-email-content').addEventListener('click', function () { const emailContent = document.getElementById('email-content').value; // Convert the email content to an HTML string const htmlContent = emailContent .replace(/(?:\r\n|\r|\n)/g, '
') // Replace newlines with
tags .replace(/(.+?)<\/a>/g, (match, url, text) => { return `${text}`; }); const blob = new Blob([htmlContent], { type: 'text/html' }); const data = [new ClipboardItem({ 'text/html': blob })]; navigator.clipboard.write(data).then(function () { //alert('Email content copied to clipboard as HTML'); }).catch(function (error) { alert('Failed to copy email content'); console.error('Error copying email content:', error); }); });