/** * * @param array $o -- Options array * Opciones psibles son: * string model => nombre del modelo * string field => nombre del campo que quiero buscar * string friendlyName => es el nombre que aparecerá en la pàgina de resultados de la búsqueda. Por ejemplo "Nombre de la Institución" * boolean forceText => hace que el valor buscado sea un texto si o si. Aunque venga un número como filtro de bñusqueda. * boolean asociarPlan => para realizar busquedas avanzadas en el sector del titulo por ejemplo * */ private function __aplicarCriterio($o = null) { if (empty($o)) { return -1; } // no hay nada que buscar // inicializo variables del array de opciones $model = empty($o['model']) ? $this->controller->modelClass : $o['model']; $field = $o['field']; $friendlyName = empty($o['friendlyName']) ? $field : $o['friendlyName']; $forceText = empty($o['forceText']) ? false : true; $valor = null; // es el valor DATO del campo que voy a buscar $asociarPlan = empty($o['asociarPlan']) ? false : true; $modelField = $model . '.' . $field; // lista de modelos que se van a consultar en la query $this->controller->paginate['modelosInvolucrados'] = array(); // paso al vector del paginador para unificar la busqueda if (!empty($this->controller->data[$model][$field])) { $valor = $this->controller->data[$model][$field]; } if (!empty($this->controller->passedArgs[$modelField])) { $valor = $this->controller->passedArgs[$modelField]; } $this->controller->passedArgs[$modelField] = $valor; if (!empty($valor)) { if ($asociarPlan) { $this->controller->Instit->asociarPlan = true; } $this->controller->paginate['modelosInvolucrados'][] = $model; $friendlyName = empty($friendlyName) ? $field : $friendlyName; $this->controller->paginate['viewConditions'][$friendlyName] = $valor; if (!is_numeric($valor) && !is_array($valor) && is_string($valor) || $forceText === true) { // es texto $this->controller->paginate[$this->controller->modelClass]['conditions']['to_ascii(lower(' . $modelField . ')) SIMILAR TO ?'] = convertir_para_busqueda_avanzada($valor); $array_condiciones[$modelField] = $valor; $url_conditions[$field] = $valor; } else { if (substr($field, -3) == '_id') { // es FK, por lo tanto me traigo el nombre // para mostrar en el resutado de busquedas (para mostrar en la vista el camp "name" del Modelo $miniModel = substr($field, 0, strlen($field) - 3); $model = Inflector::camelize($miniModel); $rModel =& ClassRegistry::init($model); $rModel->id = $valor; $this->controller->paginate['viewConditions'][$friendlyName] = $rModel->field('name'); } // es un numero, como por ejemplo una FK $this->controller->paginate[$this->controller->modelClass]['conditions'][$modelField] = $valor; } } }
function search_instits($q = null) { $this->autoRender = false; if ($this->RequestHandler->isAjax()) { Configure::write('debug', 0); } $response = ''; if (empty($q)) { if (!empty($this->params['url']['q'])) { $q = utf8_decode(strtolower($this->params['url']['q'])); } else { return utf8_encode("parámetro vacio"); } } if (is_numeric($q)) { $items = $this->FondoTemporal->Instit->find("all", array('contain' => array('Tipoinstit', 'Jurisdiccion', 'HistorialCue'), 'conditions' => array("to_char(cue*100+anexo, 'FM999999999FM') SIMILAR TO ?" => "%" . $q . "%"))); /*$cues_h = $this->FondoTemporal->Instit->HistorialCue->find("all", array( 'conditions'=> array( "OR"=>array( "cue = ?" => $q, "(cue * 100 + anexo) = ?" => $q ) ) ));*/ } else { $items = $this->FondoTemporal->Instit->find("all", array('contain' => array('Tipoinstit', 'Jurisdiccion', 'HistorialCue'), 'conditions' => array("(lower(Tipoinstit.name) || lower(Instit.nombre)) SIMILAR TO ?" => convertir_para_busqueda_avanzada($q)))); } $result = array(); foreach ($items as $item) { $cuecompleto = $item['Instit']['cue'] * 100 + $item['Instit']['anexo']; array_push($result, array("id" => $item['Instit']['id'], "cue" => $item['Instit']['cue'] * 100 + $item['Instit']['anexo'], "nombre" => utf8_encode($item['Instit']['nombre']), "gestion" => utf8_encode($item['Gestion']['name']), "nroinstit" => utf8_encode($item['Instit']['nroinstit']), "anio_creacion" => utf8_encode($item['Instit']['anio_creacion']), "direccion" => utf8_encode($item['Instit']['direccion']), "depto" => utf8_encode($item['Instit']['depto']), "localidad" => utf8_encode($item['Instit']['localidad']), "cp" => utf8_encode($item['Instit']['cp']), "tipo" => utf8_encode($item['Tipoinstit']['name']), "jurisdiccion" => utf8_encode($item['Jurisdiccion']['name']), "jurisdiccion_id" => utf8_encode($item['Jurisdiccion']['id']), "cue_anterior" => utf8_encode($item['HistorialCue'][0]['cue']))); } echo json_encode($result); //echo $response; }
/** * busca similares por Tipo instit + Nro Instit en la misma Jurisdiccion * utiliza $this->data * @return array del tipo find('all') */ private function __buscarSimilaresPorTipoYNumeroEnJurisiccion() { $similars = array(); if (!empty($this->data['Instit']['localidad_id']) && !empty($this->data['Instit']['nroinstit']) && !empty($this->data['Instit']['tipoinstit_id'])) { $conditions = array("Instit.localidad_id" => $this->data['Instit']['localidad_id'], "lower(nroinstit) SIMILAR TO ?" => convertir_para_busqueda_avanzada($this->data['Instit']['nroinstit']), "tipoinstit_id" => $this->data['Instit']['tipoinstit_id']); if (!empty($this->data['Instit']['id'])) { $conditions['Instit.id <>'] = $this->data['Instit']['id']; } $similars = $this->find('all', array('conditions' => $conditions)); if (count($similars) > 0) { $this->validationErrors += array('nroinstit' => 'Hay una institución en la misma localidad, con el mismo tipo y número'); $this->validationErrors += array('localidad_id' => ''); $this->validationErrors += array('tipoinstit_id' => ''); } } return $similars; }
function ajax_search($q = null) { $this->autoRender = false; $result = array(); $jur = 0; if (!empty($this->params['url']['oferta_id'])) { $oferta_id = utf8_decode(strtolower($this->params['url']['oferta_id'])); } if (!empty($this->params['url']['sector_id'])) { $sector_id = utf8_decode(strtolower($this->params['url']['sector_id'])); } if (!empty($this->params['url']['subsector_id'])) { $subsector_id = utf8_decode(strtolower($this->params['url']['subsector_id'])); } if (empty($q)) { if (!empty($this->params['url']['q'])) { $q = utf8_decode(strtolower($this->params['url']['q'])); } else { return utf8_encode("parámetro vacio"); } } if ($this->RequestHandler->isAjax()) { Configure::write('debug', 0); } $response = ''; $conditions = array(); $subconditions = array(); $conditions["lower(Titulo.name) SIMILAR TO ?"] = convertir_para_busqueda_avanzada($q); $subconditions = array('Titulo.id = SectoresTitulos.titulo_id'); if (@$oferta_id > 0) { $conditions["Titulo.oferta_id"] = $oferta_id; } if (@$sector_id > 0) { $subconditions["SectoresTitulos.sector_id ="] = $sector_id; } if (@$subsector_id > 0) { $subconditions["SectoresTitulos.subsector_id ="] = $subsector_id; } $this->Titulo->recursive = -1; $titulos = $this->Titulo->find("all", array('fields' => array('DISTINCT Titulo.id', 'Titulo.name'), 'conditions' => $conditions, 'order' => array('Titulo.name'), 'joins' => array(array('table' => 'sectores_titulos', 'alias' => 'SectoresTitulos', 'type' => 'INNER', 'conditions' => $subconditions)))); foreach ($titulos as $item) { array_push($result, array("id" => $item['Titulo']['id'], "type" => "Titulo", "name" => utf8_encode($item['Titulo']['name']))); } if (sizeof($result) == 0) { array_push($result, array("id" => '', "type" => "Vacio", "name" => 'No se encontraron resultados')); } echo json_encode($result); }
function ajax_search_localidades_y_departamentos($q = null) { $this->autoRender = false; $result = array(); $jur = 0; if (!empty($this->params['url']['jur'])) { $jur = utf8_decode(strtolower($this->params['url']['jur'])); } if (empty($q)) { if (!empty($this->params['url']['q'])) { $q = utf8_decode(strtolower($this->params['url']['q'])); } else { return utf8_encode("parámetro vacio"); } } if ($this->RequestHandler->isAjax()) { Configure::write('debug', 0); } $response = ''; if ($jur != 0) { $conditions = array("lower(Departamento.name) SIMILAR TO ?" => convertir_para_busqueda_avanzada($q), "Jurisdiccion.id" => $jur); } else { $conditions = array("lower(Departamento.name) SIMILAR TO ?" => convertir_para_busqueda_avanzada($q)); } $deptos = $this->Localidad->Departamento->find("all", array('contain' => array('Jurisdiccion'), 'conditions' => $conditions, 'order' => array('Jurisdiccion.id'))); foreach ($deptos as $item) { array_push($result, array("id" => $item['Departamento']['id'], "type" => "Departamento", "localidad_id" => '0', "localidad" => '', "departamento" => utf8_encode($item['Departamento']['name']), "departamento_id" => $item['Departamento']['id'], "jurisdiccion" => utf8_encode($item['Jurisdiccion']['name']))); } $localidades = $this->Localidad->find("all", array('contain' => array('Departamento' => array('Jurisdiccion')), 'conditions' => array("OR" => array("to_ascii(lower(Localidad.name)) SIMILAR TO ?" => convertir_para_busqueda_avanzada($q), "to_ascii(lower(Departamento.name)) SIMILAR TO ?" => convertir_para_busqueda_avanzada($q))), 'order' => array('Departamento.id'))); foreach ($localidades as $item) { if ($jur == 0 || $item['Departamento']['jurisdiccion_id'] == $jur) { array_push($result, array("id" => $item['Localidad']['id'], "type" => "Localidad", "localidad" => utf8_encode($item['Localidad']['name']), "localidad_id" => $item['Localidad']['id'], "departamento" => utf8_encode($item['Departamento']['name']), "departamento_id" => $item['Departamento']['id'], "jurisdiccion" => utf8_encode($item['Departamento']['Jurisdiccion']['name']))); } } if (sizeof($result) == 0) { array_push($result, array("id" => '', "type" => "Vacio", "localidad" => 'No se encontraron resultados')); } echo json_encode($result); }
function prueba() { $this->autoRender = false; // para uqe no muestre la vista die(convertir_para_busqueda_avanzada("pepino")); }
/** * Esta accion es el procesamiento del formulario de busqueda * maneja las condiciones de la busqueda y el paginador * */ function filtros_search_results($oferta_id = 0) { Configure::write('debug', 0); $array_condiciones = array(); $array_condiciones_ubicacion = array(); $url_conditions = array(); $filtros = array(); // si se realizó una búsqueda se limpia la session foreach ($this->sesNames as $sesName) { if ($sesName != $this->sesNames['page']) { $this->Session->write($sesName, ''); } } if (!empty($this->data)) { if (!empty($this->data['Titulo']['busquedanueva']) && !$this->data['Titulo']['bysession']) { $this->Session->write($this->sesNames['page'], ''); } if (!empty($this->data['Titulo']['tituloName'])) { $this->passedArgs['tituloName'] = $this->data['Titulo']['tituloName']; $this->Session->write($this->sesNames['nombre'], $this->data['Titulo']['tituloName']); } if (!empty($this->data['Titulo']['oferta_id'])) { $this->passedArgs['ofertaId'] = $this->data['Titulo']['oferta_id']; $this->Session->write($this->sesNames['oferta'], $this->data['Titulo']['oferta_id']); } if (!empty($this->data['Titulo']['sector_id'])) { $this->passedArgs['sectorId'] = $this->data['Titulo']['sector_id']; $this->Session->write($this->sesNames['sector'], $this->data['Titulo']['sector_id']); } if (!empty($this->data['Titulo']['subsector_id'])) { $this->passedArgs['subsectorId'] = $this->data['Titulo']['subsector_id']; $this->Session->write($this->sesNames['subsector'], $this->data['Titulo']['subsector_id']); } if (!empty($this->data['Instit']['jurisdiccion_id'])) { $this->passedArgs['jurisdiccionId'] = $this->data['Instit']['jurisdiccion_id']; $this->Session->write($this->sesNames['jurisdiccion'], $this->data['Instit']['jurisdiccion_id']); } if (!empty($this->data['Instit']['departamento_id'])) { $this->passedArgs['departamentoId'] = $this->data['Instit']['departamento_id']; $this->Session->write($this->sesNames['departamento'], $this->data['Instit']['departamento_id']); $this->Session->write($this->sesNames['tituloJurDepLoc'], $this->data['Instit']['jur_dep_loc']); } if (!empty($this->data['Instit']['localidad_id'])) { $this->passedArgs['localidadId'] = $this->data['Instit']['localidad_id']; $this->Session->write($this->sesNames['localidad'], $this->data['Instit']['localidad_id']); $this->Session->write($this->sesNames['tituloJurDepLoc'], $this->data['Instit']['jur_dep_loc']); } if (!empty($this->data['Instit']['gestion_id'])) { $this->passedArgs['gestionId'] = $this->data['Instit']['gestion_id']; $this->Session->write($this->sesNames['gestion'], $this->data['Instit']['gestion_id']); } if (!empty($this->data['Instit']['nombre'])) { $this->passedArgs['institName'] = utf8_decode($this->data['Instit']['nombre']); $this->Session->write($this->sesNames['institName'], utf8_decode($this->data['Instit']['nombre'])); } } if (!empty($this->passedArgs['tituloName'])) { $q = utf8_decode(strtolower($this->passedArgs['tituloName'])); $array_condiciones['conditions']['lower(Titulo.name) SIMILAR TO ?'] = convertir_texto_plano($q); } if (!empty($this->passedArgs['ofertaId'])) { $q = $this->passedArgs['ofertaId']; $array_condiciones['conditions']['Titulo.oferta_id'] = $q; } if (!empty($this->passedArgs['sectorId']) || !empty($this->passedArgs['subsectorId'])) { if (!empty($this->passedArgs['sectorId'])) { $q = $this->passedArgs['sectorId']; $array_condiciones['conditions']['SectoresTitulo.sector_id'] = $q; } if (!empty($this->passedArgs['subsectorId'])) { $q = $this->passedArgs['subsectorId']; $array_condiciones['conditions']['SectoresTitulo.subsector_id'] = $q; } } if (!empty($this->passedArgs['jurisdiccionId'])) { $q = $this->passedArgs['jurisdiccionId']; $array_condiciones['conditions']['Instit.jurisdiccion_id'] = $q; $array_condiciones_ubicacion['Instit.jurisdiccion_id'] = $q; } if (!empty($this->passedArgs['departamentoId'])) { $q = $this->passedArgs['departamentoId']; $array_condiciones['conditions']['Instit.departamento_id'] = $q; $array_condiciones_ubicacion['Instit.departamento_id'] = $q; } if (!empty($this->passedArgs['localidadId'])) { $q = $this->passedArgs['localidadId']; $array_condiciones['conditions']['Instit.localidad_id'] = $q; $array_condiciones_ubicacion['Instit.localidad_id'] = $q; } if (!empty($this->passedArgs['gestionId'])) { $q = $this->passedArgs['gestionId']; $array_condiciones['conditions']['Instit.gestion_id'] = $q; $array_condiciones_ubicacion['Instit.gestion_id'] = $q; } if (!empty($this->passedArgs['institName'])) { $q = $this->passedArgs['institName']; $array_condiciones['conditions']["lower(Instit.nombre) SIMILAR TO ?"] = convertir_para_busqueda_avanzada($q); $array_condiciones_ubicacion['conditions']["lower(Instit.nombre) SIMILAR TO ?"] = convertir_para_busqueda_avanzada($q); } if (!empty($this->passedArgs['page'])) { //$this->paginate['page'] = $this->passedArgs['page']; $this->Session->write($this->sesNames['page'], $this->passedArgs['page']); } elseif ($this->Session->read($this->sesNames['page'])) { $array_condiciones['page'] = $this->Session->read($this->sesNames['page']); } $array_condiciones['fields'] = array('Titulo.id', 'Titulo.name', 'Titulo.marco_ref', 'Titulo.oferta_id', 'Titulo.es_bb', 'Oferta.abrev'); $array_condiciones['group'] = $array_condiciones['fields']; $array_condiciones['order'] = array('Titulo.name ASC, Titulo.oferta_id ASC'); $array_condiciones['recursive'] = 3; // find completo $this->paginate = $array_condiciones; $titulos = $this->paginate(); // si contiene carreras prioritarias $contieneBb = $this->Titulo->contieneBb($titulos); //FILTROS $array_condiciones['recursive'] = -1; $array_condiciones['contain'] = null; $array_condiciones['order'] = null; $array_condiciones['joins'] = array(array('table' => 'planes', 'type' => 'LEFT', 'alias' => 'Plan', 'conditions' => array('Titulo.id = Plan.titulo_id')), array('table' => 'instits', 'type' => 'LEFT', 'alias' => 'Instit', 'conditions' => array('Instit.id = Plan.instit_id')), array('table' => 'gestiones', 'type' => 'LEFT', 'alias' => 'Gestion', 'conditions' => array('Gestion.id = Instit.gestion_id')), array('table' => 'jurisdicciones', 'type' => 'LEFT', 'alias' => 'Jurisdiccion', 'conditions' => array('Jurisdiccion.id = Instit.jurisdiccion_id')), array('table' => 'departamentos', 'type' => 'LEFT', 'alias' => 'Departamento', 'conditions' => array('Departamento.id = Instit.departamento_id')), array('table' => 'localidades', 'type' => 'LEFT', 'alias' => 'Localidad', 'conditions' => array('Localidad.id = Instit.localidad_id')), array('table' => 'sectores_titulos', 'type' => 'LEFT', 'alias' => 'SectoresTitulo', 'conditions' => array('SectoresTitulo.titulo_id = Titulo.id')), array('table' => 'sectores', 'type' => 'LEFT', 'alias' => 'Sector', 'conditions' => array('SectoresTitulo.sector_id = Sector.id')), array('table' => 'subsectores', 'type' => 'LEFT', 'alias' => 'Subsector', 'conditions' => array('SectoresTitulo.subsector_id = Subsector.id')), array('table' => 'ofertas', 'type' => 'LEFT', 'alias' => 'Oferta', 'conditions' => array('Titulo.oferta_id = Oferta.id'))); $array_condiciones['fields'] = array('Oferta.id', 'Oferta.name'); $array_condiciones['group'] = array('Oferta.id', 'Oferta.name'); $array_condiciones['order'] = array('Oferta.name'); $filtros['Oferta'] = $this->Titulo->find('all', $array_condiciones); $array_condiciones['fields'] = array('Sector.id', 'Sector.name'); $array_condiciones['group'] = array('Sector.id', 'Sector.name'); $array_condiciones['order'] = array('Sector.name'); $filtros['Sector'] = $this->Titulo->find('all', $array_condiciones); $array_condiciones['fields'] = array('Jurisdiccion.id', 'Jurisdiccion.name'); $array_condiciones['group'] = array('Jurisdiccion.id', 'Jurisdiccion.name'); $array_condiciones['order'] = array('Jurisdiccion.name'); $filtros['Jurisdiccion'] = $this->Titulo->find('all', $array_condiciones); $array_condiciones['fields'] = array('Departamento.id', 'Departamento.name'); $array_condiciones['group'] = array('Departamento.id', 'Departamento.name'); $array_condiciones['order'] = array('Departamento.name'); $filtros['Departamento'] = $this->Titulo->find('all', $array_condiciones); $array_condiciones['fields'] = array('Localidad.id', 'Localidad.name'); $array_condiciones['group'] = array('Localidad.id', 'Localidad.name'); $array_condiciones['order'] = array('Localidad.name'); $filtros['Localidad'] = $this->Titulo->find('all', $array_condiciones); $array_condiciones['fields'] = array('Gestion.id', 'Gestion.name'); $array_condiciones['group'] = array('Gestion.id', 'Gestion.name'); $array_condiciones['order'] = array('Gestion.name'); $filtros['Gestion'] = $this->Titulo->find('all', $array_condiciones); if (empty($this->passedArgs['jurisdiccionId']) && count($filtros['Jurisdiccion']) > 1) { $filtros['Departamento'] = null; } if (empty($this->passedArgs['departamentoId']) && (count($filtros['Departamento']) > 1 || count($filtros['Jurisdiccion']) > 1)) { $filtros['Localidad'] = null; } $filtros['TituloName'] = empty($this->passedArgs['tituloName']) ? '' : $this->passedArgs['tituloName']; $filtros['InstitName'] = empty($this->passedArgs['institName']) ? '' : $this->passedArgs['institName']; $this->set('titulos', $titulos); $this->set('filtros', $filtros); $this->set('contieneBb', $contieneBb); }
function search_results() { if ($this->RequestHandler->isAjax()) { Configure::write('debug', 0); } //para mostrar en vista los patrones de busqueda seleccionados $this->paginate['viewConditions'] = array(); // primero seteo si vino formulario o fue el paginador quien llego a este action" $vino_formulario = !empty($this->data) ? true : false; /******************************************************************* * INICIALIZACION DE FILTROS * * Los filtros pueden provenir del formulario o de las variables de paginacion. * * Para el primer caso se esta leyendo informacion de $this->data * en el segundo caso de this->passedArgs * * */ /* * BUSQUEDA LIBRE */ if (!empty($this->data['Instit']['busqueda_libre'])) { $this->passedArgs = array('busqueda_libre' => $this->data['Instit']['busqueda_libre']); } if (!empty($this->passedArgs['busqueda_libre'])) { $q = utf8_decode(strtolower($this->passedArgs['busqueda_libre'])); if (is_numeric($q)) { $q = (int) $q; $this->paginate['Instit']['conditions'] = array("to_char(cue*100+anexo, 'FM999999999FM') SIMILAR TO ?" => "%" . $q . "%"); } else { //debug(convertir_para_busqueda_avanzada($q)); die(); $this->paginate['Instit']['conditions'] = array("(to_ascii(lower(Tipoinstit.name)) || ' n ' || to_ascii(lower(Instit.nroinstit)) || ' ' || lower(Instit.nombre)) SIMILAR TO ?" => convertir_para_busqueda_avanzada($q)); } $this->paginate['viewConditions']['CUE o Nombre '] = utf8_decode($this->passedArgs['busqueda_libre']); $this->Session->write($this->sesNames['busqueda_libre'], $this->data['Instit']['busqueda_libre']); } /* * CUE */ if (!empty($this->data['Instit']['cue'])) { $is_cue_valido = $this->Instit->isCUEValid($this->data['Instit']['cue']); if ($is_cue_valido < 1) { switch ($is_cue_valido) { case -1: $mensaje = "<H1>El CUE: '" . $this->data['Instit']['cue'] . "' no es válido.</H1> Ingrese un valor <b>numúrico</b> de al menos <b>3 dígitos</b>."; $this->Session->setFlash($mensaje, 'default', array('class' => 'flash-warning')); break; } } // con esto hago que no se busque con un cero adelante $this->data['Instit']['cue'] = (int) $this->data['Instit']['cue']; $this->passedArgs = array('cue' => $this->data['Instit']['cue']); } if (!empty($this->passedArgs['cue'])) { // set the conditions $arr_cond1 = array('CAST(((Instit.cue*100)+Instit.anexo) as character(60)) SIMILAR TO ?' => '%' . $this->passedArgs['cue'] . '%'); $this->paginate['Instit']['conditions'] = $arr_cond1; // set the Search data, so the form remembers the option $this->paginate['viewConditions']['CUE'] = $this->passedArgs['cue']; } /** * ACTIVO */ if (isset($this->data['Instit']['activo'])) { switch ((int) $this->data['Instit']['activo']) { case -1: break; // es el valor vacio. O sea, buscar por todos // es el valor vacio. O sea, buscar por todos case 0: // inactivas // inactivas case 1: //buscar activas $this->passedArgs['activo'] = $this->data['Instit']['activo']; } } if (isset($this->passedArgs['activo'])) { switch ((int) $this->passedArgs['activo']) { case -1: $basura = 1; break; // es el valor empty. O sea, buscar por todos // es el valor empty. O sea, buscar por todos case 0: //inactivas //inactivas case 1: //activas $this->paginate['Instit']['conditions']['Instit.activo'] = $this->passedArgs['activo']; $aux = $this->passedArgs['activo'] ? 'Si' : 'No'; $this->paginate['viewConditions']['Ingresada al RFIETP'] = $aux; break; } } /** * NOMBRE COMPLETO */ if (!empty($this->data['Instit']['nombre_completo'])) { $this->passedArgs['nombre_completo'] = utf8_encode($this->data['Instit']['nombre_completo']); } if (!empty($this->passedArgs['nombre_completo'])) { $this->paginate['Instit']['conditions']["to_ascii(lower(Tipoinstit.name))||' n '||" . "to_ascii(lower(Instit.nroinstit))||' '||" . "to_ascii(lower(Instit.nombre)) SIMILAR TO ?"] = array(convertir_para_busqueda_avanzada(utf8_decode($this->passedArgs['nombre_completo']))); $this->paginate['viewConditions']['Tipo, Número o Nombre '] = utf8_decode($this->passedArgs['nombre_completo']); } if (!empty($this->data['Titulo']['que'])) { $this->paginate['Instit']['conditions']['(lower(Tipoinstit.name) || lower(Titulo.name) || lower(Plan.name) || lower(Sector.name) || lower(Subsector.name)) SIMILAR TO ?'] = convertir_para_busqueda_avanzada(utf8_decode($this->data['Titulo']['que'])); } if (!empty($this->data['Titulo']['donde'])) { $this->paginate['Instit']['conditions']['(lower(Jurisdiccion.name) || lower(Departamento.name) || lower(Localidad.name) || lower(Instit.name)) SIMILAR TO ?'] = convertir_para_busqueda_avanzada(utf8_decode($this->data['Titulo']['donde'])); } /* para el campo de departamento/localidad */ if (!empty($this->data['Instit']['jur_dep_loc'])) { if (!empty($this->data['Instit']['departamento_id'])) { $dto = $this->Instit->Departamento->findById($this->data['Instit']['departamento_id']); $this->data['Instit']['jur_dep_loc'] = utf8_decode($this->data['Instit']['jur_dep_loc']); $nombre = $dto["Departamento"]["name"] . " (" . $dto["Jurisdiccion"]["name"] . ")"; if ($nombre != $this->data['Instit']['jur_dep_loc']) { unset($this->data['Instit']['departamento_id']); $q = $this->data['Instit']['jur_dep_loc']; $this->paginate['Instit']['conditions']["to_ascii(lower(Localidad.name) || lower(Departamento.name) || lower(Jurisdiccion.name)) SIMILAR TO ?"] = convertir_para_busqueda_avanzada($q); } $this->Session->write($this->sesNames['departamento'], $this->data['Instit']['departamento_id']); } elseif (!empty($this->data['Instit']['localidad_id'])) { $loc = $this->Instit->Localidad->find("first", array("conditions" => array("Localidad.id" => $this->data['Instit']['localidad_id']), "contain" => array("Departamento" => array("Jurisdiccion")))); $nombre = $loc["Localidad"]["name"] . ", " . $loc["Departamento"]["name"] . " (" . $loc["Departamento"]["Jurisdiccion"]["name"] . ")"; $this->data['Instit']['jur_dep_loc'] = utf8_decode($this->data['Instit']['jur_dep_loc']); if ($nombre != $this->data['Instit']['jur_dep_loc']) { unset($this->data['Instit']['localidad_id']); $q = $this->data['Instit']['jur_dep_loc']; $this->paginate['conditions']["to_ascii(lower(Localidad.name) || lower(Departamento.name) || lower(Jurisdiccion.name)) SIMILAR TO ?"] = convertir_para_busqueda_avanzada($q); } $this->Session->write($this->sesNames['localidad'], $this->data['Instit']['localidad_id']); } $q = $this->data['Instit']['jur_dep_loc']; $this->paginate['conditions']["to_ascii(lower(Localidad.name) || lower(Departamento.name) || lower(Jurisdiccion.name)) SIMILAR TO ?"] = convertir_para_busqueda_avanzada($q); $this->Session->write($this->sesNames['jurDepLoc'], $this->data['Instit']['jur_dep_loc']); } if (!empty($this->data['Instit']['jurisdiccion_id'])) { $this->Session->write($this->sesNames['jurisdiccion'], $this->data['Instit']['jurisdiccion_id']); } if (!empty($this->data['Instit']['direccion'])) { $this->Session->write($this->sesNames['direccion'], $this->data['Instit']['direccion']); } if (!empty($this->passedArgs['page'])) { //$this->paginate['page'] = $this->passedArgs['page']; $this->Session->write($this->sesNames['page'], $this->passedArgs['page']); } elseif ($this->Session->read($this->sesNames['page'])) { $this->paginate['page'] = $this->Session->read($this->sesNames['page']); } //////////////// Automagiccccs filter // Nro Institucion $ops[] = array('model' => 'Instit', 'field' => 'nroinstit', 'friendlyName' => 'Nº de Institución', 'forceText' => true); // Jurisdiccion $ops[] = array('field' => 'jurisdiccion_id', 'friendlyName' => 'Jurisdicción'); // Departamento $ops[] = array('field' => 'departamento_id', 'friendlyName' => 'Departamento'); // Localidad $ops[] = array('field' => 'localidad_id', 'friendlyName' => 'Localidad'); // TIPO INSTIT $ops[] = array('field' => 'tipoinstit_id', 'friendlyName' => 'Tipo Institución'); // Nombre $ops[] = array('field' => 'nombre', 'friendlyName' => 'Nombre'); // Direccion $ops[] = array('field' => 'direccion', 'friendlyName' => 'Domicilio'); // GESTION $ops[] = array('field' => 'gestion_id', 'friendlyName' => 'Ámbito de Gestión'); // DEPENDENCIA $ops[] = array('field' => 'dependencia_id', 'friendlyName' => 'Dependencia'); // OFERTA $ops[] = array('model' => 'Plan', 'field' => 'oferta_id', 'friendlyName' => 'Con Oferta', 'asociarPlan' => true); // SECTOR $ops[] = array('model' => 'SectoresTitulo', 'field' => 'sector_id', 'friendlyName' => 'Sector', 'asociarPlan' => true); // Subsector $ops[] = array('model' => 'SectoresTitulo', 'field' => 'subsector_id', 'friendlyName' => 'Subsector', 'asociarPlan' => true); // TITULOS REFERENCIALES $ops[] = array('model' => 'Plan', 'field' => 'titulo_id', 'friendlyName' => 'Título o Certificado', 'asociarPlan' => true); // ORIENTACION $ops[] = array('field' => 'orientacion_id', 'friendlyName' => 'Orientación'); // NORMA $ops[] = array('model' => 'Plan', 'field' => 'norma', 'friendlyName' => 'Norma', 'asociarPlan' => true); // Tipo Instit $ops[] = array('field' => 'claseinstit_id', 'friendlyName' => 'Tipo de Institución de ETP'); // Tipo Instit $ops[] = array('model' => 'Instit', 'field' => 'etp_estado_id', 'friendlyName' => 'Relación con ETP'); $this->Buscable->aplicarCriteriosDeBusqueda($ops); /*********************************************************************/ /* FIN -*-CONDITIONS-*- de busqueda */ /*********************************************************************/ $this->Instit->recursive = 1; //para alivianar la carga del server $pagin = $this->paginate('Instit'); $this->set('instits', $pagin); $this->set('url_conditions', $this->passedArgs); $this->set('conditions', $this->paginate['viewConditions']); if (!empty($this->passedArgs['Plan.titulo_id'])) { $this->set('referer', $this->passedArgs['Plan.titulo_id']); } if (!$this->RequestHandler->isAjax()) { // si se encontro solo 1 institucion, ir directamente a la vista de esa institucion // si el resultado me trajo 1, y eestoy buscando por CUE, entonces ir directamente a la vista d esas institucion if (sizeof($pagin) == 1 && $vino_formulario) { if (!empty($this->data['Instit']['cue'])) { if ($pagin[0]['Instit']['cue'] == $this->data['Instit']['cue'] || $pagin[0]['Instit']['cue'] * 100 + $pagin[0]['Instit']['anexo'] == $this->data['Instit']['cue']) { $this->redirect('view/' . $pagin[0]['Instit']['id']); } } } } }
function view_fp($instit_id, $oferta_id, $ciclo = 0) { Controller::disableCache(); $es_una_busqueda = false; $sesNames = array('instit' => 'Instit.id', 'plan' => 'Plan.nombre' . $instit_id . $oferta_id . $ciclo, 'sector' => 'Sector.id' . $instit_id . $oferta_id, 'page' => 'page' . $instit_id . $oferta_id . $ciclo); if (!empty($this->data['Plan']['nombre'])) { $this->data['Plan']['nombre'] = utf8_decode($this->data['Plan']['nombre']); } if (!empty($this->data)) { $es_una_busqueda = true; $this->Session->write($sesNames['instit'], $instit_id); $this->Session->write($sesNames['plan'], $this->data['Plan']['nombre']); $this->Session->write($sesNames['sector'], $this->data['Sector']['id']); $this->Session->write('page', ''); } else { // busqueda en Session if ($this->Session->read($sesNames['instit']) == $instit_id) { if ($this->Session->read($sesNames['plan'])) { $this->data['Plan']['nombre'] = $this->Session->read($sesNames['plan']); } if ($this->Session->read($sesNames['sector'])) { $this->data['Sector']['id'] = $this->Session->read($sesNames['sector']); } $es_una_busqueda = true; } } $url_conditions = $this->passedArgs; if (!empty($this->passedArgs['page'])) { $this->Session->write($sesNames['page'], $this->passedArgs['page']); } elseif ($this->Session->read($sesNames['page'])) { $this->paginate['page'] = $this->Session->read($sesNames['page']); } $planNombre = null; if (!empty($this->data['Plan']['nombre'])) { $planNombre = $this->data['Plan']['nombre']; } if (!empty($this->passedArgs['Plan.nombre'])) { $planNombre = utf8_decode($this->passedArgs['Plan.nombre']); } if (!empty($planNombre)) { $this->paginate['conditions']['lower(Plan.nombre) SIMILAR TO ?'] = array(convertir_para_busqueda_avanzada($planNombre)); $url_conditions['Plan.nombre'] = $planNombre; } $sectorId = null; if (!empty($this->data['Sector']['id'])) { $sectorId = $this->data['Sector']['id']; } if (!empty($this->passedArgs['Sector.id'])) { $sectorId = $this->passedArgs['Sector.id']; } if (!empty($sectorId)) { $this->paginate['conditions']['SectoresTitulo.sector_id'] = $sectorId; $url_conditions['Sector.id'] = $sectorId; } if (!empty($ciclo)) { $this->paginate['conditions']['Anio.ciclo_id'] = $ciclo; } $this->paginate['asociarAnio'] = true; $this->paginate['conditions']['Plan.oferta_id'] = $oferta_id; $this->paginate['conditions']['Instit.id'] = $instit_id; $this->paginate['order'] = array("Plan.nombre"); $this->paginate['recursive'] = 3; // find completo $planes = $this->paginate(); $newVecPlanes = array(); $i = 0; foreach ($planes as &$plan) { if ($ciclo == 0) { $ultimo_ciclo = $this->Plan->getUltimoCiclo($plan['Plan']['id']); $plan['Plan']['matricula'] = $this->Plan->dameMatriculaDeCiclo($plan['Plan']['id'], $ultimo_ciclo); } else { $plan['Plan']['matricula'] = $this->Plan->dameMatriculaDeCiclo($plan['Plan']['id'], $ciclo); } } $sectores = $this->Plan->Instit->listSectoresConOferta($instit_id, $oferta_id); $ciclos_anios = $this->Plan->Instit->getCiclosLectivosXOferta($instit_id, $agregar_anio_actual = false); $ciclos_anios = $ciclos_anios[FP_ID]['ciclo']; $this->set('es_una_busqueda', $es_una_busqueda); $this->set('sectores', $sectores); $this->set('planes', $planes); $this->set('instit_id', $instit_id); $this->set('oferta_id', $oferta_id); $this->set('ciclo', $ciclo); $this->set('ciclos_anios', $ciclos_anios); $this->set('url_conditions', $url_conditions); }
function corrector_de_planes() { //// dejo un log de ingreso $username = $this->Auth->user('nombre') . ' ' . $this->Auth->user('apellido') . ' (' . $this->Auth->user('username') . ')'; $grupo = $this->Session->read('User.group_alias'); $this->Instit->logDepuradores($username, $grupo, "corrector_de_planes"); /********************** GUARDADO DE LOS PLANES SELECCIONADOS *******/ if (!empty($this->data['Plan'])) { $planesGuardar = array(); foreach ($this->data['Plan']['planes'] as $checkbox) { //$this->redirect(array('corrector_de_planes', @$this->data['Plan']['url_conditions'])); if ($checkbox['selected'] == 1) { $planesGuardar[] = $checkbox['id']; } } if (empty($planesGuardar)) { $this->Session->setFlash(__('Debe seleccionar uno o más Planes')); } if (empty($this->data['Plan']['titulo_id'])) { $this->Session->setFlash(__('Debe seleccionar un Título')); } if (!empty($planesGuardar) && $this->data['Plan']['titulo_id'] > 0) { $this->Titulo->Plan->recursive = -1; $PlanesData = $this->Titulo->Plan->find('all', array('fields' => array('Plan.id', 'Plan.oferta_id'), 'conditions' => array('Plan.id' => $planesGuardar))); $this->Titulo->recursive = -1; $tituloData = $this->Titulo->find('first', array('fields' => array('Titulo.id', 'Titulo.oferta_id'), 'conditions' => array('Titulo.id' => $this->data['Plan']['titulo_id']))); // comprobar que no se va a asignar un titulo de una determinada oferta a un // plan que pertenece a una oferta distinta $correctos = $incorrectos = 0; $planesGuardarDefinitivo = array(); foreach ($PlanesData as $plan) { if ($plan['Plan']['oferta_id'] == $tituloData['Titulo']['oferta_id']) { $planesGuardarDefinitivo[] = $plan['Plan']['id']; $correctos++; } else { $incorrectos++; } } if (!empty($planesGuardarDefinitivo)) { $this->Titulo->Plan->updateAll(array('Plan.titulo_id' => $this->data['Plan']['titulo_id']), array('Plan.id' => $planesGuardarDefinitivo)); } if ($incorrectos == 0) { $this->Session->setFlash(__('Se ha asignado el Título ' . $this->data['Plan']['tituloName'] . ' a ' . $correctos . ' Planes', true)); } else { $this->Session->setFlash(__('Se ha asignado el Título ' . $this->data['Plan']['tituloName'] . ' a ' . $correctos . ' Planes. No se ha asignado a ' . $incorrectos . ' Planes por pertenecer a una oferta distinta a la del Título de Referencia.', true)); } } $this->redirect(array('corrector_de_planes', @$this->data['Plan']['url_conditions'])); $url_conditions['Plan.titulo_id'] = $this->data['Plan']['titulo_id']; } /***************************** FIN GUARDADO DE LOS PLANES ***************/ /********************** BUSCADOR DE PLANES *******/ // para el paginator que pueda armar la url $url_conditions = array(); /** * OFERTA */ $oferta_id = ''; if (!empty($this->data['FPlan']['oferta_id'])) { $oferta_id = $this->data['FPlan']['oferta_id']; } elseif (!empty($this->passedArgs['Plan.oferta_id'])) { $oferta_id = $this->passedArgs['Plan.oferta_id']; $this->data['FPlan']['oferta_id'] = $oferta_id; } if (!empty($oferta_id)) { $this->paginate['conditions']['Plan.oferta_id'] = $oferta_id; $url_conditions['Plan.oferta_id'] = $oferta_id; } /** * SECTOR */ $sector_id = ''; if (!empty($this->data['FPlan']['sector_id'])) { $sector_id = $this->data['FPlan']['sector_id']; } elseif (!empty($this->passedArgs['Titulo.sector_id'])) { $sector_id = $this->passedArgs['Titulo.sector_id']; $this->data['FPlan']['sector_id'] = $sector_id; } if (!empty($sector_id)) { $this->paginate['conditions']['SectoresTitulo.sector_id'] = $sector_id; $url_conditions['Titulo.sector_id'] = $sector_id; } /** * SUBSECTOR */ if (isset($this->data['FPlan']['subsector_id']) && $this->data['FPlan']['subsector_id'] !== "") { $subsector_id = $this->data['FPlan']['subsector_id']; } elseif (isset($this->passedArgs['Titulo.subsector_id'])) { $subsector_id = $this->passedArgs['Titulo.subsector_id']; $this->data['FPlan']['subsector_id'] = $subsector_id; } if (isset($subsector_id)) { $this->paginate['conditions']['SectoresTitulo.subsector_id'] = $subsector_id; $url_conditions['Titulo.subsector_id'] = $subsector_id; } else { $subsector_id = ''; } /** * JURISDICCION */ $jurisdiccion_id = ''; if (!empty($this->data['FPlan']['jurisdiccion_id'])) { $jurisdiccion_id = $this->data['FPlan']['jurisdiccion_id']; } elseif (!empty($this->passedArgs['Instit.jurisdiccion_id'])) { $jurisdiccion_id = $this->passedArgs['Instit.jurisdiccion_id']; $this->data['FPlan']['jurisdiccion_id'] = $subsector_id; } if (!empty($jurisdiccion_id)) { $this->paginate['conditions']['Instit.jurisdiccion_id'] = $jurisdiccion_id; $url_conditions['Instit.jurisdiccion_id'] = $jurisdiccion_id; } /** * Por Plan */ $plan_nombre = ''; if (!empty($this->data['FPlan']['plan_nombre'])) { $plan_nombre = $this->data['FPlan']['plan_nombre']; } elseif (!empty($this->passedArgs['Plan.plan_nombre'])) { $plan_nombre = utf8_decode($this->passedArgs['Plan.plan_nombre']); $this->data['FPlan']['plan_nombre'] = $plan_nombre; } if (!empty($plan_nombre)) { $this->paginate['conditions']["to_ascii(lower(Plan.nombre)) SIMILAR TO ?"] = array(convertir_para_busqueda_avanzada($plan_nombre)); $array_condiciones['Nombre del Plan'] = $plan_nombre; $url_conditions['Plan.plan_nombre'] = $plan_nombre; } /* * Por Título * */ $titulo_id = ''; if (!empty($this->data['FPlan']['titulo_id'])) { $titulo_id = $this->data['FPlan']['titulo_id']; } elseif (!empty($this->passedArgs['Plan.titulo_id'])) { $titulo_id = $this->passedArgs['Plan.titulo_id']; $this->data['FPlan']['titulo_id'] = $titulo_id; } if (!empty($titulo_id)) { $this->paginate['conditions']["Plan.titulo_id"] = $titulo_id; $url_conditions['Plan.titulo_id'] = $titulo_id; } /* * Todos/Con/Sin Título * */ $con_titulo = ''; if (!empty($this->data['FPlan']['con_titulo'])) { $con_titulo = $this->data['FPlan']['con_titulo']; } elseif (!empty($this->passedArgs['Plan.con_titulo'])) { $con_titulo = $this->passedArgs['Plan.con_titulo']; $this->data['FPlan']['con_titulo'] = $con_titulo; } if (!empty($con_titulo)) { if ($con_titulo == 'con') { $this->paginate['conditions']['Plan.titulo_id >'] = 0; } else { $this->paginate['conditions']['Plan.titulo_id ='] = 0; } $url_conditions['Plan.con_titulo'] = $this->data['FPlan']['con_titulo']; } //----------------------------------------------------------------- */ // Busqueda */ //----------------------------------------------------------------- */ //datos de paginacion $this->paginate['order'] = array('Plan.nombre' => 'ASC'); if (!empty($this->data['FPlan']['last_page'])) { $this->paginate['page'] = $this->data['FPlan']['last_page']; } // limit $this->paginate['limit'] = 10; if (!empty($this->data['FPlan']['limit'])) { $limit = $this->data['FPlan']['limit']; } elseif (!empty($this->passedArgs['FPlan.limit'])) { $limit = $this->passedArgs['FPlan.limit']; $this->data['FPlan']['limit'] = $limit; } if (!empty($limit)) { $url_conditions['FPlan.limit'] = $limit; $this->paginate['limit'] = $limit; } // Condicion necesaria $titulo_id = 0; if (!empty($this->data['Plan']['titulo_id'])) { $url_conditions['Plan.titulo_id'] = $this->data['Plan']['titulo_id']; $titulo_id = $this->data['Plan']['titulo_id']; } if (!empty($this->passedArgs['Plan.titulo_id'])) { $url_conditions['Plan.titulo_id'] = $this->passedArgs['Plan.titulo_id']; $titulo_id = $this->passedArgs['Plan.titulo_id']; } $this->paginate['contain'] = array('Instit', 'Oferta', 'Titulo' => array('SectoresTitulo' => array('Sector', 'Subsector.Sector')), 'EstructuraPlan.Etapa', 'Anio'); $this->paginate['recursive'] = 3; $planes = $this->paginate('Plan'); $this->set('url_conditions', $url_conditions); $this->Titulo->Oferta->recursive = -1; $ofertas = $this->Titulo->Oferta->find('list'); $this->Titulo->SectoresTitulo->Sector->recursive = -1; $this->Titulo->SectoresTitulo->Sector->order = 'Sector.name'; $sectores = $this->Titulo->SectoresTitulo->Sector->find('list'); $subsectores = array(); if (!empty($this->data['FPlan']['sector_id'])) { $subsecConditions = array(); if (!empty($this->data['FPlan']['sector_id'])) { $subsecConditions = array('Subsector.sector_id' => $this->data['FPlan']['sector_id']); } $this->Titulo->SectoresTitulo->Subsector->recursive = -1; $this->Titulo->SectoresTitulo->Subsector->order = 'Subsector.name'; $subsectores = $this->Titulo->SectoresTitulo->Subsector->find('list', array('conditions' => $subsecConditions)); $subsectores[0] = 'Sin Subsector'; } $this->Titulo->Plan->Instit->Jurisdiccion->recursive = -1; $this->Titulo->Plan->Instit->Jurisdiccion->order = 'Jurisdiccion.name'; $jurisdicciones = $this->Titulo->Plan->Instit->Jurisdiccion->find('list'); $condicion = array(); if (!empty($this->data['FPlan']['oferta_id'])) { $condicion['conditions']['oferta_id'] = $this->data['FPlan']['oferta_id']; } $this->Titulo->recursive = -1; $titulos = $this->Titulo->find('list', $condicion); $this->set('titulo_id', $titulo_id); $this->set(compact('planes', 'titulos', 'ofertas', 'sectores', 'subsectores', 'jurisdicciones')); }