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;
 }
     //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());
     $tit->setIdTarea($data->idTarea);
     $tit->setOrden(0);
     $tit->setIdEstado(Estado::$TareaAbierta);
     $tit->setIdTramiteInstanciaTarea($repo->insert($tit));
     Controller::renderJson("OK", $tit);
     break;
 case "open":
     $user = Usuario::getSessionUser();
     if ($user) {
         $tit = $repo->getOne($data->id);
         $tit->setIdEstado(Estado::$TareaEncurso);
         $tit->setIdUsuario($user["id"]);
         $repo->update($tit);
         Controller::renderJson("OK", $tit);
 public function update(TramiteInstanciaTarea $tramiteInstanciaTarea)
 {
     DB::update($this->nombreTabla, $this->nombreId, $tramiteInstanciaTarea->getIdTramiteInstanciaTarea(), array("idTramiteInstancia" => $tramiteInstanciaTarea->getIdTramiteInstancia(), "idTarea" => $tramiteInstanciaTarea->getIdTarea(), "orden" => $tramiteInstanciaTarea->getOrden(), "idEstado" => $tramiteInstanciaTarea->getIdEstado(), "idUsuario" => $tramiteInstanciaTarea->getIdUsuario(), "finalizacion" => $tramiteInstanciaTarea->getFinalizacion()));
     return true;
 }