<?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\Model\Tarea;
use Stel\Repository\TareaRepository;
try {
    $action = $_GET["action"];
    $data = json_decode($_POST["object"]);
    $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":
<?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));
<?php

use Stel\Repository\TareaRepository;
use Stel\Model\Tarea;
$repo = new TareaRepository();
$entities = $repo->getAllOrderBy("nombre");
Controller::render("tareas.php", array("entities" => $entities));
<?php

use Stel\Model\Permiso;
use Stel\Repository\PermisoRepository;
use Stel\Repository\UsuarioRepository;
use Stel\Repository\TareaRepository;
try {
    $action = $_GET["action"];
    $data = json_decode($_POST["object"]);
    $repo = new PermisoRepository();
    $repoUsuarios = new UsuarioRepository();
    $repoTareas = new TareaRepository();
    switch ($action) {
        case "new":
            //para no duplicar registros
            $exists = $repo->exists($data->idUsuario, $data->idTarea);
            if ($exists) {
                Controller::renderJson("ERROR", $exists, "Permiso existente");
            } else {
                $permiso = new Permiso();
                $permiso->setIdTarea($data->idTarea);
                $permiso->setIdUsuario($data->idUsuario);
                $permiso->setIdPermiso($repo->insert($permiso));
                $usuario = $repoUsuarios->getOne($data->idUsuario);
                $permiso->setUsuario($usuario);
                $tarea = $repoTareas->getOne($data->idTarea);
                $permiso->setTarea($tarea);
                Controller::renderJson("OK", $permiso);
            }
            break;
        case "edit":
<?php

use Stel\Repository\TareaRepository;
use Stel\Model\Tarea;
use Stel\Model\Usuario;
$repo = new TareaRepository();
$tareas = array();
if (isset($_GET["tipo"])) {
    $user = Usuario::getSessionUser();
    $tareas = $repo->getByTipo($_GET["tipo"], $user['id']);
} else {
    $tareas = $repo->getAllOrderBy("nombre");
}
if (isset($_GET['forSelect'])) {
    $tareas = array_map(function ($element) {
        return array("value" => $element->getIdTarea(), "text" => $element->getNombre());
    }, $tareas);
}
Controller::renderJson("OK", $tareas);