public function cambiarInstancia(Tramite $tramite)
 {
     $repoInstancia = new InstanciaRepository();
     $repoTramiteInstancia = new TramiteInstanciaRepository();
     $repoTramiteInstanciaTarea = new TramiteInstanciaTareaRepository();
     $repoTarea = new RelTipoTramiteinstanciaTareaRepository();
     //siguiente instancia del tramite
     $nuevainstancia = $repoInstancia->getSiguienteInstancia($tramite->getIdTipoTramite(), $tramite->getidInstanciaActual());
     //var_dump($nuevainstancia);die;
     //asocio la nueva instancia con el tramite
     $tramiteInstancia = new TramiteInstancia();
     $tramiteInstancia->setIdTramite($tramite->getidTramite());
     $tramiteInstancia->setIdInstancia($nuevainstancia->getIdInstancia());
     $tramiteInstancia->setIdTramiteInstancia($repoTramiteInstancia->insert($tramiteInstancia));
     //tareas propias de la nueva instancia
     $tareasPropias = $repoTarea->getTareasPropias($tramite->getIdTipoTramite(), $nuevainstancia->getIdInstancia());
     //var_dump($tareasPropias);die;
     //agrego las tareas al tramite
     foreach ($tareasPropias as $tarea) {
         $tit = new TramiteInstanciaTarea();
         $tit->setIdTramiteInstancia($tramiteInstancia->getIdTramiteInstancia());
         $tit->setIdTarea($tarea->getIdTarea());
         $tit->setOrden($tarea->getOrden());
         $tit->setIdEstado(Estado::$TareaAbierta);
         //var_dump($tit);die;
         $repoTramiteInstanciaTarea->insert($tit);
     }
     //cambio la instancia actual del tramite
     $tramite->setIdInstanciaActual($nuevainstancia->getIdInstancia());
     $this->update($tramite);
     return $tramite;
 }
use Stel\Repository\TramiteRepository;
use Stel\Repository\TramiteInstanciaTareaRepository;
use Stel\Repository\PersonaRepository;
use Stel\Repository\InstitucionRepository;
use Stel\Model\Usuario;
use Stel\Model\Tramite;
$user = Usuario::getSessionUser();
if (!$user) {
    Controller::redirect("login");
}
if (!isset($_GET["idTramite"])) {
    Controller::render("error.php", array("errorMessage" => "No se encuentra el tramite solicitado."));
    die;
}
$idTramite = $_GET["idTramite"];
$repo = new TramiteRepository();
$repoTarea = new TramiteInstanciaTareaRepository();
$repoPersona = new PersonaRepository();
$repoInstitucion = new InstitucionRepository();
$tramite = $repo->getOne($idTramite);
if ($tramite->getIdPersona()) {
    $persona = $repoPersona->getOne($tramite->getIdPersona());
} else {
    $institucion = $repoInstitucion->getOne($tramite->getIdInstitucion());
}
$tareas = $repoTarea->getForSintesisGlobal($idTramite);
if (isset($persona)) {
    Controller::render("sintesisGlobal.php", array("tramite" => $tramite, "tareas" => $tareas, "persona" => $persona));
} else {
    Controller::render("sintesisGlobal.php", array("tramite" => $tramite, "tareas" => $tareas, "institucion" => $institucion));
}
<?php

