private static function insertTimezone(Timezone $tz)
 {
     $query = "INSERT INTO timezone( owner_id, name, city, utc_offset )\n                    VALUES( :owner_id, :name, :city, :utc_offset );";
     $params = array("owner_id" => Session::getAuthenicatedSession()->getUser()->getId(), "name" => $tz->getName(), "city" => $tz->getCity(), "utc_offset" => $tz->getUtcOffset());
     $stmt = static::db()->prepare($query);
     $stmt->execute($params);
     $timezone_id = static::db()->lastInsertId();
     $tz->setId($timezone_id);
     $session = Session::getAuthenicatedSession();
     $user_id = $session->getUser()->getId();
     static::insertTimezoneUserRelationship($timezone_id, $user_id);
 }
<?php

/**
 * Created by PhpStorm.
 * User: shannon
 * Date: 12/14/15
 * Time: 6:15 PM
 */
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Syndicate\Entities\Session;
use Syndicate\Repositories\SessionRepository;
use Syndicate\Utils\RequestParser;
$create_session = function (Request $request, Response $response) {
    $session = Session::getAuthenicatedSession();
    $user = $session->getUser();
    SessionRepository::saveSession($session);
    $session_data = array("session_key" => $session->getKey());
    $user_data = array("id" => $user->getId(), "username" => $user->username, "first_name" => $user->first_name, "last_name" => $user->last_name);
    $response_data = array("session" => $session_data, "user" => $user_data, "privileges" => $user->getPrivileges());
    $response->getBody()->write(json_encode($response_data));
    return $response;
};
$app->post("/session/create", $create_session);
$close_session = function (Request $request, Response $response) {
    $parser = new RequestParser($request);
    $data = $parser->getData();
    if (empty($data['session_key'])) {
        $new_response = $response->withStatus(400);
        $new_response->getBody()->write("Must supply session_key");
        return $new_response;
 private static function insertNewRole(Role $role)
 {
     $query = "INSERT INTO role(name,created_by) VALUES( :name, :created_by )";
     $params = array("name" => $role->name, "created_by" => Session::getAuthenicatedSession()->getUser()->getId());
     $stmt = static::db()->prepare($query);
     $stmt->execute($params);
     return $stmt->rowCount();
 }
    if (!empty($errors)) {
        $new_response = $response->withStatus(400);
        $r = array("errors" => $errors);
        $new_response->getBody()->write(json_encode($r));
        return $new_response;
    }
    $count = UserRepository::saveUserRoleRelationshipsForUserId($data['user_id'], $data['role_ids']);
    $response->getBody()->write("Saved {$count} relationships");
    return $response;
};
$app->post("/user/roles", $save_user_roles);
$save_timezone_activations = function (Request $request, Response $response) {
    $parser = new RequestParser($request);
    $data = $parser->getData();
    $errors = array();
    $user_id = Session::getAuthenicatedSession()->getUser()->getId();
    if (!empty($data['user_id'])) {
        $user_id = $data['user_id'];
    }
    if (!is_numeric($data['user_id'])) {
        $errors[] = "User id should be numeric";
    }
    $activate = array();
    if (!empty($data['activate'])) {
        $activate = $data['activate'];
    }
    $deactivate = array();
    if (!empty($data['deactivate'])) {
        $deactivate = $data['deactivate'];
    }
    if (empty($activate) && empty($deactivate)) {