Exemplo n.º 1
0
            $distances = [];
            $sort_distance = [];
            foreach (DB\Depot::all() as $depot) {
                $d = Helper::getDistanceBetweenCordinates($customer_address['latitude'], $customer_address['longitude'], $depot->latitude, $depot->longitude);
                $distances[$depot->id] = ['depot_id' => $depot->id, 'depot' => $depot->depot, 'depot_postcode' => $depot->postcode, 'distance_meters' => $d];
                // Create sort array for array_multisort
                $sort_distance[$depot->id] = $d;
            }
            // Sort the distances by shortest distance first
            array_multisort($sort_distance, SORT_ASC, $distances);
            // Update customer.depot and depot_distance
            if ($distances && isset($distances[0])) {
                Log::msg('Closest three depots to the customer are: ' . print_r(array_slice($distances, 0, 3), 1));
                // Update depot and depot distance for all the customers with the postcode
                Log::msg('Updating customers depot to "' . $distances[0]['depot_id'] . '"');
                $customers_to_update->update(['depot' => $distances[0]['depot_id'], 'depot_distance' => $distances[0]['distance_meters'], 'no_results' => 0]);
            } else {
                Log::msg('Invalid $distances array: ' . print_r($distances, 1));
            }
        } else {
            Log::msg('No latitude/longitude information found for postcode: ' . $customer->postcode);
            // Update no_results flag for all the customers with this postcode.
            Log::msg('Updating `no_results` for all the customers with this postcode.');
            $customers_to_update->update(['no_results' => 1]);
        }
        Log::msg('Continue to the next customer ...', true, 1);
        sleep(1);
    }
}
Log::msg('Script Ended', true, 1);