Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 /**
  * 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');
 }
Esempio n. 5
0
 /**
  * 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);
 }