<?php

require_once __DIR__ . '/../../../carbon/core.ini.php';
require_once __DIR__ . '/../../../carbon/requests/requests.inc.php';
require_once __DIR__ . '/../../../carbon/responses/responses.inc.php';
require_once __DIR__ . '/../../../carbon/formats/formats.inc.php';
require_once __DIR__ . '/../../../src/restaurant/restaurant.php';
try {
    $db = $config->getDefaultDatabase()->open();
    $deliveryInfo = ['delivery_man_id' => Request::REQUIRED, 'order_number' => Request::REQUIRED, 'lattitude' => Request::REQUIRED, 'longitude' => Request::REQUIRED];
    $request = new StandardRequest();
    $deliveryInfo = $request->extract($deliveryInfo);
    $deliveryInfo = arrayToJSONObject($deliveryInfo);
    $response = createDelivery($db, $deliveryInfo);
} catch (Exception $ex) {
    $response = new ExceptionResponse($ex);
}
$response = new JSONPrettyFormat($response);
$response->present();
function handleUrlManager($key, $urlManager)
{
    global $unsupportedToken, $dryRun;
    $clazz = find("class", $urlManager);
    if (!in_array($clazz, array("kAkamaiUrlManager", "kUrlManager"))) {
        print "*** Error: Can't transform {$key}\n";
        return;
    }
    print "Transforming Url Manager : {$key}\n";
    $types = getTypes($urlManager);
    foreach ($types as $type) {
        $delivery = createDelivery($key, $type, $urlManager);
        print "\t Saving delivery profile {$key} : {$type['0']}\n";
        if (!$dryRun) {
            $delivery->save();
        }
    }
    $missingParams = array_diff_key($urlManager, array_flip($unsupportedToken));
    if (count($missingParams)) {
        print "Error: Not all parameters were handled. Url : {$key} \n";
        print_r(array_keys($missingParams));
        die;
    }
    $missingToken = array_intersect_key($urlManager, array_flip($unsupportedToken));
    if (count($missingToken)) {
        print "Warning: Tokenizer / Recognizer parameters were ignore. Please add them manually : " . implode(", ", array_keys($missingToken)) . "\n";
    }
    print "<--\n";
}