function testFindCompleto() { $conditions = array('recursive' => 3, 'fields' => array('Titulo.id', 'Titulo.name', 'Titulo.marco_ref', 'Titulo.oferta_id', 'Oferta.abrev', 'Oferta.name'), 'conditions' => array('lower(Titulo.name) SIMILAR TO ?' => convertir_texto_plano('inventado'), 'Titulo.oferta_id' => 1, 'SectoresTitulo.sector_id' => 2, 'SectoresTitulo.subsector_id' => 1, 'Instit.jurisdiccion_id' => 2, 'Instit.departamento_id' => 1, 'Instit.localidad_id' => 1), 'group' => array('Titulo.id', 'Titulo.name', 'Titulo.marco_ref', 'Titulo.oferta_id', 'Oferta.abrev', 'Oferta.name'), 'order' => array('Titulo.name' => 'ASC', 'Titulo.oferta_id' => 'ASC')); $results = $this->Titulo->find('all', $conditions); $cant = $this->Titulo->find('count', $conditions); // que contenga todos los array del contain que hace el Model Titulo foreach ($results as $titulo) { $this->assertTrue(array_key_exists('Titulo', $titulo)); $this->assertTrue(array_key_exists('Oferta', $titulo)); $this->assertTrue(array_key_exists('SectoresTitulo', $titulo)); if (!empty($titulo['SectoresTitulo'])) { foreach ($titulo['SectoresTitulo'] as $sectit) { $this->assertTrue(array_key_exists('Sector', $sectit)); $this->assertTrue(array_key_exists('Subsector', $sectit)); } } } $this->assertEqual(count($results), $cant); }
function getSimilars($name = null, $titulo_id = null) { $similars = array(); if (!empty($name)) { $nombre = $name; } elseif (!empty($this->data['Titulo']['name'])) { $nombre = $this->data['Titulo']['name']; } if (!empty($titulo_id)) { $id = $titulo_id; } elseif (!empty($this->data['Titulo']['id'])) { $id = $this->data['Titulo']['id']; } if (!empty($nombre)) { $conditions = array("lower(Titulo.name) SIMILAR TO ?" => convertir_texto_plano($nombre)); if (!empty($id)) { // si esta editando, que no sea el mismo $conditions['Titulo.id <>'] = $id; } $similars = $this->find('all', array('conditions' => $conditions)); } return $similars; }
function getSimilars($name, $instit_id, $plan_id = null) { $similars = array(); if (!empty($name)) { $nombre = $name; } elseif (!empty($this->data['Plan']['nombre'])) { $nombre = $this->data['Plan']['nombre']; } if (!empty($plan_id)) { $id = $plan_id; } elseif (!empty($this->data['Plan']['id'])) { $id = $this->data['Plan']['id']; } if (!empty($nombre)) { $conditions = array('lower(Plan.nombre) SIMILAR TO ?' => convertir_texto_plano($nombre), 'Plan.instit_id' => $instit_id); if (!empty($id)) { // si esta editando, que no sea el mismo $conditions['Plan.id <>'] = $id; } $similars = $this->find('all', array('conditions' => $conditions)); } return $similars; }
/** * Esta accion es el procesamiento del formulario de busqueda * maneja las condiciones de la busqueda y el paginador * */ function ajax_index_search() { //para mostrar en vista los patrones de busqueda seleccionados $array_condiciones = array(); // para el paginator que pueda armar la url $url_conditions = array(); if (!empty($this->data)) { // 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['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 (isset($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->passedArgs['tituloName'])) { $q = utf8_decode(strtolower($this->passedArgs['tituloName'])); $this->paginate['conditions']['lower(Titulo.name) SIMILAR TO ?'] = convertir_texto_plano($q); } if (!empty($this->passedArgs['ofertaId'])) { $q = utf8_decode($this->passedArgs['ofertaId']); $this->paginate['conditions']['Titulo.oferta_id'] = $q; } if (isset($this->passedArgs['sectorId']) || isset($this->passedArgs['subsectorId'])) { $conditions_sector = array(); if (!empty($this->passedArgs['sectorId'])) { $q = utf8_decode($this->passedArgs['sectorId']); $this->paginate['conditions']['SectoresTitulo.sector_id'] = $q; } if (isset($this->passedArgs['subsectorId']) && $this->passedArgs['subsectorId'] != '') { $q = utf8_decode($this->passedArgs['subsectorId']); $this->paginate['conditions']['SectoresTitulo.subsector_id'] = $q; } $this->paginate['joins'] = array(array('table' => 'sectores_titulos', 'type' => 'LEFT', 'alias' => 'SectoresTitulo', 'conditions' => array('SectoresTitulo.titulo_id = Titulo.id'))); } 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']); } //datos de paginacion $this->paginate['fields'] = array('DISTINCT ("Titulo"."id")', 'Titulo.name', 'Titulo.marco_ref', 'Titulo.oferta_id', 'Oferta.abrev', 'Titulo.es_bb'); $this->paginate['order'] = array('Titulo.name ASC, Titulo.oferta_id ASC'); $titulos = $this->paginate(); $this->set('titulos', $titulos); $this->set('url_conditions', $url_conditions); //devuelve un array para mostrar los criterios de busqueda $this->set('conditions', $array_condiciones); $this->render('ajax_index_search'); }
/** * 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); }