From 77cb2de75b38a5de6c6c6ae4955f182fbea912d8 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 4 May 2011 14:28:18 +0000 Subject: [PATCH] =?UTF-8?q?Tarea=20#583=20->=20En=20candidatos=20a=C3=B1ad?= =?UTF-8?q?ir=20un=20campo=20que=20sea=20=E2=80=9CUbicaciones=20no=20desea?= =?UTF-8?q?das=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_Intranet/trunk/src@44 e2b1556b-49f8-d141-9351-52d6861a72d9 --- Objects/Afinidad.php | 25 +++++++-- Objects/ListaPersonas.php | 3 +- Objects/Persona.php | 99 ++++++++++++++++++++++++++++++++-- addCandidato.php | 32 +++++++++-- busqueda_personas_multiple.php | 19 +++++++ campos_persona.php | 1 + database/selfor.sql | 18 +++++++ detalles_usuario.php | 14 ++++- formulario_buscar_persona.php | 10 +++- functions_rrhh.php | 4 +- gestion_candidato.php | 39 ++++++++++++-- idiomas/sp/lenguaje.php | 5 +- 12 files changed, 250 insertions(+), 19 deletions(-) diff --git a/Objects/Afinidad.php b/Objects/Afinidad.php index d0047b6..03b0f3c 100644 --- a/Objects/Afinidad.php +++ b/Objects/Afinidad.php @@ -35,11 +35,15 @@ private $provinciasPedido; /* Provincias en las que desea trabajar el empleado. */ - private $provinciaDeseada; + private $provinciasDeseadas; + + /* Provincias en las que NO desea trabajar el empleado. */ + private $provinciasNoDeseadas; + //Constructores function Afinidad($idiomasPedido, $idiomasUsuario, $tecnologiasPedido, - $tecnologiasUsuario, $perfilesPedido, $perfilesUsuario, $provinciasPedido, $provinciaDeseada){ + $tecnologiasUsuario, $perfilesPedido, $perfilesUsuario, $provinciasPedido, $provinciasDeseada, $provinciasNoDeseadas){ $this->idiomasPedido = $idiomasPedido; $this->idiomasUsuario = $idiomasUsuario; $this->tecnologiasPedido = $tecnologiasPedido; @@ -47,7 +51,8 @@ $this->perfilesPedido = $perfilesPedido; $this->perfilesUsuario = $perfilesUsuario; $this->provinciasPedido = $provinciasPedido; - $this->provinciaDeseada = $provinciaDeseada; + $this->provinciasDeseadas = $provinciasDeseadas; + $this->provinciasNoDeseadas = $provinciasNoDeseadas; } @@ -67,7 +72,7 @@ //Si no coincide alguna provincia deseada no nos vale. if($this->provinciasPedido != ""){ foreach($this->provinciasPedido as $provincia){ - if(in_array($provincia, $this->provinciaDeseada)){ + if(in_array($provincia, $this->provinciasDeseadas)){ $vL = $vL + 1; } } @@ -75,6 +80,18 @@ if($vL <= 0) return -1; + //Si coincide alguna provincia NO deseada no nos vale. + if($this->provinciasPedido != ""){ + foreach($this->provinciasPedido as $provincia){ + if(in_array($provincia, $this->provinciasNoDeseadas)){ + $vL = $vL - 1; + } + } + } + + if($vL <= 0) return -1; + + $afi = 0; //Afinidad con los perfiles: diff --git a/Objects/ListaPersonas.php b/Objects/ListaPersonas.php index 5401c2b..5fced30 100644 --- a/Objects/ListaPersonas.php +++ b/Objects/ListaPersonas.php @@ -142,7 +142,7 @@ include_once("Empleado.php"); return false; } - $fecha = "'".date(Y."-".m."-".d)."'"; + $fecha = "'".date('Y'."-".'m'."-".'d')."'"; $inserto = "tipo, fecha_modificacion, fecha_registro"; $valores = "'".$this->tipo."', $fecha, $fecha"; @@ -154,6 +154,7 @@ include_once("Empleado.php"); //Insertamos en la BD $consulta = "INSERT INTO usuarios ($inserto) VALUES ($valores)"; + echo $consulta; $bd = new BD(); if(!$bd->execQuery($consulta)){ $error = "Campos del candidato incorrectos. Por favor, avise al webmaster de este error."; diff --git a/Objects/Persona.php b/Objects/Persona.php index 1cf5d19..de78c7d 100644 --- a/Objects/Persona.php +++ b/Objects/Persona.php @@ -24,9 +24,12 @@ /* Lista de titulaciones*/ protected $listaTitulaciones = null; - /* Lista de localidades deseadas*/ + /* Lista de provincias deseadas*/ protected $listaProvinciasDeseadas = null; + /* Lista de provincias no deseadas*/ + protected $listaProvinciasNoDeseadas = null; + /* Lista de perfiles*/ protected $listaPerfiles = null; @@ -371,7 +374,7 @@ //Quitamos la �ltima coma /*if ($consulta{strlen($consulta) - 1} == ",") $consulta = substr($consulta,0,strlen($consulta) - 1);*/ - $fecha = "'".date(Y."-".m."-".d)."'"; + $fecha = "'".date('Y'."-".'m'."-".'d')."'"; $consulta .= " fecha_modificacion = $fecha "; $oid = $this->getValor("oid"); $consulta .= "WHERE oid='$oid'"; @@ -457,6 +460,21 @@ return $this->listaProvinciasDeseadas; } + /** + * Devuelve una lista de provincias deseadas asociadas al usuario. + */ + function getProvinciasNoDeseadas(){ + if($this->listaProvinciasNoDeseadas == null){ + $oid = $this->getValor("oid"); + $consulta = "SELECT l.oid, l.id FROM no_provincia_usuario lu, provincias l WHERE lu.oid_i = '$oid' and lu.provincia = l.oid"; + $bd = new BD(); + $this->listaProvinciasNoDeseadas = $bd->keyValueQuery($consulta, "id", "oid"); + } + + return $this->listaProvinciasNoDeseadas; + } + + /** * Devuelve una lista de perfiles asociadas al usuario. */ @@ -507,6 +525,15 @@ } } + function addProvinciasNoDeseadas($array){ + if(gettype($array) == "array"){ + foreach($array as $elem){ + $this->addProvinciaNoDeseada($elem); + } + $this->calculaAfinidad(); + } + } + function addPerfiles($array){ if(gettype($array) == "array"){ foreach($array as $elem){ @@ -620,6 +647,34 @@ return true; } + + /** + * Asocia una nueva provincia no deseada en la base de datos. + */ + private function addProvinciaNoDeseada($id){ + $oid = $this->getValor("oid"); + $this->getProvinciasNoDeseadas(); + if(!in_array($id, $this->listaProvinciasNoDeseadas)){ + $consulta = "SELECT id FROM provincias WHERE oid='$id'"; + $bd = new BD(); + $nombre_provincia = $bd->getCampo($consulta); + $consulta = "INSERT INTO no_provincia_usuario VALUES('$id', '$oid')"; + $bd = new BD(); + if($bd->execQuery($consulta)){ + $mensaje = "Nueva provincia no deseada: ".$nombre_provincia; + $this->actualizarHistorial($mensaje); + $this->listaProvinciasNoDeseadas[$nombre_provincia] = $id; + }else{ + return false; + } + }else{ + return false; + } + + return true; + } + + /** * Asocia un nuevo perfil en la base de datos. */ @@ -811,7 +866,7 @@ } /** - * Elimina la asociaci�n entre una localidad deseada y un usuario. + * Elimina la asociación entre una localidad deseada y un usuario. */ function removeProvinciaDeseada($id){ $oid = $this->getValor("oid"); @@ -843,6 +898,44 @@ return true; } + + /** + * Elimina la asociación entre una localidad no deseada y un usuario. + */ + function removeProvinciaNoDeseada($id){ + $oid = $this->getValor("oid"); + $this->getProvinciasNoDeseadas(); + if(in_array($id, $this->listaProvinciasNoDeseadas)){ + $consulta = "SELECT id FROM provincias WHERE oid='$id'"; + $bd = new BD(); + $nombre_provincia = $bd->getCampo($consulta); + $consulta = "DELETE FROM no_provincia_usuario WHERE provincia='$id' and oid_i='$oid'"; + $bd = new BD(); + if($bd->execQuery($consulta)){ + $mensaje = "Eliminada provincia no deseada: $nombre_provincia"; + $this->actualizarHistorial($mensaje); + $lista = $this->listaProvinciasNoDeseadas; + $this->listaProvinciasNoDeseadas = null; + foreach($lista as $key => $value){ + if($value != $id){ + $this->listaProvinciasNoDeseadas[$key] = $value; + } + } + }else{ + return false; + } + }else{ + return false; + } + + $this->calculaAfinidad(); + return true; + } + + + + + /** * Elimina la asociaci�n entre un perfil y un usuario. */ diff --git a/addCandidato.php b/addCandidato.php index 9f37852..3adf71d 100644 --- a/addCandidato.php +++ b/addCandidato.php @@ -51,6 +51,7 @@ if(stripinput($_POST['action'])=="add"){ $camposQuitar["idiomas"]=$_POST['idiomas']; $camposQuitar["titulaciones"]=$_POST['titulaciones']; $camposQuitar["provincia_deseada"]=$_POST['provincia_deseada']; + $camposQuitar["provincias_no_deseadas"]=$_POST['provincias_no_deseadas']; $camposQuitar["perfil"]=$_POST['perfil']; $camposQuitar["action"]=stripinput($_POST['action']); $camposQuitar["diaentre"]=stripinput($_POST['diaentre']); @@ -90,6 +91,13 @@ if(stripinput($_POST['action'])=="add"){ } //$candidatoNew->addLocalidadesDeseadas($_POST['localidad_deseada']); $candidatoNew->addProvinciasDeseadas($_POST['provincia_deseada']); + + if($_POST['provincias_no_deseadas']==""){ + $_POST['provincias_no_deseadas']=array(); + } + $candidatoNew->addProvinciasNoDeseadas($_POST['provincias_no_deseadas']); + + $candidatoNew->addPerfiles($_POST['perfil']); $candidatoNew->addCurriculum($_FILES['userfile']); header("Location: detalle_candidato.php?oid=".$idCandidatoNew); @@ -232,23 +240,41 @@ echo ''; echo ''; echo '
'.$locale['121'].'
'; +echo ' textalign="right" '.$eper.'>
'.$locale['121'].' 
'; $auxiliar = ''; echo $html->listaSelect("perfil","oid","id","perfil",array("",$locale['ns']),$_POST['perfil'],true,true,"15"); - echo '
-
'.$locale['1561'].'
'; + echo '
'; + +// Provincia deseada + +echo '
'.$locale['1561'].' 
'; echo $html->listaSelect("provincias","oid","id","provincia_deseada",array("",$locale['ns']),$_POST['provincia_deseada'],true,true,"15"); echo '
'; + +// Provincia no deseada + +echo '
'.$locale['5001'].' 
'; + + echo $html->listaSelect("provincias","oid","id","provincias_no_deseadas",array("",$locale['ns']),$_POST['provincias_no_deseadas'],true,true,"15"); + + echo '
'; + + echo ""; + + echo ''; echo ' '.$locale['135'].'
'; echo ''; echo ''; + + + // CURRICULUM echo '
'.$locale['1549'].'
'; echo ''; diff --git a/busqueda_personas_multiple.php b/busqueda_personas_multiple.php index 159527c..07b9c92 100644 --- a/busqueda_personas_multiple.php +++ b/busqueda_personas_multiple.php @@ -93,6 +93,25 @@ if (($condicion{strlen($condicion) - 3} == "o") && ($condicion{strlen($condicion $condicion .= ","; } +// Provincia no deseada +$puesto_provincia = false; +if(is_array($provincias_no_deseadas)){ + foreach($provincias_no_deseadas as $provincia) + if ($provincia != "") { + if(!$puesto_provincia) + $tabla .= ",no_provincia_usuario"; + $puesto_provincia = true; + $condicion .= "(no_provincia_usuario.provincia = '".$provincia."' and no_provincia_usuario.oid_i = usuarios.oid) or "; + } +} +//Quitamos el último or y ponemos una coma +if (($condicion{strlen($condicion) - 3} == "o") && ($condicion{strlen($condicion) - 2} == "r")){ + $condicion = substr($condicion,0,strlen($condicion) - 3); + $condicion .= ","; +} + + + if ($seguridad_social != ""){ $condicion .= "usuarios.seguridad_social = '".$seguridad_social."',"; diff --git a/campos_persona.php b/campos_persona.php index 1ba9dd5..24d0756 100644 --- a/campos_persona.php +++ b/campos_persona.php @@ -64,6 +64,7 @@ $idiomas = $_POST["idiomas"]; $titulaciones = $_POST["titulaciones"]; $pedidos = $_POST["pedidos"]; $perfil = $_POST["perfil"]; +$provincias_no_deseadas = $_POST["provincias_no_deseadas"]; if(comprobar_permisos("APU")){ $permisos = ""; diff --git a/database/selfor.sql b/database/selfor.sql index c31b09f..a405cb8 100644 --- a/database/selfor.sql +++ b/database/selfor.sql @@ -969,6 +969,24 @@ INSERT INTO `provincia_usuario` VALUES (8,1),(15,16),(15,17),(15,18),(8,31),(15, /*!40000 ALTER TABLE `provincia_usuario` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `no_provincia_usuario` +-- + +DROP TABLE IF EXISTS `no_provincia_usuario`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `no_provincia_usuario` ( + `provincia` int(10) unsigned NOT NULL, + `oid_i` bigint(20) unsigned NOT NULL, + PRIMARY KEY (`provincia`,`oid_i`), + KEY `oid_i` (`oid_i`), + CONSTRAINT `no_provincia_usuario_ibfk_3` FOREIGN KEY (`provincia`) REFERENCES `provincias` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `no_provincia_usuario_ibfk_4` FOREIGN KEY (`oid_i`) REFERENCES `usuarios` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=latin1; +/*!40101 SET character_set_client = @saved_cs_client */; + + -- -- Table structure for table `provincias` -- diff --git a/detalles_usuario.php b/detalles_usuario.php index 4ef9a53..07d08c7 100644 --- a/detalles_usuario.php +++ b/detalles_usuario.php @@ -201,11 +201,23 @@ if(in_array("personales",$mostrarDetalle)){ ?> getProvinciasDeseadas(); $keylocalidades=array_values($localidadesDeseadas); - // Mostramos la lista para borrar + // Mostramos la lista foreach ($localidadesDeseadas as $nombre =>$valor) { echo $nombre.", "; } ?> +
+ + + getProvinciasNoDeseadas(); + $keylocalidades=array_values($localidadesNoDeseadas); + // Mostramos la lista + foreach ($localidadesNoDeseadas as $nombre =>$valor) { + echo $nombre.", "; + } + ?> + - diff --git a/functions_rrhh.php b/functions_rrhh.php index a729b34..a1e03cb 100644 --- a/functions_rrhh.php +++ b/functions_rrhh.php @@ -201,6 +201,7 @@ carpeta antiword en el ra /* Devuelve la lista de currículums */ function menu_curriculums($oid, $tipo){ + include LOCALE.LOCALESET."lenguaje.php"; $consulta = "select * from curriculum_usuario where oid='$oid' order by fecha"; $resultado = mysql_query($consulta); $num = @mysql_num_rows($resultado); @@ -216,13 +217,14 @@ function menu_curriculums($oid, $tipo){ "; } echo "
+

