2011-04-04 15:16:10 +00:00
< ? php
/*
* Clase Pedido
*/
include_once ( " BD.php " );
include_once ( " CandidatoPedido.php " );
include_once ( " Candidato.php " );
include_once ( " Empleado.php " );
include_once ( " Afinidad.php " );
include_once ( " Automata.php " );
class Pedido {
//Atributos:
/* Usuario que tiene activa la sesi<73> n. */
private $usuario ;
/* Contiene una lista con todos los atributos y su valor*/
private $campos = array ();
/* Lista de candidatos propuestos*/
private $listaPropuestos = null ;
/* Lista de candidatos propuestos por RRHH*/
private $listaPropuestosRRHH = null ;
/* Lista de candidatos aceptados*/
private $listaAceptados = null ;
/* Lista de candidatos rechazados*/
private $listaRechazados = null ;
2011-04-06 12:07:57 +00:00
/* Lista de perfiles*/
private $listaPerfiles = null ;
2011-04-04 15:16:10 +00:00
/* Lista de tecnolog<6F> as*/
private $listaTecnologias = null ;
/* Lista de idiomas*/
private $listaIdiomas = null ;
/* Lista de provincias*/
private $listaProvincias = null ;
/* Par<61> metros que si se cambian recalculan la afinidad*/
private $listaAfinidad = array ( " nombre " , " perfil " , " pesoTecno " , " pesoIdioma " , " pesoPerfil " );
/* Booleano que indica si el cambio de un campo lo hace por razones autom<EFBFBD> ticas y dejar realizar
* el camio */
private $setAutomatico = false ;
//Constructor:
/**
* Recupera un pedido a partir de su identificador .
* @ param id - datos necesarios para crear un pedido .
*/
function Pedido ( $id , $usuario ){
$this -> usuario = $usuario ;
switch ( gettype ( $id )) {
case " string " : $this -> campos [ 'oid' ] = $id ;
break ;
case " array " : $this -> parseaArray ( $id );
break ;
case " resource " : $this -> parseaResource ( $id );
break ;
default : echo gettype ( $id );
break ;
}
}
//Funciones:
/**
* Calcula el n<EFBFBD> mero de candidatos asociados al pedido .
* @ param tipo - estado del candidato en el pedido .
* @ return n<EFBFBD> mero de candidatos asociados a ese pedido .
*/
function dameNumCand ( $tipo ){
//PERMISOS:
/*
* Admin ( 1 ) - Todos
* Selecci<EFBFBD> n ( 4 ) - Todos
* Gestor ( 3 ) - Los suyos
* Otro - Excepci<EFBFBD> n
*/
$gerente = $this -> getValor ( " gerente " );
$sesion = $this -> usuario -> getValor ( " oid " );
if ( $this -> usuario -> tieneRol ( 1 ) || $this -> usuario -> tieneRol ( 4 ) || ( $this -> usuario -> tieneRol ( 3 ) && $sesion == $gerente )){
$tipoUpper = strtoupper ( $tipo );
$bd = new BD ();
$consulta = " SELECT count(*) FROM candidaturas_estado es, candidato_pedido ca WHERE UPPER(es.nombre)= \" " . $tipoUpper . " \" AND ca.estado =es.cod AND ca.pedido= \" " . $this -> getValor ( " oid " ) . " \" " ;
$numero = $bd -> getCampo ( $consulta );
} else {
2011-04-12 11:49:11 +00:00
$error = " El usuario no tiene permisos para obtener el n<> mero de candidatos de la solicitud de oferta. " ;
2011-04-04 15:16:10 +00:00
throw new Exception ( $error );
}
return $numero ;
}
/**
* Procesa un array para a<EFBFBD> adir campos al pedido .
* @ param array - datos a a<EFBFBD> adir al pedido .
*/
private function parseaArray ( $array ){
foreach ( $array as $campo ){
//echo "$campo<br>";
}
}
/**
* Procesa el resultado de una query para a<EFBFBD> adir campos al pedido .
* @ param resource - el resultado de la query .
*/
private function parseaResource ( $resource ){
$fila = mysql_fetch_array ( $resource );
for ( $i = 0 ; $i < mysql_num_fields ( $resource ); $i ++ ){
if ( ! in_array ( mysql_field_name ( $resource , $i ), $this -> campos )){
$arrayAct = array ( mysql_field_name ( $resource , $i ) => $fila [ $i ]);
$this -> campos = $this -> campos + $arrayAct ;
}
}
}
/**
* Devuelve el valor de un campo .
* @ param nombre - nombre del campo por el que buscar .
* @ return valor del campo buscado .
*/
function getValor ( $nombre ){
//No se controlan permisos porque se tienen que recuperar datos como el oid del gerente
//para verificar el resto de permisos.
if ( array_key_exists ( $nombre , $this -> campos )){
// El campo ya lo hab<61> amos recuperamos, lo mostramos
return $this -> campos [ $nombre ];
} else {
switch ( $nombre ) {
case " nombre_gerente " : $idGerente = $this -> getValor ( " gerente " );
$consulta = " SELECT CONCAT(nombre, \" \" ,apellidos) FROM usuarios WHERE oid= \" " . $idGerente . " \" " ;
break ;
case " nombre_estado " : $idEstado = $this -> getValor ( " estado " );
$idioma = $this -> usuario -> getValor ( " idioma " );
$consulta = " SELECT nombre FROM pedidos_estados WHERE cod= \" " . $idEstado . " \" AND idioma= \" " . $idioma . " \" " ;
break ;
case " nombre_cliente " : $idCliente = $this -> getValor ( " cliente " );
$consulta = " SELECT id FROM clientes WHERE oid= \" " . $idCliente . " \" " ;
break ;
case " nombre_salario_min " :
$consulta = " SELECT salario.nombre FROM salario, pedidos WHERE salario.id=pedidos.salario_min AND pedidos.oid= \" " . $this -> getValor ( " oid " ) . " \" " ;
$especial = true ;
break ;
case " nombre_salario_max " :
$consulta = " SELECT salario.nombre FROM salario, pedidos WHERE salario.id=pedidos.salario_max AND pedidos.oid= \" " . $this -> getValor ( " oid " ) . " \" " ;
$especial = true ;
break ;
default : $consulta = " SELECT " . $nombre . " FROM pedidos WHERE oid= \" " . $this -> campos [ 'oid' ] . " \" " ;
break ;
}
// Lo insertamos para nosotros
$bd = new BD ();
$valor = $bd -> getCampo ( $consulta );
// Lo insertamos para nosotros
$arrayAct = array ( $nombre => $valor );
$this -> campos = $this -> campos + $arrayAct ;
return $valor ;
}
}
/**
* Acceso a los campos del pedido .
* @ return los campos del pedido .
*/
function getCampos (){
return $this -> campos ;
}
/**
* Asigna un nuevo campo al pedido .
* @ param nombre - nombre del campo a asignar .
* @ param valor - valor del campo .
*/
function setCampo ( $nombre , $valor ){
//PERMISOS:
/*
* Admin ( 1 ) - Todos
* Gestor ( 3 ) - Los suyos
* Otro - Excepci<EFBFBD> n
*/
$gerente = $this -> getValor ( " gerente " );
$sesion = $this -> usuario -> getValor ( " oid " );
if ( $this -> usuario -> tieneRol ( 1 ) || ( $this -> usuario -> tieneRol ( 3 ) && $sesion == $gerente ) || $this -> setAutomatico ){
$viejo = $this -> getValor ( $nombre );
if ( $viejo != $valor ){
//Comprobamos multivaluado y casos especiales antes del cambio:
$viejo = $this -> getValorMulti ( $nombre , $viejo );
$this -> campos [ $nombre ] = $valor ;
$oid = $this -> getValor ( " oid " );
$consulta = " UPDATE pedidos SET $nombre = ' $valor ' WHERE oid=' $oid ' " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
//Comprobamos multivaluado y casos especiales:
$valor = $this -> getValorMulti ( $nombre , $valor );
if ( $viejo == " " && $valor != " " ){
$historial = " $nombre (de - a $valor ) " ;
} else {
$historial = " $nombre (de $viejo a $valor ) " ;
}
$this -> actualizarHistorial ( $historial );
//Si hago un update del perfil tengo que actualizar la afinidad:
if ( in_array ( $nombre , $this -> listaAfinidad )){
$this -> calculaAfinidad ();
//En este caso tengo que comprobar si cambio de estado
} else if ( $nombre == " empleados " ){
$necesarios = $valor ;
$actuales = count ( $this -> getCandidatosAceptados ());
$estado = $this -> getValor ( " estado " );
//Actualizo autom<6F> ticamente el estado del pedido
switch ( $estado ){
case 10 :
if ( $actuales >= $necesarios ){
$this -> transita ( " 20 " , " " );
}
break ;
case 20 :
if ( $actuales < $necesarios ){
$this -> transita ( " 10 " , " " );
}
break ;
case 30 :
if ( $actuales < $necesarios ){
$this -> transita ( " 10 " , " " );
}
break ;
default :
}
}
}
}
} else {
2011-04-12 11:49:11 +00:00
$error = " El usuario no tiene permisos para editar la solicitud de oferta. " ;
2011-04-04 15:16:10 +00:00
throw new Exception ( $error );
}
}
private function getValorMulti ( $nombre , $antiguo ){
switch ( $nombre ) {
case " procedencia " :
$valor = nombre_procedencia ( $antiguo );
break ;
case " estado " :
$valor = nombre_estado_pedido ( $antiguo );
break ;
case " localidad " :
$valor = nombre_localidad ( $antiguo );
break ;
case " perfil " :
$valor = nombre_perfil ( $antiguo );
break ;
case " cliente " :
$valor = nombre_cliente ( $antiguo );
break ;
default :
$valor = $antiguo ;
break ;
}
return $valor ;
}
/**
* Asigna nuevos campos al pedido .
* @ param array - lista de campos a asignar de la forma campo => valor .
*/
function setCampos ( $array ){
foreach ( $array as $key => $value ){
$this -> setCampo ( $key , $value );
}
}
/**
* Elimina un pedido de la base de datos .
*/
function eliminar (){
//PERMISOS:
/*
* Admin ( 1 ) - Todos
* Gestor ( 3 ) - Los suyos
* Otro - Excepci<EFBFBD> n
*/
$gerente = $this -> getValor ( " gerente " );
$sesion = $this -> usuario -> getValor ( " oid " );
if ( $this -> usuario -> tieneRol ( 1 ) || ( $this -> usuario -> tieneRol ( 3 ) && $sesion == $gerente )){
$oid = $this -> getValor ( " oid " );
$consulta = " DELETE FROM pedidos WHERE oid=' $oid ' " ;
$bd = new BD ();
return $bd -> execQuery ( $consulta );
} else {
return false ;
}
}
/**
* Calcula una lista de candidatos de un estado .
*/
private function getCandidatos ( $estado ){
2011-04-06 12:07:57 +00:00
$lista = array ();
2011-04-04 15:16:10 +00:00
$pedido = $this -> getValor ( " oid " );
$consulta = " SELECT A.*,B.*,C.email,C.oid,C.nombre,C.apellidos,C.fecha_alta, D.nombre as estado_usuario FROM candidato_pedido as A, candidaturas_estado as B, usuarios as C, candidatos_estados as D WHERE A.pedido = ' $pedido ' and A.estado = B.cod and B.cod=' $estado ' and C.oid=A.candidato and D.cod = C.estado ORDER BY A.afinidad DESC " ;
$bd = new BD ();
$resultado = $bd -> execQuery ( $consulta );
while ( $rows = mysql_fetch_assoc ( $resultado )){
$candidato = new CandidatoPedido ( $rows );
$lista [] = $candidato ;
}
return $lista ;
}
/**
* Devuelve una lista de candidatos propuestos para el pedido .
*/
function getCandidatosPropuestos (){
if ( $this -> listaPropuestos == null ){
$this -> listaPropuestos = $this -> getCandidatos ( " 30 " );
}
return $this -> listaPropuestos ;
}
/**
* Devuelve una lista de candidatos aceptados para el pedido .
*/
function getCandidatosAceptados (){
if ( $this -> listaAceptados == null ){
$this -> listaAceptados = $this -> getCandidatos ( " 20 " );
}
return $this -> listaAceptados ;
}
/**
* Devuelve una lista de candidatos rechazados para el pedido .
*/
function getCandidatosRechazados (){
if ( $this -> listaRechazados == null ){
$this -> listaRechazados = $this -> getCandidatos ( " 10 " );
}
return $this -> listaRechazados ;
}
/**
* Devuelve una lista de candidatos propuestos por RRHH .
*/
function getCandidatosPropuestosRRHH (){
if ( $this -> listaPropuestosRRHH == null ){
$this -> listaPropuestosRRHH = $this -> getCandidatos ( " 40 " );
}
return $this -> listaPropuestosRRHH ;
}
function proponerCandidato ( $id , $observacion ){
$estadoP = $this -> getValor ( " estado " );
if ( $estadoP == 40 ){
return false ;
}
$this -> getCandidatosPropuestosRRHH ();
$candidato = $this -> buscarCandidatoLista ( $id , $this -> getCandidatosPropuestos ());
$oid = $this -> getValor ( " oid " );
//Si est<73> en la lista de propuestos por el sistema lo cambio a la de propuestos por RRHH
if ( $candidato != null ){
$candidato -> modFechaCandidatura ();
$consulta = " UPDATE candidato_pedido SET estado = '40', fecha = curdate(),obsRRHH = ' $observacion ' where candidato = ' $id ' AND pedido = ' $oid ' " ;
$lista = $this -> listaPropuestos ;
$this -> listaPropuestos = null ;
foreach ( $lista as $elem ){
if ( $elem -> getValor ( " candidato " ) != $id ){
$this -> listaPropuestos [] = $elem ;
}
}
//Si no, lo mete directamente en la lista de propuestos por RRHH
} else {
$idPedido = $this -> getValor ( " oid " );
$idRRHH = $this -> usuario -> getValor ( " oid " );
$consulta = " INSERT INTO candidato_pedido (candidato, pedido, afinidad, estado, RRHH, fecha,obsRRHH) VALUES(' $id ', ' $idPedido ', '0', '40', ' $idRRHH ', curdate(),' $observacion ') " ;
try {
$candidato = new Candidato ( $this -> usuario , $id );
} catch ( Exception $e ){
$candidato = new Empleado ( $this -> usuario , $id );
}
}
//Actualizamos la BD y las listas;
$nombre_candidato = $candidato -> getValor ( " nombre " ) . " " . $candidato -> getValor ( " apellidos " );
$nombre_usuario = $this -> usuario -> getValor ( " nombre " );
$mensaje = " El candidato $nombre_candidato ha sido propuesto por RRHH ( $nombre_usuario ) " ;
$this -> actualizarHistorial ( $mensaje );
$mensaje = " Propuesto en el pedido $oid por RRHH ( $nombre_usuario ) " ;
try {
$usuario = new Candidato ( $this -> usuario , $id );
} catch ( Exception $e ){
$usuario = new Empleado ( $this -> usuario , $id );
}
$usuario -> actualizarHistorial ( $mensaje );
$bd = new BD ();
$bd -> execQuery ( $consulta );
$this -> listaPropuestosRRHH [] = $candidato ;
return false ;
}
/**
* Acepta un candidato para el pedido .
*/
function aceptarCandidato ( $id ){
$estadoP = $this -> getValor ( " estado " );
if ( $estadoP == 40 || $estadoP == 50 ){
return false ;
}
$this -> getCandidatosAceptados ();
//Podemos aceptar a candidatos propuestos por el sistema...
$candidato = $this -> buscarCandidatoLista ( $id , $this -> getCandidatosPropuestos ());
//a candidatos propuestos por RRHH...
$rrhh = false ;
$rechazado = false ;
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $id , $this -> getCandidatosPropuestosRRHH ());
$rrhh = true ;
}
//Y a candidatos rechazados.
if ( $candidato == null ){
$rrhh = false ;
$candidato = $this -> buscarCandidatoLista ( $id , $this -> getCandidatosRechazados ());
$rechazado = true ;
}
$oid = $this -> getValor ( " oid " );
if ( $candidato != null ){
$nombre_candidato = $candidato -> getValor ( " nombre " ) . " " . $candidato -> getValor ( " apellidos " );
$mensaje = " Aceptado el candidato $nombre_candidato " ;
$this -> actualizarHistorial ( $mensaje );
2011-04-12 11:49:11 +00:00
$mensaje = " Aceptado en la solicitud de oferta $oid " ;
2011-04-04 15:16:10 +00:00
//Contemplo si es candidato o empleado.
try {
$usuario = new Candidato ( $this -> usuario , $candidato -> getValor ( " oid " ));
} catch ( Exception $e ){
$usuario = new Empleado ( $this -> usuario , $candidato -> getValor ( " oid " ));
}
$usuario -> actualizarHistorial ( $mensaje );
$candidato -> modFechaCandidatura ();
$consulta = " UPDATE candidato_pedido SET estado = '20', fecha = curdate() WHERE candidato = ' $id ' AND pedido = ' $oid ' " ;
$bd = new BD ();
$bd -> execQuery ( $consulta );
$lista_antigua = array ();
if ( $rrhh ){
$lista_antigua = $this -> listaPropuestosRRHH ;
$this -> listaPropuestosRRHH = null ;
} else if ( $rechazado ){
$lista_antigua = $this -> listaRechazados ;
$this -> listaRechazados = null ;
} else {
$lista_antigua = $this -> listaPropuestos ;
$this -> listaPropuestos = null ;
}
$lista_final = array ();
foreach ( $lista_antigua as $elem ){
if ( $elem -> getValor ( " oid " ) != $id ){
$lista_final [] = $elem ;
}
}
if ( $rrhh == true ){
$this -> listaPropuestosRRHH = $lista_final ;
} else if ( $rechazado == true ){
$this -> listaRechazados = $lista_final ;
} else {
$this -> listaPropuestos = $lista_final ;
}
$this -> listaAceptados [] = $candidato ;
//Compruebo el n<> mero de empleados:
$necesarios = $this -> getValor ( " empleados " );
$actuales = count ( $this -> listaAceptados );
$estado = $this -> getValor ( " estado " );
//Actualizo autom<6F> ticamente el estado del pedido
switch ( $estado ) {
case 10 :
if ( $actuales >= $necesarios ){
$this -> transita ( 20 , " " );
}
break ;
default :
break ;
}
$estadoC = $usuario -> getValor ( " estado " );
//Actualizo autom<6F> ticamente el estado del candidato
//Cambiar el estado del candidato.
switch ( $estadoC ) {
case 10 :
$usuario -> transita ( 30 , " " );
break ;
case 50 :
$usuario -> transita ( 70 , " " );
break ;
default :
break ;
}
return true ;
}
return false ;
}
/**
* Rechaza un candidato para el pedido .
*/
function rechazarCandidato ( $id ){
$estadoP = $this -> getValor ( " estado " );
if ( $estadoP == 40 || $estadoP == 50 ){
return false ;
}
$this -> getCandidatosRechazados ();
$oid = $this -> getValor ( " oid " );
$antiguo = 0 ;
//Buscamos al candidato en la lista de propuestos o de aceptados...
$candidato = $this -> buscarCandidatoLista ( $id , $this -> getCandidatosPropuestos ());
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $id , $this -> getCandidatosAceptados ());
$antiguo = 1 ;
}
//Si no en la candidatos propuestos por RRHH...
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $id , $this -> getCandidatosPropuestosRRHH ());
$antiguo = 2 ;
}
if ( $candidato != null ){
$nombre_candidato = $candidato -> getValor ( " nombre " ) . " " . $candidato -> getValor ( " apellidos " );
$mensaje = " Rechazado el candidato $nombre_candidato " ;
$this -> actualizarHistorial ( $mensaje );
2011-04-12 11:49:11 +00:00
$mensaje = " Rechazado en la solicitud de oferta $oid " ;
2011-04-04 15:16:10 +00:00
try {
$usuario = new Candidato ( $this -> usuario , $candidato -> getValor ( " oid " ));
} catch ( Exception $e ){
$usuario = new Empleado ( $this -> usuario , $candidato -> getValor ( " oid " ));
}
$usuario -> actualizarHistorial ( $mensaje );
$candidato -> modFechaCandidatura ();
$consulta = " UPDATE candidato_pedido SET estado = '10', fecha = curdate() where candidato = ' $id ' AND pedido = ' $oid ' " ;
$bd = new BD ();
$bd -> execQuery ( $consulta );
//Si estaba en la lista de propuestos lo sacamos de ah<61>
if ( $antiguo == 0 ){
$lista = $this -> listaPropuestos ;
$this -> listaPropuestos = null ;
foreach ( $lista as $elem ){
if ( $elem -> getValor ( " candidato " ) != $id ){
$this -> listaPropuestos [] = $elem ;
}
}
//Si no, si estaba en la lista de aceptados lo sacamos de ah<61>
} else if ( $antiguo == 1 ){
$lista = $this -> listaAceptados ;
$this -> listaAceptados = null ;
foreach ( $lista as $elem ){
if ( $elem -> getValor ( " candidato " ) != $id ){
$this -> listaAceptados [] = $elem ;
}
}
} else if ( $antiguo == 2 ){
$lista = $this -> listaPropuestosRRHH ;
$this -> listaPropuestosRRHH = null ;
foreach ( $lista as $elem ){
if ( $elem -> getValor ( " candidato " ) != $id ){
$this -> listaPropuestosRRHH [] = $elem ;
}
}
}
$this -> listaRechazados [] = $candidato ;
//Compruebo el n<> mero de empleados:
$necesarios = $this -> getValor ( " empleados " );
$actuales = count ( $this -> listaAceptados );
$estado = $this -> getValor ( " estado " );
//Actualizo autom<6F> ticamente el estado del pedido
switch ( $estado ){
case 20 :
if ( $actuales < $necesarios ){
$this -> transita ( 10 , " " );
}
case 30 :
if ( $actuales < $necesarios ){
$this -> transita ( 10 , " " );
}
break ;
default :
}
$estadoC = $usuario -> getValor ( " estado " );
//Actualizo autom<6F> ticamente el estado del candidato
//Cambiar el estado del candidato.
switch ( $estadoC ) {
case 30 :
$usuario -> transita ( 10 , " " );
break ;
case 70 :
$usuario -> transita ( 50 , " " );
break ;
default :
break ;
}
return true ;
}
return false ;
}
/**
* Busca un candidato en una lista .
* @ param id - identificador del candidato a buscar .
* @ param lista - lista en la que buscar al candidato .
*/
function buscarCandidatoLista ( $id , $lista ){
if ( $lista ){
foreach ( $lista as $elem ){
if ( $elem -> getValor ( " oid " ) == $id ){
return $elem ;
}
}
}
return null ;
}
/**
* Devuelve una lista de tecnolog<EFBFBD> as asociadas al pedido .
*/
function getTecnologias (){
if ( $this -> listaTecnologias == null ){
$oid = $this -> getValor ( " oid " );
$consulta = " SELECT tecnologia, id FROM tecnologia_pedido, tecnologia WHERE oid_i = ' $oid ' and tecnologia_pedido.tecnologia = tecnologia.oid " ;
$bd = new BD ();
$this -> listaTecnologias = $bd -> keyValueQuery ( $consulta , " id " , " tecnologia " );
}
return $this -> listaTecnologias ;
}
/**
* Devuelve una lista de idiomas asociados al pedido .
*/
function getIdiomas (){
if ( $this -> listaIdiomas == null ){
$oid = $this -> getValor ( " oid " );
$consulta = " SELECT idioma, id FROM idioma_pedido, idiomas WHERE oid_i = ' $oid ' and idioma_pedido.idioma = idiomas.oid " ;
$bd = new BD ();
$this -> listaIdiomas = $bd -> keyValueQuery ( $consulta , " id " , " idioma " );
}
return $this -> listaIdiomas ;
}
2011-04-06 12:07:57 +00:00
/**
* Devuelve una lista de perfiles asociados al pedido .
*/
function getPerfiles (){
if ( $this -> listaPerfiles == null ){
$oid = $this -> getValor ( " oid " );
$consulta = " SELECT perfil, id FROM perfil_pedido, perfil WHERE oid_i = ' $oid ' and perfil_pedido.perfil = perfil.oid " ;
$bd = new BD ();
$this -> listaPerfiles = $bd -> keyValueQuery ( $consulta , " id " , " perfil " );
}
return $this -> listaPerfiles ;
}
2011-04-04 15:16:10 +00:00
/**
* Devuelve una lista de provincias asociadas al pedido .
*/
function getProvincias (){
2011-04-06 12:07:57 +00:00
if ( $this -> listaProvincias == null ){
2011-04-04 15:16:10 +00:00
$oid = $this -> getValor ( " oid " );
$consulta = " SELECT provincia, id FROM provincia_pedido, provincias WHERE oid_i = ' $oid ' and provincia_pedido.provincia = provincias.oid " ;
$bd = new BD ();
2011-04-06 12:07:57 +00:00
$this -> listaProvincias = $bd -> keyValueQuery ( $consulta , " id " , " provincia " );
2011-04-04 15:16:10 +00:00
}
2011-04-06 12:07:57 +00:00
return $this -> listaProvincias ;
2011-04-04 15:16:10 +00:00
}
function addTecnologias ( $array ){
foreach ( $array as $elem ){
$this -> addTecnologia ( $elem );
}
$this -> calculaAfinidad ();
}
function addIdiomas ( $array ){
foreach ( $array as $elem ){
$this -> addIdioma ( $elem );
}
$this -> calculaAfinidad ();
}
function addProvincias ( $array ){
foreach ( $array as $elem ){
$this -> addProvincia ( $elem );
}
$this -> calculaAfinidad ();
}
2011-04-06 12:07:57 +00:00
function addPerfiles ( $array ){
if ( gettype ( $array ) == " array " ){
foreach ( $array as $elem ){
$this -> addPerfil ( $elem );
}
$this -> calculaAfinidad ();
}
}
2011-04-04 15:16:10 +00:00
/**
* Asocia una nueva tecnolog<EFBFBD> a en la base de datos .
*/
private function addTecnologia ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getTecnologias ();
if ( ! in_array ( $id , $this -> listaTecnologias )){
$consulta = " SELECT id FROM tecnologia WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_tecno = $bd -> getCampo ( $consulta );
$consulta = " INSERT INTO tecnologia_pedido VALUES(' $id ', ' $oid ') " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Nueva tecno: $nombre_tecno " ;
$this -> actualizarHistorial ( $mensaje );
$this -> listaTecnologias [ $nombre_tecno ] = $id ;
} else {
return false ;
}
} else {
return false ;
}
return true ;
}
/**
* Asocia un nuevo idioma en la base de datos .
*/
private function addIdioma ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getIdiomas ();
if ( ! in_array ( $id , $this -> listaIdiomas )){
$consulta = " SELECT id FROM idiomas WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_idioma = $bd -> getCampo ( $consulta );
$consulta = " INSERT INTO idioma_pedido VALUES(' $id ', ' $oid ') " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Nuevo idioma: $nombre_idioma " ;
$this -> actualizarHistorial ( $mensaje );
$this -> listaIdiomas [ $nombre_idioma ] = $id ;
} else {
return false ;
}
} else {
return false ;
}
return true ;
}
2011-04-06 12:07:57 +00:00
/**
* Asocia un nuevo perfil en la base de datos .
*/
private function addPerfil ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getPerfiles ();
if ( ! in_array ( $id , $this -> listaPerfiles )){
$consulta = " SELECT id FROM perfil WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_perfil = $bd -> getCampo ( $consulta );
$consulta = " INSERT INTO perfil_pedido VALUES(' $id ', ' $oid ') " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Nuevo perfil: $nombre_perfil " ;
$this -> actualizarHistorial ( $mensaje );
$this -> listaPerfiles [ $nombre_perfil ] = $id ;
} else {
return false ;
}
} else {
return false ;
}
return true ;
}
2011-04-04 15:16:10 +00:00
/**
* Asocia una nueva provincia en la base de datos .
*/
private function addProvincia ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getProvincias ();
if ( ! in_array ( $id , $this -> listasProvincias )){
$consulta = " SELECT id FROM provincias WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_provincia = $bd -> getCampo ( $consulta );
$consulta = " INSERT INTO provincia_pedido VALUES(' $id ', ' $oid ') " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Nueva provincia: $nombre_provincia " ;
$this -> actualizarHistorial ( $mensaje );
$this -> listasProvincias [ $nombre_provincia ] = $id ;
} else {
return false ;
}
} else {
return false ;
}
return true ;
}
/**
* Elimina la asociaci<EFBFBD> n entre una tecnolog<EFBFBD> a y un pedido .
*/
function removeTecnologia ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getTecnologias ();
if ( in_array ( $id , $this -> listaTecnologias )){
$consulta = " SELECT id FROM tecnologia WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_tecno = $bd -> getCampo ( $consulta );
$consulta = " DELETE FROM tecnologia_pedido WHERE tecnologia=' $id ' and oid_i=' $oid ' " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Eliminada tecno: $nombre_tecno " ;
$this -> actualizarHistorial ( $mensaje );
$lista = $this -> listaTecnologias ;
$this -> listaTecnologias = null ;
foreach ( $lista as $key => $value ){
if ( $value != $id ){
$this -> listaTecnologias [ $key ] = $value ;
}
}
} else {
return false ;
}
} else {
return false ;
}
$this -> calculaAfinidad ();
return true ;
}
/**
* Elimina la asociaci<EFBFBD> n entre un idioma y un pedido .
*/
function removeIdioma ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getIdiomas ();
if ( in_array ( $id , $this -> listaIdiomas )){
$consulta = " SELECT id FROM idiomas WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_idioma = $bd -> getCampo ( $consulta );
$consulta = " DELETE FROM idioma_pedido WHERE idioma=' $id ' and oid_i=' $oid ' " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Eliminado idioma: $nombre_idioma " ;
$this -> actualizarHistorial ( $mensaje );
$lista = $this -> listaIdiomas ;
$this -> listaIdiomas = null ;
foreach ( $lista as $key => $value ){
if ( $value != $id ){
$this -> listaIdiomas [ $key ] = $value ;
}
}
} else {
return false ;
}
} else {
return false ;
}
$this -> calculaAfinidad ();
return true ;
}
/**
* Elimina la asociaci<EFBFBD> n entre una provincia y un pedido .
*/
function removeProvincia ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getProvincias ();
if ( in_array ( $id , $this -> listasProvincias )){
$consulta = " SELECT id FROM provincias WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_provincia = $bd -> getCampo ( $consulta );
$consulta = " DELETE FROM provincia_pedido WHERE provincia=' $id ' and oid_i=' $oid ' " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Eliminada provicia: $nombre_provincia " ;
$this -> actualizarHistorial ( $mensaje );
$lista = $this -> listasProvincias ;
$this -> listasProvincias = null ;
foreach ( $lista as $key => $value ){
if ( $value != $id ){
$this -> listasProvincias [ $key ] = $value ;
}
}
} else {
return false ;
}
} else {
return false ;
}
$this -> calculaAfinidad ();
return true ;
}
2011-04-06 12:07:57 +00:00
/**
* Elimina la asociaci<EFBFBD> n entre un perfil y un pedido .
*/
function removePerfil ( $id ){
$oid = $this -> getValor ( " oid " );
$this -> getPerfiles ();
if ( in_array ( $id , $this -> listaPerfiles )){
$consulta = " SELECT id FROM perfil WHERE oid=' $id ' " ;
$bd = new BD ();
$nombre_perfil = $bd -> getCampo ( $consulta );
$consulta = " DELETE FROM perfil_pedido WHERE perfil=' $id ' and oid_i=' $oid ' " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
$mensaje = " Eliminado perfil: $nombre_perfil " ;
$this -> actualizarHistorial ( $mensaje );
$lista = $this -> listaPerfiles ;
$this -> listaPerfiles = null ;
foreach ( $lista as $key => $value ){
if ( $value != $id ){
$this -> listaPerfiles [ $key ] = $value ;
}
}
} else {
return false ;
}
} else {
return false ;
}
$this -> calculaAfinidad ();
return true ;
}
2011-04-04 15:16:10 +00:00
/**
* Calcula la afinidad del pedido con todos los candidatos del sistema .
* @ param id - identificador del usuario .
*/
function calculaAfinidad (){
//Recuperamos al pedido:
$id = $this -> getValor ( " oid " );
$pesoIdioma = $this -> getValor ( " pesoIdioma " );
$pesoTecno = $this -> getValor ( " pesoTecno " );
$pesoPerfil = $this -> getValor ( " pesoPerfil " );
//Eliminamos a los usuario de la tabla de candidatos en pedido que se encuentren
//en proceso para este pedido.
$consulta = " DELETE FROM candidato_pedido WHERE pedido=' $id ' AND estado='30' " ;
$bd = new BD ();
$bd -> execQuery ( $consulta );
//Si el pedido no est<73> cerrado calculamos su afinidad para los usuarios:
$estado = $this -> getValor ( " estado " );
//Estados v<> lidos: Todos menos cerrado (Pendiente).
if ( $estado == 10 ){
$consulta = " SELECT email FROM usuarios WHERE tipo='candidato' AND estado IN ('10', '30', '50', '70') " ;
$bd = new BD ();
$listaUsuarios = $bd -> arrayQuery ( $consulta , " email " );
//Calculamos la afinidad de cada usuario.
foreach ( $listaUsuarios as $emailUsuario ){
try {
$usuario = new Usuario ( $emailUsuario , $this -> usuario );
$idUsuario = $usuario -> getValor ( " oid " );
$idiomasPedido = $this -> getIdiomas ();
$idiomasUsuario = $usuario -> getidiomas ();
$tecnologiasPedido = $this -> getTecnologias ();
$tecnologiasUsuario = $usuario -> getTecnologias ();
2011-04-06 12:07:57 +00:00
$perfilesPedido = $this -> getPerfiles ();
$perfilesUsuario = $usuario -> getPerfiles ();
2011-04-04 15:16:10 +00:00
$provinciasPedido = $this -> getProvincias ();
$provinciasDeseadas = $usuario -> getProvinciasDeseadas ();
$afinidad = new Afinidad ( $idiomasPedido , $idiomasUsuario , $tecnologiasPedido ,
2011-04-06 12:07:57 +00:00
$tecnologiasUsuario , $perfilesPedido , $perfilesUsuario , $provinciasPedido , $provinciasDeseadas );
2011-04-04 15:16:10 +00:00
$afi = $afinidad -> calculaAfinidad ( $pesoIdioma , $pesoPerfil , $pesoTecno );
2011-04-07 11:57:27 +00:00
if ( $afi > 0 ){
2011-04-04 15:16:10 +00:00
$consulta = " INSERT INTO candidato_pedido (candidato, pedido, afinidad, estado, fecha) VALUES(' $idUsuario ', ' $id ', ' $afi ', '30', curdate()) " ;
$bd = new BD ();
$bd -> execQuery ( $consulta );
}
} catch ( Exception $e ){
//Nunca deber<65> a entrar aqu<71> .
}
}
}
}
function actualizarHistorial ( $mensaje ){
$oid = $this -> getValor ( " oid " );
$usuario = $this -> usuario -> getValor ( " nombre " );
$consulta = " INSERT INTO historial_pedido (oid_h, fecha_h, persona_h, texto_h) VALUES(' $oid ', now(), ' $usuario ', ' $mensaje ') " ;
$bd = new BD ();
return $bd -> execQuery ( $consulta );
}
function getHistorial (){
$historial = " " ;
$oid = $this -> getValor ( " oid " );
$consulta = " SELECT * FROM historial_pedido WHERE oid_h=' $oid ' ORDER BY fecha_h DESC " ;
$bd = new BD ();
$resultado = $bd -> execQuery ( $consulta );
while ( $rows = mysql_fetch_array ( $resultado )){
$fecha = $rows [ " fecha_h " ];
$persona = $rows [ " persona_h " ];
$texto = $rows [ " texto_h " ];
$historial .= " [ $fecha ] $persona - $texto\n " ;
}
return $historial ;
}
function getSiguientes (){
$estado = $this -> getValor ( " estado " );
$idioma = $this -> usuario -> getValor ( " idioma " );
$rol = $this -> usuario -> getValor ( " rol " );
$a = new Automata ( " pedidos " , $idioma , $rol );
$siguientes = $a -> getSiguientes ( $estado );
return $siguientes ;
}
function transita ( $destino , $argumentos ){
$origen = $this -> getValor ( " estado " );
$idioma = $this -> usuario -> getValor ( " idioma " );
$rol = $this -> usuario -> getValor ( " rol " );
$a = new Automata ( " pedidos " , $idioma , $rol );
$transita = $a -> getTransicion ( $origen , $destino );
if (( $transita == " " ) || ! ( $transita >= 0 )){
return false ;
} else {
$res = $this -> ejecutaTransicion ( $transita , $argumentos );
if ( $res ){
$this -> setAutomatico = true ;
$this -> setCampo ( " msgEstado " , $argumentos );
$this -> setCampo ( " estado " , $destino );
$this -> setAutomatico = false ;
}
return $res ;
}
}
private function ejecutaTransicion ( $codigo , $argumentos ){
//Si no hace nada al transitar salimos sin m<> s.
if ( $codigo == 0 ) return true ;
$funcion = " ejecutar $codigo " ;
$res = call_user_func ( array ( " Pedido " , $funcion ), $argumentos );
return $res ;
}
/**
* Pendiente a asignado
* Admin , Gestor
SE LLEGA DESDE :
- Al aceptar al candidato ( pedido . aceptar ) .
- Editar el n<EFBFBD> mero de empleados del pedido .
PRECONDICIONES :
- Comprobar que el n<EFBFBD> mero de candidatos aceptados es mayor o igual que el de candidatos necesarios .
POSTCONDICIONES :
- Ninguna .
*/
private function ejecutar1020 (){
$necesarios = $this -> getValor ( " empleados " );
$actuales = count ( $this -> listaAceptados );
//PRECONDICIONES:
//- Comprobar que el n<> mero de candidatos aceptados es mayor o igual que el de candidatos necesarios.
if ( $actuales >= $necesarios ){
return true ;
} else {
return false ;
}
}
/**
* Asignado a Pendiente
* Admin , Gestor
SE LLEGA DESDE :
- Al rechazar al candidato ( pedido . rechazar ) .
- Editar el n<EFBFBD> mero de empleados del pedido .
PRECONDICIONES :
- Comprobar que el n<EFBFBD> mero de candidatos aceptados es menor que el de candidatos necesarios .
POSTCONDICIONES :
- Ninguna .
*/
private function ejecutar2010 (){
$necesarios = $this -> getValor ( " empleados " );
$actuales = count ( $this -> listaAceptados );
//Comprobamos que se dan las condiciones para transitar.
if ( $actuales < $necesarios ){
return true ;
} else {
return false ;
}
}
/**
* Asignado a No contratado
* Pendiente a No contratado
* Tramitando contrataci<EFBFBD> n a No contratado
* Admin , Gestor
SE LLEGA DESDE :
- La vista del pedido al pulsar el bot<EFBFBD> n de <EFBFBD> Cambiar a No contratado<EFBFBD> .
PRECONDICIONES :
- Mensaje indicando el motivo del cambio a No contratado .
POSTCONDICIONES :
- Se borra la lista de usuarios aceptados , rechazados y en proceso para este pedido y
para cada candidato cambia a su estado previo de disponible o entrevistado .
*/
private function ejecutar2050 ( $mensaje ){
if ( $mensaje == " " ){
$error = " Debe introducir un motivo para pasar el pedido a Desactivado " ;
throw new Exception ( $error );
return false ;
exit ;
}
$id = $this -> getValor ( " oid " );
$bd = new BD ();
//Borro la tabla de candidaturas para este pedido.
$consulta = " DELETE FROM candidato_pedido WHERE pedido=' $id ' " ;
$bd -> execQuery ( $consulta );
//Cojo los candidatos y limpio las listas del pedido.
$candidatos = $this -> getCandidatosAceptados ();
if ( count ( $candidatos ) > 0 ){
//Voy empleado por empleado comprobando su estado y transitando.
foreach ( $candidatos as $c ){
$candidato = new Candidato ( $this -> usuario , $c -> getValor ( " oid " ));
$estado = $candidato -> getValor ( " estado " );
switch ( $estado ) {
case 30 :
$candidato -> transita ( 10 , " " );
break ;
case 70 :
$candidato -> transita ( 50 , " " );
break ;
default :
break ;
}
}
}
$this -> listaPropuestos = null ;
$this -> listaPropuestosRRHH = null ;
$this -> listaAceptados = null ;
$this -> listaRechazados = null ;
return true ;
}
/**
* Tramitando contrataci<EFBFBD> n a Contratado .
* Admin , Gestor
SE LLEGA DESDE :
- La vista del pedido , al pulsar el bot<EFBFBD> n de <EFBFBD> Cambiar a cerrado<EFBFBD> .
PRECONDICIONES :
- Todos los candidatos aceptados est<EFBFBD> n incorporados a la empresa .
POSTCONDICIONES :
- Se eliminan todos los candidatos propuestos por el sistema y por RRHH y rechazados
ESCENARIO ALTERNATIVO :
- Por cada candidato aceptado no incorporado a la empresa se generar<EFBFBD>
una alarma en forma de correo electr<EFBFBD> nico al personal de recursos humanos para que le incorpore .
*/
private function ejecutar3040 (){
$lista = $this -> getCandidatosAceptados ();
$ok = true ;
//Si encontramos alg<6C> n aceptado que sea candidato tenemos error.
if ( count ( $lista ) <= 0 ){
2011-04-12 11:49:11 +00:00
$error = " No hay candidados aceptados para esta solicitud de oferta " ;
2011-04-04 15:16:10 +00:00
throw new Exception ( $error );
return false ;
exit ;
}
foreach ( $lista as $candidato ){
$tipo = $candidato -> getValor ( " tipo " );
//Escenario alternativo
if ( $tipo != " usuario " ){
$nombre = $candidato -> getValor ( " nombre " );
$oid = $candidato -> getValor ( " oid " );
//Enviar un mail a RRHH con los datos pidiendo incorporaci<63> n.
$asunto = " Solicitud de contrataci<63> n " ;
$direccion = constante ( " email " );
$path = " http://portal.selforsistemas.net " ;
$link = " <a href=' " . $path . " /detalle_candidato.php?oid= " . $oid . " '> " . $nombre . " </a> " ;
$email = " Se solicita la contrataci<63> n para el candidato " . $link ;
envia_correo ( $direccion , $asunto , $email );
$ok = false ;
}
}
if ( $ok ){
$bd = new BD ();
//Borro la tabla de candidaturas para este pedido.
$consulta = " DELETE FROM candidato_pedido WHERE pedido=' $id ' AND estado IN ('10', '30', '40') " ;
$bd -> execQuery ( $consulta );
$this -> listaPropuestos = null ;
$this -> listaPropuestosRRHH = null ;
} else {
2011-04-12 11:49:11 +00:00
$error = " No se puede contratar aprobar la oferta hasta que todos los candidatos hayan sido contratados. " ;
2011-04-04 15:16:10 +00:00
throw new Exception ( $error );
return false ;
exit ;
}
return $ok ;
}
/**
* No contratado a Pendiente
* Admin , Gestor
SE LLEGA DESDE :
- La vista del pedido , al pulsar el bot<EFBFBD> n de <EFBFBD> Cambiar a pendiente<EFBFBD> .
POSTCONDICIONES :
- Crea un nuevo pedido con los mismos datos cambiando el c<EFBFBD> digo y lo pone en <EFBFBD> Pendiente<EFBFBD> .
- Calcula las afinidades para ese nuevo pedido que est<EFBFBD> en " Pendiente " .
*/
private function ejecutar5010 (){
$l = new ListaPedido ( $this -> usuario , " " , " " , " " );
$this -> getValor ( " procedencia " );
$this -> getValor ( " cliente " );
$bd = new BD ();
$miId = $this -> getValor ( " oid " );
$consulta = " SELECT * FROM pedidos WHERE oid=' $miId ' " ;
$res = $bd -> execQuery ( $consulta );
$this -> parseaResource ( $res );
$campos = array ();
foreach ( $this -> campos as $campo => $valor ){
if ( $campo != " oid " && $campo != " fecha " )
$campos [ $campo ] = $valor ;
}
$campos [ " estado " ] = 10 ;
$campos [ " msgEstado " ] = " " ;
$id = $l -> addPedido ( $campos );
$p = new Pedido ( $id , $this -> usuario );
$p -> addTecnologias ( $this -> getTecnologias ());
$p -> addIdiomas ( $this -> getIdiomas ());
$p -> addProvincias ( $this -> getProvincias ());
// echo '<script type="text/javascript">
// <!--
// if (confirm("Se acaba de crear un nuevo pedido con el codigo:'.$id.'. <20> Desea visualizar el nuevo pedido?")) {
// // Respuesta afirmativa...
// document.location="pedido.php?idPedido='.$id.'";
// }
// -->
// </script>';
$this -> calculaAfinidad ();
return false ;
}
/**
* A<EFBFBD> ade un comentario por parte de un gerente hacia un candidato
* @ param idCandidato : oid del candidato
* @ param observacion : observacion a proponer
*/
function addComentarioPropuesta ( $idCandidato , $observacion ){
//S<> lo lo puede hacer los gerentes
if ( ! $this -> usuario -> tieneRol ( " 3 " )){
$error = " No tiene permisos para editar la candidatura " ;
throw new Exception ( $error );
return false ;
exit ;
}
$consulta = " UPDATE candidato_pedido SET obsGerente=' " . $observacion . " ' WHERE pedido=' " . $this -> getValor ( " oid " ) . " ' AND candidato=' " . $idCandidato . " ' " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
// Nos actualizamos
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosPropuestos ());
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosPropuestosRRHH ());
}
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosRechazados ());
}
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosAceptados ());
}
$candidato -> modObsGerente ( $observacion );
} else {
$error = " No se ha podido actualiar la observación " ;
throw new Exception ( $error );
return false ;
exit ;
}
}
/**
* A<EFBFBD> ade un comentario por parte de un RRHH hacia un candidato
* @ param idCandidato : oid del candidato
* @ param observacion : observacion a proponer
*/
function addComentarioPropuestaRRHH ( $idCandidato , $observacion ){
//S<> lo lo puede hacer los RRHH
if ( ! $this -> usuario -> tieneRol ( " 4 " )){
$error = " No tiene permisos para editar la candidatura " ;
throw new Exception ( $error );
return false ;
exit ;
}
$consulta = " UPDATE candidato_pedido SET obsRRHH=' " . $observacion . " ' WHERE pedido=' " . $this -> getValor ( " oid " ) . " ' AND candidato=' " . $idCandidato . " ' " ;
$bd = new BD ();
if ( $bd -> execQuery ( $consulta )){
// Nos actualizamos
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosPropuestos ());
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosPropuestosRRHH ());
}
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosRechazados ());
}
if ( $candidato == null ){
$candidato = $this -> buscarCandidatoLista ( $idCandidato , $this -> getCandidatosAceptados ());
}
$candidato -> modObsRRHH ( $observacion );
} else {
$error = " No se ha podido actualiar la observación " ;
throw new Exception ( $error );
return false ;
exit ;
}
}
}
?>