$repo = new TareaRepository();
    switch ($action) {
        case "new":
            $tarea = $repo->getByNombre($data->nombre);
            if ($tarea) {
                Controller::renderJson("ERROR", "", "Ya existe una tarea con el mismo nombre.");
                return;
            }
            $tarea = new Tarea();
            $tarea->setNombre($data->nombre);
            $tarea->setIdTipoTarea($data->idTipoTarea);
            $tarea->setIdListaItem($data->idListaItem);
            $tarea->setIdTarea($repo->insert($tarea));
            Controller::renderJson("OK", $tarea);
            break;
        case "edit":
            $tarea = $repo->getOne($data->idTarea);
            $tarea->setNombre($data->nombre);
            $tarea->setIdTipoTarea($data->idTipoTarea);
            $tarea->setIdListaItem($data->idListaItem);
            $repo->update($tarea);
            Controller::renderJson("OK", $tarea);
            break;
        case "delete":
            $repo->delete($data->idTarea);
            Controller::renderJson("OK", $data->idTarea);
            break;
    }
} catch (Exception $e) {
    Controller::renderJson("ERROR", "", $e->getMessage());
}
<?php

use Stel\Repository\PermisoRepository;
use Stel\Repository\UsuarioRepository;
use Stel\Repository\TareaRepository;
use Stel\Model\Permiso;
function byUserName($a, $b)
{
    return strcmp(strtolower($a->getUsuario()->getUsuario()), strtolower($b->getUsuario()->getUsuario()));
}
$repo = new PermisoRepository();
$repoUsuarios = new UsuarioRepository();
$repoTareas = new TareaRepository();
$entities = $repo->getAll();
foreach ($entities as $entity) {
    $usuario = $repoUsuarios->getOne($entity->getIdUsuario());
    $entity->setUsuario($usuario);
    $tarea = $repoTareas->getOne($entity->getIdTarea());
    $entity->setTarea($tarea);
}
usort($entities, "byUserName");
Controller::render("permisos.php", array("entities" => $entities));
<?php

use Stel\Repository\TramiteInstanciaTareaRepository;
use Stel\Repository\TareaRepository;
use Stel\Repository\ObservacionRepository;
use Stel\Model\TramiteInstanciaTarea;
use Stel\Model\Estado;
use Stel\Model\Usuario;
$idTarea = $_GET["idTarea"];
$repo = new TramiteInstanciaTareaRepository();
$user = Usuario::getSessionUser();
if (!$user) {
    Controller::redirect("./login");
}
$tarea = null;
$observacion = null;
if ($idTarea) {
    $tareatramite = $repo->getOne($idTarea);
    //pongo la tarea como Encurso
    $tareatramite->setIdEstado(Estado::$TareaEncurso);
    $tareatramite->setIdUsuario($user["id"]);
    $repo->update($tareatramite);
    $repoTarea = new TareaRepository();
    $tarea = $repoTarea->getOne($tareatramite->getIdTarea());
    $repoObservacion = new ObservacionRepository();
    $observacion = $repoObservacion->getByTarea($tareatramite->getIdTramiteInstanciaTarea());
}
Controller::render("cargaObservacion.php", array("tareatramite" => $tareatramite, "tarea" => $tarea, "observacion" => $observacion));