$app->stop();
            }
            $stmt = $db->prepare('INSERT INTO teachers (name, website, addedby) VALUES (?, ?, ?)');
            $stmt->execute(array(utf8_encode($name), utf8_encode($website), $userid));
            ApiResponse::success(200, "success", "teacherid", $db->lastInsertId());
        } catch (PDOException $ex) {
            ApiResponse::error(500, "Internal server error");
        }
    })->via('GET', 'POST');
    //################# Teachers  ##################
    $app->map('/list', function () use($app, $db) {
        try {
            $stmt = $db->prepare('SELECT * FROM teachers LIMIT 50');
            $stmt->execute();
            ApiResponse::success(200, "success", "teachers", $stmt->fetchAll(PDO::FETCH_ASSOC));
        } catch (PDOException $ex) {
            ApiResponse::error(500, "Internal server error");
        }
    })->via('GET', 'POST');
    //################## Search Teachers  ##################
    $app->map('/search', function () use($app, $db) {
        $query = $app->request->get('q');
        try {
            $stmt = $db->prepare('SELECT * FROM teachers WHERE name LIKE ? LIMIT 10');
            $stmt->execute(array("%{$query}%"));
            ApiResponse::success(200, "success", "teachers", $stmt->fetchAll(PDO::FETCH_ASSOC));
        } catch (PDOException $ex) {
            ApiResponse::error(500, "Internal server error");
        }
    })->via('GET', 'POST');
});
 public function test_error_should_have_error_property()
 {
     $response = ApiResponse::error('Some error');
     $this->assertObjectHasAttribute('error', $response);
 }