Export a package

We export all over the world. The best logistic
company, FAST and SAFELY!

Export A Package

Ship Now

© 2025 The middleman consults

import { initializeApp } from "https://www.gstatic.com/firebasejs/10.14.0/firebase-app.js"; import { getFirestore, doc, getDoc, } from "https://www.gstatic.com/firebasejs/10.14.0/firebase-firestore.js"; // Firebase const firebaseConfig = { apiKey: "AIzaSyBeF2AN-rVWbuVAszuynba15ud4pMOuuqw", authDomain: "themiddlmaninc.firebaseapp.com", projectId: "themiddlmaninc", storageBucket: "themiddlmaninc.appspot.com", messagingSenderId: "193676300607", appId: "1:193676300607:web:d245bbe9f6e8c750f8838a", }; const app = initializeApp(firebaseConfig); const db = getFirestore(app); // COUNTRY → ZONE DATA (ALREADY CORRECT) const zones = { "Zone 1": ["Guernsey", "Ireland, Rep. Of", "Jersey", "United Kingdom"], "Zone 2": [ "Benin", "Burkina Faso", "Cameroon", "Cape Verde", "Central African Rep", "Chad", "Congo", "Congo, DPR", "Côte D Ivoire", "Gabon", "Gambia", "Ghana", "Guinea Rep.", "Guinea-Bissau", "Guinea-Equatorial", "Liberia", "Mali", "Niger", "São Tomé and Príncipe", "Senegal", "Sierra Leone", "Togo", ], "Zone 3": ["Canada", "Mexico", "USA"], "Zone 4": [ "Albania", "Andorra", "Austria", "Belarus", "Belgium", "Bosnia & Herzegovina", "Bulgaria", "Canary Islands, The", "Croatia", "Cyprus", "Czech Rep., The", "Denmark", "Estonia", "Faroe Islands", "Finland", "France", "Germany", "Gibraltar", "Greece", "Greenland", "Hungary", "Iceland", "Italy", "Kosovo", "Latvia", "Liechtenstein", "Lithuania", "Luxembourg", "Malta", "Moldova, Rep. Of", "Monaco", "Montenegro, Rep Of", "Netherlands, The", "North Macedonia", "Norway", "Poland", "Portugal", "Romania", "Russian Federation", "San Marino", "Serbia, Rep. Of", "Slovakia", "Slovenia", "Spain", "Sweden", "Switzerland", "Turkey", "Ukraine", "Vatican City", ], "Zone 5": [ "Algeria", "Angola", "Botswana", "Burundi", "Comoros", "Djibouti", "Egypt", "Eritrea", "Eswatini", "Ethiopia", "Kenya", "Lesotho", "Libya", "Madagascar", "Malawi", "Mauritania", "Mauritius", "Mayotte", "Morocco", "Mozambique", "Namibia", "Reunion, Island Of", "Rwanda", "Seychelles", "Somalia", "Somaliland, Rep Of", "South Africa", "South Sudan", "Sudan", "Tanzania", "Tunisia", "Uganda", "Zambia", "Zimbabwe", ], "Zone 6": [ "Afghanistan", "Bahrain", "Iran", "Iraq", "Israel", "Jordan", "Kuwait", "Lebanon", "Oman", "Qatar", "Saudi Arabia", "Syria", "United Arab Emirates", "Yemen, Rep. Of", ], "Zone 7": [ "Armenia", "Australia", "Azerbaijan", "Bangladesh", "Bhutan", "Brunei", "Cambodia", "China", "Georgia", "Hong Kong SAR China", "India", "Indonesia", "Japan", "Kazakhstan", "Korea, Rep. of", "Korea, D.P.R Of", "Kyrgyzstan", "Laos", "Macau SAR China", "Malaysia", "Maldives", "Mongolia", "Myanmar", "Nepal", "Pakistan", "Palau", "Philippines, The", "Singapore", "Sri Lanka", "Taiwan", "Tajikistan", "Thailand", "Timor-Leste", "Turkmenistan", "Uzbekistan", "Vietnam", ], "Zone 8": [ "American Samoa", "Anguilla", "Antigua", "Argentina", "Aruba", "Bahamas", "Barbados", "Belize", "Bermuda", "Bolivia", "Bonaire", "Brazil", "Cayman Islands", "Chile", "Colombia", "Cook Islands", "Costa Rica", "Cuba", "Curacao", "Dominica", "Dominican Rep.", "Ecuador", "El Salvador", "Falkland Islands", "Fiji", "French Guyana", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guyana (British)", "Haiti", "Honduras", "Jamaica", "Kiribati", "Marshall Islands", "Martinique", "Micronesia", "Montserrat", "Nauru, Rep. Of", "Nevis", "New Caledonia", "New Zealand", "Nicaragua", "Niue", "Northern Mariana Islands", "Panama", "Papua New Guinea", "Paraguay", ], }; // UI const countryInput = document.getElementById("country"); const datalist = document.getElementById("countries"); const weightSelect = document.getElementById("weight"); const rateDisplay = document.getElementById("rateDisplay"); // Populate countries Object.values(zones) .flat() .forEach((country) => { const opt = document.createElement("option"); opt.value = country; datalist.appendChild(opt); }); // Populate weights (2–30 + 31+) for (let i = 2; i <= 30; i++) { const opt = document.createElement("option"); opt.value = i; opt.textContent = `${i} kg`; weightSelect.appendChild(opt); } const last = document.createElement("option"); last.value = 31; last.textContent = "31 kg and above"; weightSelect.appendChild(last); // Find zone function getZone(country) { for (const zone in zones) { if (zones[zone].includes(country)) return zone; } return null; } // GET RATE FUNCTION window.getRate = async function () { const country = countryInput.value.trim(); const weight = parseInt(document.getElementById("weight").value); const carrier = document.getElementById("carrier").value; const zone = getZone(country); if (!zone) { rateDisplay.textContent = "❌ Country not supported."; return; } if (!weight || weight < 2 || weight > 80) { rateDisplay.textContent = "❌ Weight must be between 2kg and 80kg."; return; } // Fetch selected carrier document const carrierRef = doc(db, "rates", carrier); const snap = await getDoc(carrierRef); if (!snap.exists()) { rateDisplay.textContent = `❌ ${carrier} rates not found in Firestore.`; return; } const carrierData = snap.data(); const zoneKey = zone.replace("Zone ", "Zone"); const zoneRates = carrierData[zoneKey]; if (!zoneRates) { rateDisplay.textContent = "❌ Zone rates missing."; return; } const index = weight - 2; // 2kg → index 0, 80kg → index 78 const rate = zoneRates[index]; if (!rate) { rateDisplay.textContent = "❌ No rate for this weight."; return; } rateDisplay.textContent = `Rate to ${country}: ₦${rate.toLocaleString()} (${carrier})`; }; -->