static function getAllPurchasesSince($since)
 {
     global $userId;
     $purchases = array();
     $results = DB::query("SELECT * FROM " . PurchaseTable::$TABLE_NAME . " WHERE " . PurchaseTable::$HASH_ON . " > " . $since . " AND " . PurchaseTable::$USER_ID . " = " . $userId . " ORDER BY " . PurchaseTable::$HASH_ON . " ASC");
     foreach ($results as $record) {
         array_push($purchases, PurchasesServices::purchaseFromCursor($record));
     }
     return $purchases;
 }
    //Assign UserId
    global $userId;
    $incomingPurchase->setUserId($userId);
    //Check for existing purchase
    $purchase = PurchasesServices::load($incomingPurchase->id);
    if (empty($purchase)) {
        PurchasesServices::insert($incomingPurchase);
    } else {
        //Check if update required
        $updateRequired = PurchasesServices::updateRequired($purchase, $incomingPurchase);
        if ($updateRequired) {
            PurchasesServices::update($incomingPurchase);
        }
    }
    $response["errorMessage"] = "";
    echoResponse(200, $response);
});
$app->get('/getAll', "authenticate", function () use($app) {
    $since = $app->request->get("since");
    $purchases = PurchasesServices::getAllPurchasesSince($since);
    //Get last records hashOn for newSince
    $newSince = $since;
    if (count($purchases) > 0) {
        $purchase = $purchases[count($purchases) - 1];
        $newSince = $purchase->hashOn + 1;
    }
    $response["purchases"] = $purchases;
    $response["newSince"] = $newSince;
    echoResponse(200, $response);
});
$app->run();