// utils/geofence.js
// Restricts service area to Sudan (and specific cities if needed)

// Sudan bounding box
const SUDAN_BOUNDS = {
    minLat: 3.5,
    maxLat: 22.2,
    minLng: 21.8,
    maxLng: 38.6
};

/**
 * Check if coordinates are inside Sudan
 * @param {number} lat
 * @param {number} lng
 * @returns {boolean}
 */
function isInsideSudan(lat, lng) {
    if (!lat || !lng) return false;
    return (
        lat >= SUDAN_BOUNDS.minLat && lat <= SUDAN_BOUNDS.maxLat &&
        lng >= SUDAN_BOUNDS.minLng && lng <= SUDAN_BOUNDS.maxLng
    );
}

/**
 * Validate that both pickup and dropoff are inside Sudan
 * @param {object} pickup - { lat, lng }
 * @param {object} dropoff - { lat, lng }
 * @returns {{ valid: boolean, message: string }}
 */
function validateOrderLocations(pickup, dropoff) {
    if (!pickup || !pickup.lat || !pickup.lng) {
        return { valid: false, message: 'يرجى تحديد موقع الاستلام على الخريطة' };
    }
    if (!dropoff || !dropoff.lat || !dropoff.lng) {
        return { valid: false, message: 'يرجى تحديد موقع التسليم على الخريطة' };
    }
    if (!isInsideSudan(pickup.lat, pickup.lng)) {
        return { valid: false, message: 'موقع الاستلام خارج نطاق الخدمة (السودان فقط)' };
    }
    if (!isInsideSudan(dropoff.lat, dropoff.lng)) {
        return { valid: false, message: 'موقع التسليم خارج نطاق الخدمة (السودان فقط)' };
    }
    return { valid: true };
}

module.exports = { isInsideSudan, validateOrderLocations };
