private static function updateUser(User $user)
 {
     $params = array("id" => $user->getId(), "username" => $user->username, "first_name" => $user->first_name, "last_name" => $user->last_name, "password" => $user->hashed_password);
     $password_string = ", password = :password";
     if (empty($user->hashed_password)) {
         $password_string = "";
         unset($params['password']);
     }
     $query = "UPDATE user SET\n                    username = :username,\n                    first_name = :first_name,\n                    last_name = :last_name\n                    {$password_string}\n\n                  WHERE id = :id\n                  ";
     $stmt = static::db()->prepare($query);
     $stmt->execute($params);
     return $stmt->rowCount();
 }
use Syndicate\Entities\Session;
use Syndicate\Repositories\TimezoneRepository;
$app->get('/user/list', function (Request $request, Response $response) use($app) {
    $user_collection = UserRepository::getAllUsers();
    if (empty($user_collection)) {
        $new_response = $response->withStatus(404);
        $new_response->getBody()->write("No users found");
        return $new_response;
    }
    $response->getBody()->write(json_encode($user_collection));
    return $response;
});
$save_user = function (Request $request, Response $response) {
    $parser = new RequestParser($request);
    $data = $parser->getData();
    $user = new User();
    $user->hydrate($data);
    if (!empty($data['password'])) {
        $user->setPassword($data['password']);
    }
    $errors = $user->validateData();
    if (!empty($errors)) {
        $new_response = $response->withStatus(400);
        $r = array("errors" => $errors);
        $new_response->getBody()->write(json_encode($r));
        return $new_response;
    }
    $count = UserRepository::saveUser($user);
    $response->getBody()->write(json_encode($user));
    return $response;
};