use Stel\Repository\TramiteInstanciaTareaRepository;
use Stel\Repository\UsuarioRepository;
use Stel\Model\Usuario;
use Stel\Model\Estado;
$tramite = isset($_GET["tramite"]) ? $_GET["tramite"] : null;
$tipo = isset($_GET["tipo"]) ? $_GET["tipo"] : null;
$instancia = isset($_GET["instancia"]) ? $_GET["instancia"] : null;
$tareas = array();
$user = Usuario::getSessionUser();
if (!$user) {
    Controller::renderJson("ERROR", null, "relogin");
} else {
    $repo = new TramiteInstanciaTareaRepository();
    $tareas = $repo->getForMisTareas($user["id"], $tipo, $instancia, $tramite);
    //var_dump($tareas);die;
    $repoUser = new UsuarioRepository();
    foreach ($tareas as $tarea) {
        $usuario = $repoUser->getOne($tarea->idUsuario);
        //en el estado concateno el nombre de usuario que tomo la tarea
        if ($usuario) {
            $tarea->nombreEstado .= " - " . $usuario->getUsuario();
        }
        // para que una tarea sea editable o finalizable tiene que estar Abierta
        // o EnCurso pero por el mismo usuario
        if ($tarea->idEstado == Estado::$TareaAbierta || $tarea->idEstado == Estado::$TareaEncurso && $tarea->idUsuario == $user["id"]) {
            $tarea->editable = true;
        }
    }
}
use Stel\Model\Tramite;
use Stel\Model\TramiteInstancia;
use Stel\Model\Estado;
use Stel\Repository\TramiteInstanciaRepository;
use Stel\Repository\TramiteRepository;
use Stel\Repository\TramiteInstanciaTareaRepository;
try {
    $action = $_GET["action"];
    $data = json_decode($_POST["object"]);
    $repo = new TramiteInstanciaRepository();
    switch ($action) {
        case "new":
            Controller::renderJson("ERROR", "", "No implementado");
            break;
        case "open":
            Controller::renderJson("ERROR", "", "No implementado");
            break;
        case "end":
            $repoTramite = new TramiteRepository();
            $t = $repoTramite->getOne($data->idTramite);
            //fuerzo la finalizacion de las tareas pendientes
            $repoTarea = new TramiteInstanciaTareaRepository();
            $repoTarea->finalizarPendientes($t);
            //cambio la instancia
            $t = $repoTramite->cambiarInstancia($t);
            Controller::renderJson("OK", $t);
            break;
    }
} catch (Exception $e) {
    Controller::renderJson("ERROR", "", $e->getMessage());
}
<?php

use Stel\Model\TramiteInstanciaTarea;
use Stel\Model\Estado;
use Stel\Model\Usuario;
use Stel\Repository\TramiteInstanciaTareaRepository;
use Stel\Repository\TramiteInstanciaRepository;
use Stel\Repository\TramiteRepository;
try {
    $action = $_GET["action"];
    $data = json_decode($_POST["object"]);
    $repo = new TramiteInstanciaTareaRepository();
    switch ($action) {
        case "new":
            //busco el tramite
            $repoTramite = new TramiteRepository();
            $t = $repoTramite->getOne($data->idTramite);
            if (!$t) {
                Controller::renderJson("ERROR", "", "Tramite no encontrado");
                die;
            }
            //busco el tramiteinstancia
            $repoTi = new TramiteInstanciaRepository();
            $ti = $repoTi->getByTramiteInstancia($t->getIdTramite(), $t->getIdInstanciaActual());
            if (!$ti) {
                Controller::renderJson("ERROR", "", "Instancia incorrecta");
                die;
            }
            //genero la nueva tarea
            $tit = new TramiteInstanciaTarea();
            $tit->setIdTramiteInstancia($ti->getIdTramiteInstancia());
<?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\TramiteInstanciaTareaRepository;
use Stel\Repository\UsuarioRepository;
use Stel\Model\Usuario;
use Stel\Model\Estado;
// $tramite = isset($_GET["tramite"])?$_GET["tramite"]:null;
$tipo = isset($_GET["tipo"]) ? $_GET["tipo"] : null;
$instancia = isset($_GET["instancia"]) ? $_GET["instancia"] : null;
$filtro = isset($_GET["filtro"]) ? $_GET["filtro"] : null;
$tareas = array();
$user = Usuario::getSessionUser();
if (!$user) {
    Controller::renderJson("ERROR", null, "relogin");
} else {
    $repo = new TramiteInstanciaTareaRepository();
    $tareas = $repo->getForMisTareas($user["id"], $tipo, $instancia, $filtro);
    //var_dump($tareas);die;
    $repoUser = new UsuarioRepository();
    foreach ($tareas as $tarea) {
        $usuario = $repoUser->getOne($tarea->idUsuario);
        //en el estado concateno el nombre de usuario que tomo la tarea
        if ($usuario) {
            $tarea->nombreEstado .= " - " . $usuario->getUsuario();
        }
        // para que una tarea sea editable o finalizable tiene que estar Abierta
        // o EnCurso pero por el mismo usuario
        if ($tarea->idEstado == Estado::$TareaAbierta || $tarea->idEstado == Estado::$TareaEncurso && $tarea->idUsuario == $user["id"]) {
            $tarea->editable = true;
        }
    }