/**
  * Devuelve las instituciones para el autocomplete de la busqueda de instituciones
  */
 public function buscarInstituciones()
 {
     //si accedio a traves de la url muestra pagina 404
     if (!$this->getAjaxHelper()->isAjaxContext()) {
         throw new Exception("", 404);
     }
     try {
         $this->getJsonHelper()->initJsonAjaxResponse();
         $iRecordsTotal = 0;
         $sOrderBy = $sOrder = $iIniLimit = $iRecordCount = null;
         $filtro = array("i.nombre" => $this->getRequest()->get('str'));
         $vInstituciones = ComunidadController::getInstance()->obtenerInstituciones($filtro, $iRecordsTotal, $sOrderBy, $sOrder, $iIniLimit, $iRecordCount);
         $vResult = array();
         if (count($vInstituciones) > 0) {
             foreach ($vInstituciones as $oInstitucion) {
                 $obj = new stdClass();
                 $obj->id = $oInstitucion->getId();
                 $obj->nombre = $oInstitucion->getNombre();
                 $vResult[] = $obj;
             }
         }
         //agrega una url para que el js redireccione
         $this->getJsonHelper()->setSuccess(true)->setValor("instituciones", $vResult);
     } catch (Exception $e) {
         print_r($e);
     }
     //setea headers y body en el response con los valores codificados
     $this->getJsonHelper()->sendJsonAjaxResponse();
 }
 public final function obtenerInstituciones($filtro, &$iRecordsTotal, $sOrderBy = null, $sOrder = null, $iIniLimit = null, $iRecordCount = null)
 {
     try {
         $db = $this->conn;
         //$filtro = $this->escapeStringArray($filtro);
         $sSQL = "SELECT SQL_CALC_FOUND_ROWS\n                          i.id as iId, \n                          i.nombre as sNombre,\n\t\t\t\t\t\t  i.`ciudades_id` as iCiudad,\n\t\t\t\t\t\t  i.`moderado` as iModerado,\n\t\t\t\t\t\t  i.`descripcion` as sDescripcion,\n\t\t\t\t\t\t  i.`tipoInstitucion_id` as iTipoInstitucion,\n\t\t\t\t\t\t  it.`nombre` as sNombreTipoInstitucion,\n\t\t\t\t\t\t  i.`direccion` as sDireccion,\n\t\t\t\t\t\t  i.`email` as sEmail,\n\t\t\t\t\t\t  i.`telefono` as sTelefono,\n\t\t\t\t\t\t  i.`sitioWeb` as sSitioWeb,\n\t\t\t\t\t\t  i.`horariosAtencion` as sHorariosAtencion,\n\t\t\t\t\t\t  i.`autoridades` as sAutoridades,\n\t\t\t\t\t\t  i.`cargo` as sCargo,\n\t\t\t\t\t\t  i.`personeriaJuridica` as sPersoneriaJuridica,\n\t\t\t\t\t\t  i.`sedes` as sSedes,\n\t\t\t\t\t\t  i.`actividadesMes` as sActividadesMes,\n\t\t\t\t\t\t  i.`usuario_id` as iUsuarioId,\n\t\t\t\t\t\t  i.`latitud` as sLatitud,\n\t\t\t\t\t\t  i.`longitud` as sLongitud,\n\t\t\t\t\t\t  prov.`id` as provinciaId, \n\t\t\t\t\t\t  pais.id as paisId\n                     FROM\n                       \tinstituciones i \n                     JOIN \n                     \tusuarios u ON u.id = i.usuario_id \n                     JOIN\n                     \tinstituciones_tipos it ON it.id = i.tipoInstitucion_id\n \t\t\t\t\tLEFT JOIN `ciudades` c on c.`id` = i.`ciudades_id`\n \t\t\t\t\tLEFT JOIN `provincias` prov on prov.`id` = c.`provincia_id`\n \t\t\t\t\tLEFT JOIN `paises` pais on pais.`id` = prov.`paises_id` ";
         $WHERE = array();
         if (isset($filtro['i.nombre']) && $filtro['i.nombre'] != "") {
             $WHERE[] = $this->crearFiltroTexto('i.nombre', $filtro['i.nombre']);
         }
         if (isset($filtro['i.id']) && $filtro['i.id'] != "") {
             $WHERE[] = $this->crearFiltroSimple('i.id', $filtro['i.id'], MYSQL_TYPE_INT);
         }
         if (isset($filtro['i.tipoInstitucion_id']) && $filtro['i.tipoInstitucion_id'] != "") {
             $WHERE[] = $this->crearFiltroSimple('i.tipoInstitucion_id', $filtro['i.tipoInstitucion_id'], MYSQL_TYPE_INT);
         }
         if (isset($filtro['pais.id']) && $filtro['pais.id'] != "") {
             $WHERE[] = $this->crearFiltroSimple('pais.id', $filtro['pais.id'], MYSQL_TYPE_INT);
         }
         if (isset($filtro['prov.id']) && $filtro['prov.id'] != "") {
             $WHERE[] = $this->crearFiltroSimple('prov.id', $filtro['prov.id'], MYSQL_TYPE_INT);
         }
         if (isset($filtro['i.ciudades_id']) && $filtro['i.ciudades_id'] != "") {
             $WHERE[] = $this->crearFiltroSimple('i.ciudades_id', $filtro['i.ciudades_id'], MYSQL_TYPE_INT);
         }
         if (isset($filtro['i.usuario_id']) && $filtro['i.usuario_id'] != "") {
             $WHERE[] = $this->crearFiltroSimple('i.usuario_id', $filtro['i.usuario_id'], MYSQL_TYPE_INT);
         }
         if (isset($filtro['i.tipoInstitucion_id']) && $filtro['i.tipoInstitucion_id'] != "") {
             $WHERE[] = $this->crearFiltroSimple('i.tipoInstitucion_id', $filtro['i.tipoInstitucion_id'], MYSQL_TYPE_INT);
         }
         $sSQL = $this->agregarFiltrosConsulta($sSQL, $WHERE);
         /*if(!empty($filtro)){     
           	$sSQL .=" AND ".$this->crearCondicionSimple($filtro);
           }*/
         if (isset($sOrderBy) && isset($sOrder)) {
             $sSQL .= " order by {$sOrderBy} {$sOrder} ";
         }
         if ($iIniLimit !== null && $iRecordCount !== null) {
             $sSQL .= " limit  " . $db->escape($iIniLimit, false, MYSQL_TYPE_INT) . "," . $db->escape($iRecordCount, false, MYSQL_TYPE_INT);
         }
         $db->query($sSQL);
         $iRecordsTotal = (int) $db->getDBValue("select FOUND_ROWS() as list_count");
         $aInstituciones = array();
         while ($oObj = $db->oNextRecord()) {
             $oInstitucion = new stdClass();
             $oInstitucion->iId = $oObj->iId;
             $oInstitucion->sNombre = $oObj->sNombre;
             $oInstitucion->iModerado = $oObj->iModerado;
             $oInstitucion->sDescripcion = $oObj->sDescripcion;
             $oInstitucion->iTipoInstitucion = $oObj->iTipoInstitucion;
             $oInstitucion->sNombreTipoInstitucion = $oObj->sNombreTipoInstitucion;
             $oInstitucion->sDireccion = $oObj->sDireccion;
             $oInstitucion->sEmail = $oObj->sEmail;
             $oInstitucion->sTelefono = $oObj->sTelefono;
             $oInstitucion->sSitioWeb = $oObj->sSitioWeb;
             $oInstitucion->sHorariosAtencion = $oObj->sHorariosAtencion;
             $oInstitucion->sAutoridades = $oObj->sAutoridades;
             $oInstitucion->sCargo = $oObj->sCargo;
             $oInstitucion->sPersoneriaJuridica = $oObj->sPersoneriaJuridica;
             $oInstitucion->sSedes = $oObj->sSedes;
             $oInstitucion->sActividadesMes = $oObj->sActividadesMes;
             $oInstitucion->iCiudadId = $oObj->iCiudad;
             $oInstitucion->sLatitud = $oObj->sLatitud;
             $oInstitucion->sLongitud = $oObj->sLongitud;
             $oInstitucion->oCiudad = ComunidadController::getInstance()->getCiudadById($oObj->iCiudad);
             $oInstitucion->oUsuario = SysController::getInstance()->getUsuarioById($oObj->iUsuarioId);
             $aInstituciones[] = Factory::getInstitucionInstance($oInstitucion);
         }
         return $aInstituciones;
     } catch (Exception $e) {
         return null;
         throw new Exception($e->getMessage(), 0);
     }
 }
 public function procesarSeguimiento()
 {
     //si accedio a traves de la url muestra pagina 404
     if (!$this->getAjaxHelper()->isAjaxContext()) {
         throw new Exception("", 404);
     }
     try {
         //se fija si existe callback de jQuery y lo guarda, tmb inicializa el array que se va a codificar
         $this->getJsonHelper()->initJsonAjaxResponse();
         $perfil = SessionAutentificacion::getInstance()->obtenerIdentificacion();
         $iTipoSeguimiento = $this->getRequest()->getPost('tipoSeguimiento');
         $iPersona = $this->getRequest()->getPost('personaId');
         $filtro = array("s.discapacitados_id" => $iPersona);
         $iRecordsTotal = 0;
         $sOrderBy = null;
         $sOrder = null;
         $iIniLimit = null;
         $iRecordCount = null;
         $listaSeguimientos = SeguimientosController::getInstance()->listarSeguimientos($filtro, $iRecordsTotal, $sOrderBy, $sOrder, $iIniLimit, $iRecordCount);
         if (count($listaSeguimientos) > 1) {
             $this->getJsonHelper()->setSuccess(false)->setMessage("La persona a la que quiere hacer un seguimiento ya posee 2. No se puede agregar mas de 2 seguimientos a una persona.");
             $this->getJsonHelper()->sendJsonAjaxResponse();
             return;
         } else {
             if (count($listaSeguimientos) > 0) {
                 if ($listaSeguimientos[0]->getTipoSeguimientoId() == $iTipoSeguimiento) {
                     $this->getJsonHelper()->setSuccess(false)->setMessage("No puede agregar 2 seguimientos del mismo tipo a una persona");
                     $this->getJsonHelper()->sendJsonAjaxResponse();
                     return;
                 }
             }
         }
         $sFrecuencias = $this->getRequest()->getPost('frecuencias');
         $sDiaHorario = $this->getRequest()->getPost('diaHorario');
         $iTipoPractica = $this->getRequest()->getPost('tipoPractica');
         $oTipoSeg = Factory::getTipoSeguimientoInstance(new stdClass());
         $sTipoSeguimiento = $oTipoSeg->getTipoById($iTipoSeguimiento);
         $obj = new stdClass();
         $oTipoPractica = Factory::getTipoPracticasSeguimientoInstance(new stdClass());
         $oTipoPractica->setId($iTipoPractica);
         $iRecordsTotal = 0;
         $sOrderBy = null;
         $sOrder = null;
         $iIniLimit = null;
         $iRecordCount = null;
         $filtro = array("p.id" => $iPersona);
         $oDiscapacitado = ComunidadController::getInstance()->obtenerDiscapacitado($filtro, $iRecordsTotal, $sOrderBy, $sOrder, $iIniLimit, $iRecordCount);
         $obj->oPractica = $oTipoPractica;
         $obj->sFrecuenciaEncuentros = $sFrecuencias;
         $obj->sDiaHorario = $sDiaHorario;
         $obj->oDiscapacitado = $oDiscapacitado;
         $obj->oUsuario = $perfil->getUsuario();
         if ($sTipoSeguimiento == "SCC") {
             $oSeguimiento = Factory::getSeguimientoSCCInstance($obj);
         } elseif ($sTipoSeguimiento == "PERSONALIZADO") {
             $oSeguimiento = Factory::getSeguimientoPersonalizadoInstance($obj);
         }
         $res = SeguimientosController::getInstance()->guardarSeguimiento($oSeguimiento);
         if ($res) {
             $this->getJsonHelper()->setSuccess(true);
         } else {
             $this->getJsonHelper()->setSuccess(false);
         }
     } catch (Exception $e) {
         $this->getJsonHelper()->setSuccess(false);
     }
     //setea headers y body en el response con los valores codificados
     $this->getJsonHelper()->sendJsonAjaxResponse();
 }