listaSelect("provincias","oid","id","provincia_deseada",array("",$locale['ns']),"",true,true,"15"); ?>
+ +

+ listaSelect("provincias","oid","id","provincias_no_deseadas",array("",$locale['ns']),"",true,true,"15"); + + ?> +
"; - }else{ + } else { echo "

".$locale['138']."

"; } } /* Muestra la lista de currículums */ function ver_curriculums($oid, $tipo){ + include LOCALE.LOCALESET."lenguaje.php"; $consulta = "select * from curriculum_usuario where oid='$oid' order by fecha"; $resultado = mysql_query($consulta); $num = @mysql_num_rows($resultado); diff --git a/gestion_candidato.php b/gestion_candidato.php index dc5d4bc..10bd81b 100644 --- a/gestion_candidato.php +++ b/gestion_candidato.php @@ -77,6 +77,7 @@ switch ($action) { $camposQuitar["action"]=$_POST['action']; $camposQuitar["userfile"]=$_POST['userfile']; $camposQuitar["provincia_deseada"]=$_POST['provincia_deseada']; + $camposQuitar["provincias_no_deseadas"]=$_POST['provincias_no_deseadas']; $camposQuitar["perfil"]=$_POST['perfil']; $camposQuitar["historial"]=$_POST['historial']; $camposQuitar["procedenciaCV"]=$_POST['procedenciaCV']; @@ -101,10 +102,17 @@ switch ($action) { $candidato->addTecnologias($_POST['tecnologia']); $candidato->addIdiomas($_POST['idiomas']); $candidato->addTitulaciones($_POST['titulaciones']); + if($_POST['provincia_deseada']==""){ $_POST['provincia_deseada']=array(); } $candidato->addProvinciasDeseadas($_POST['provincia_deseada']); + + if($_POST['provincias_no_deseadas']==""){ + $_POST['provincias_no_deseadas']=array(); + } + $candidato->addProvinciasNoDeseadas($_POST['provincias_no_deseadas']); + $candidato->addPerfiles($_POST['perfil']); $candidato->addCurriculum($_FILES['userfile']); $mensaje=$locale['1583']; @@ -138,11 +146,17 @@ switch ($action) { $candidato->removeProvinciaDeseada($idAction); $mensaje=$locale['1089']; $tipomsg="ok"; - default: + break; + case "dellLocNoDes":$idAction=$_GET['id']; + $candidato->removeProvinciaNoDeseada($idAction); + $mensaje=$locale['5002']; + $tipomsg="ok"; + break; case "dellPer":$idAction=$_GET['id']; $candidato->removePerfil($idAction); $mensaje=$locale['1090']; $tipomsg="ok"; + break; default: break; } @@ -274,13 +288,14 @@ foreach ($perfiles as $nombre =>$valor) { echo '
'; +// Provincia deseada echo '' . - '
'.$locale['1561'].'
'; + '
'.$locale['1561'].'
'; $localidadesDeseadas=$candidato->getProvinciasDeseadas(); $keylocalidades=array_values($localidadesDeseadas); -// Mostramos la lista para borrar +// Mostramos la lista foreach ($localidadesDeseadas as $nombre =>$valor) { echo $nombre." getValor("oid")."&action=dellLocDes&id=".$valor."\">Borrar
"; } @@ -289,7 +304,23 @@ foreach ($localidadesDeseadas as $nombre =>$valor) { echo '
'; -echo ""; + +// Provincia no deseada +echo '' . + '
'.$locale['5001'].' 
'; + $localidadesNoDeseadas=$candidato->getProvinciasNoDeseadas(); +$keylocalidades=array_values($localidadesNoDeseadas); +// Mostramos la lista +foreach ($localidadesNoDeseadas as $nombre =>$valor) { + echo $nombre." getValor("oid")."&action=dellLocNoDes&id=".$valor."\">Borrar
"; +} + //rellena_desplegable_localidad_mult($candidato->getProvinciasNoDeseadas(), "provincia_no_deseada"); + echo $html->listaSelect("provincias","oid","id","provincias_no_deseadas",array("",$locale['ns']),$candidato->getProvinciasNoDeseadas(),false,true,"15"); + + +echo '
'; diff --git a/idiomas/sp/lenguaje.php b/idiomas/sp/lenguaje.php index a5331a3..1ffa85b 100644 --- a/idiomas/sp/lenguaje.php +++ b/idiomas/sp/lenguaje.php @@ -604,7 +604,7 @@ $locale['1085'] = "Se ha propuesto correctamente el candidato a las solicitudes $locale['1086'] = "Se ha eliminado la titulación correctamente"; $locale['1087'] = "Se ha cambiado correctamente el estado"; $locale['1088'] = "No se ha podido cambiar el estado"; -$locale['1089'] = "Se ha eliminado la provincia desada correctamente"; +$locale['1089'] = "Se ha eliminado la provincia deseada correctamente"; $locale['1090'] = "Se ha eliminado el perfil técnico correctamente"; $locale['1091'] = " del cv"; $locale['1092'] = "y permancerá en él"; @@ -1009,4 +1009,7 @@ $locale['4046'] = "No se ha podido actualiar la observación"; $locale['4047'] = "Se ha añadido correctamente la observación"; $locale['4048'] = "Cualquier perfil técnico"; + +$locale['5001'] = "Provincia no deseada:"; +$locale['5002'] = "Se ha eliminado la provincia no deseada correctamente"; ?>