0

Total Affiliates

0

Pending

0

Approved

0

Active

₹0

Total Earnings

0

With Bank Details

${affiliate.firstName} ${affiliate.lastName}

Affiliate ID: ${affiliate.id}

Personal Information
Name:${affiliate.firstName} ${affiliate.lastName}
Email:${affiliate.email}
Phone:${affiliate.phone || 'Not provided'}
Gender:${affiliate.gender || 'Not provided'}
Date of Birth:${affiliate.dateOfBirth || 'Not provided'}
Address:${affiliate.address || 'Not provided'}
City:${affiliate.city || 'Not provided'}, ${affiliate.pincode || ''}
Professional Information
Primary Platform:${affiliate.socialMediaPlatforms || 'Not specified'}
Followers:${affiliate.followersCount || 'Not specified'}
Experience:${affiliate.experienceLevel || 'Beginner'}
Instagram:${affiliate.instagramHandle || 'Not provided'}
YouTube:${affiliate.youtubeChannel || 'Not provided'}
Facebook:${affiliate.facebookHandle || 'Not provided'}
Website:${affiliate.websiteUrl || 'Not provided'}
${affiliate.whyJoin ? `
Why Join:

${affiliate.whyJoin}

` : ''} ${affiliate.primaryProfile && affiliate.primaryProfile.length > 0 ? `
Profile Categories:
${affiliate.primaryProfile.map(cat => `${cat}`).join('')}
` : ''}
Application Timeline
Application Submitted
${new Date(affiliate.submittedAt).toLocaleString()}
${affiliate.approvedAt ? `
Application Approved
${new Date(affiliate.approvedAt).toLocaleString()}
` : ''} ${affiliate.couponCode ? `
Coupon Code Assigned
Code: ${affiliate.couponCode} (${affiliate.affiliateCommission || 10}% commission)
Ready to Share & Earn
Affiliate is now earning commissions
` : affiliate.status === 'approved' ? `
Awaiting Coupon Assignment
Ready for coupon code
` : ''} ${affiliate.rejectedAt ? `
Application Rejected
${new Date(affiliate.rejectedAt).toLocaleString()}
Reason: ${affiliate.rejectionReason || 'No reason provided'}
` : ''}
Earnings Summary
₹${(affiliate.totalEarnings || 0).toFixed(2)}
Total Earnings
₹${(affiliate.currentMonthEarnings || 0).toFixed(2)}
This Month
${affiliate.totalReferrals || 0}
Total Orders
${affiliate.currentMonthOrders || 0}
Month Orders
Bank Details
${bankDetails ? `
Account Holder:${bankDetails.accountHolderName}
Bank Name:${bankDetails.bankName}
Account Number:****${bankDetails.accountNumber.slice(-4)}
IFSC Code:${bankDetails.ifscCode}
Branch:${bankDetails.branchName || 'Not specified'}
Account Type:${bankDetails.accountType}
Added:${new Date(bankDetails.createdAt?.toDate?.() || bankDetails.createdAt).toLocaleDateString()}
` : `
No bank details provided yet
`}
Payment History
${withdrawalHistory && withdrawalHistory.length > 0 ? withdrawalHistory.map(withdrawal => `
₹${withdrawal.amount} ${withdrawal.status.toUpperCase()}
${withdrawal.type === 'auto' ? 'Auto Transfer' : 'Manual Payment'} - ${new Date(withdrawal.requestedAt).toLocaleDateString()} ${withdrawal.month ? ` (${getMonthName(withdrawal.month)} ${withdrawal.year})` : ''} ${withdrawal.notes ? `
${withdrawal.notes}` : ''}
`).join('') : '

No payment history yet

' }
`); } // Helper function to get month name function getMonthName(monthNum) { const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; return months[monthNum - 1] || monthNum; } // Refresh all data async function refreshData() { showLoading(true); try { await loadAllData(); updateStatsDisplay(); applyFilters(); showAlert('Data refreshed successfully!', 'success'); } catch (error) { console.error('Error refreshing data:', error); showAlert('Error refreshing data: ' + error.message, 'danger'); } finally { showLoading(false); } } // Export data to CSV function exportData() { try { const csvData = []; const headers = [ 'ID', 'Name', 'Email', 'Phone', 'Status', 'Account Status', 'Coupon Code', 'Commission Rate', 'Total Earnings', 'Current Month Earnings', 'Total Orders', 'Current Month Orders', 'Platform', 'Followers', 'Bank Details', 'Applied Date' ]; csvData.push(headers); allAffiliates.forEach(affiliate => { const bankDetails = allBankDetails.find(bank => bank.affiliateEmail === affiliate.email || bank.affiliateId === affiliate.id ); const row = [ affiliate.id, `${affiliate.firstName || ''} ${affiliate.lastName || ''}`, affiliate.email, affiliate.phone || '', affiliate.status || '', affiliate.accountStatus || 'active', affiliate.couponCode || '', affiliate.affiliateCommission || '', affiliate.totalEarnings || 0, affiliate.currentMonthEarnings || 0, affiliate.totalReferrals || 0, affiliate.currentMonthOrders || 0, affiliate.socialMediaPlatforms || '', affiliate.followersCount || '', bankDetails ? 'Yes' : 'No', affiliate.submittedAt ? new Date(affiliate.submittedAt).toLocaleDateString() : '' ]; csvData.push(row); }); const csvContent = csvData.map(row => row.map(cell => `"${cell}"`).join(',')).join('\n'); const blob = new Blob([csvContent], { type: 'text/csv' }); const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `affiliates_${new Date().toISOString().split('T')[0]}.csv`; a.click(); window.URL.revokeObjectURL(url); showAlert('Data exported successfully!', 'success'); } catch (error) { console.error('Error exporting data:', error); showAlert('Error exporting data: ' + error.message, 'danger'); } } // Make functions available globally window.markPayment = markPayment; window.submitPayment = submitPayment; window.updateAffiliateStatus = updateAffiliateStatus; window.updateStatus = updateStatus; window.assignCouponCode = assignCouponCode; window.assignCoupon = assignCoupon; window.applyFilters = applyFilters; window.clearFilters = clearFilters; window.viewFullDetails = viewFullDetails; window.refreshData = refreshData; window.exportData = exportData; window.showLoading = showLoading; window.showAlert = showAlert;