Tarea #647 -> Nueva entrada de menú para ver la lista de ofertas

Tarea #646 -> Crear la acción "Creación de oferta" que cree una oferta relacionada con la solicitud de oferta que se está mostrando.
Tarea #607 -> Nueva entidad 'Oferta' con estados nuevos
Tarea #606 -> Nuevos estados y transiciones para una solicitud de oferta
Tarea #601 -> Nuevos estados y transiciones para un candidato
Tarea #599 -> Repasar los registros que se meten en el historial de cambios
Tarea #586 -> Cuando una solicitud tiene varios perfiles, hay que visualizarlos ocupando las menos filas posibles
Tarea #585 -> Cuando un candidato tiene varios perfiles, hay que visualizarlos ocupando las menos filas posibles

git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_Intranet/trunk/src@65 e2b1556b-49f8-d141-9351-52d6861a72d9
This commit is contained in:
David Arranz 2011-05-19 08:46:58 +00:00
parent ec58065e0c
commit 9e87e5eb38
30 changed files with 3693 additions and 3025 deletions

View File

@ -29,7 +29,7 @@
function getSiguientes($estado){ function getSiguientes($estado){
$consulta = "SELECT final, nombre, rol FROM ".$this->objeto."_transiciones, ".$this->objeto."_estados WHERE inicial='$estado' AND idioma='$this->idioma'" . $consulta = "SELECT final, nombre, rol FROM ".$this->objeto."_transiciones, ".$this->objeto."_estados WHERE inicial='$estado' AND idioma='$this->idioma'" .
" AND ".$this->objeto."_transiciones.final = ".$this->objeto."_estados.cod AND ".$this->objeto."_transiciones.rol <> ''"; " AND ".$this->objeto."_transiciones.final = ".$this->objeto."_estados.cod AND ".$this->objeto."_transiciones.rol <> ''";
$bd = new BD(); $bd = new BD();
$resultado = $bd->execQuery($consulta); $resultado = $bd->execQuery($consulta);

View File

@ -15,12 +15,14 @@ include_once("Conexion.php");
$this->conexion = new Conexion(); $this->conexion = new Conexion();
} }
function execQuery($query){ function execQuery($query){
$res = mysql_query($query); $res = mysql_query($query);
//$mensaje = $query." - ".$res."\r\n";
//$fichero = fopen("querys.log","a"); /*$mensaje = $query." - ".$res."\r\n";
//fputs($fichero,$mensaje); $fichero = fopen("querys.log","a");
//fclose($fichero); fputs($fichero,$mensaje);
fclose($fichero);*/
return $res; return $res;
} }

View File

@ -1,4 +1,5 @@
<?php <?php
/* /*
* Clase Candidato * Clase Candidato
* *
@ -7,385 +8,391 @@
* 2008-10-06 (diego): Se crea el objeto con los métodos necesarios para gestionar candidatos. * 2008-10-06 (diego): Se crea el objeto con los métodos necesarios para gestionar candidatos.
* *
*/ */
include_once("BD.php"); include_once("BD.php");
include_once("Persona.php"); include_once("Persona.php");
class Candidato extends Persona{ include_once("Automata.php");
private $usuario; class Candidato extends Persona {
function Candidato($usuario, $oid){ private $usuario;
$consulta = "SELECT oid FROM usuarios WHERE oid = '".$oid."' AND tipo='candidato'";
$bd = new BD();
$num = $bd->numFilas($consulta);
if($num > 0){
parent::Persona($oid);
$this->usuario = $usuario;
}else{
$error = "Candidato no encontrado.";
throw new Exception($error);
}
}
function setCampo($nombre, $valor){ function Candidato($usuario, $oid) {
//PERMISOS: $consulta = "SELECT oid FROM usuarios WHERE oid = '" . $oid . "' AND tipo='candidato'";
/* $bd = new BD();
* Admin (1) - Todos $num = $bd->numFilas($consulta);
* RRHH (4) - Todos if ($num > 0) {
* Otro - Excepción parent::Persona($oid);
*/ $this->usuario = $usuario;
$sesion = $this->usuario->getValor("oid"); } else {
if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){ $error = "Candidato no encontrado.";
return parent::setCampo($nombre, $valor); throw new Exception($error);
}else{ }
//Campos que se pueden editar por el gerente, ya sea directamente o mediante una transición. }
if(($nombre == "observaciones" || $nombre == "msgEstado" || $nombre = "diasEspera" || $nombre == "estado") && $this->usuario->tieneRol(3)){
return parent::setCampo($nombre, $valor);
}else{
$error = "El usuario no tiene permisos para editar al candidato.";
throw new Exception($error);
return false;
exit;
}
}
}
function addCurriculum($fichero){ function setCampo($nombre, $valor) {
//PERMISOS: //PERMISOS:
/* /*
* Admin (1) - Todos * Admin (1) - Todos
* RRHH (4) - Todos * RRHH (4) - Todos
* Otro - Excepción * Otro - Excepción
*/ */
$sesion = $this->usuario->getValor("oid"); $sesion = $this->usuario->getValor("oid");
if($this->usuario->tieneRol(3) || $this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){ if ($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)) {
return parent::addCurriculum($fichero, $this->usuario->getValor("nombre")); return parent::setCampo($nombre, $valor);
}else{ } else {
$error = "El usuario no tiene permisos para asociar CV al candidato."; //Campos que se pueden editar por el gerente, ya sea directamente o mediante una transición.
throw new Exception($error); if (($nombre == "observaciones" || $nombre == "msgEstado" || $nombre = "diasEspera" || $nombre == "estado") && $this->usuario->tieneRol(3)) {
return false; return parent::setCampo($nombre, $valor);
exit; } else {
} $error = "El usuario no tiene permisos para editar al candidato.";
} throw new Exception($error);
return false;
exit;
}
}
}
function removeCurriculum($curriculum, $fecha){ function addCurriculum($fichero) {
//PERMISOS: //PERMISOS:
/* /*
* Admin (1) - Todos * Admin (1) - Todos
* RRHH (4) - Todos * RRHH (4) - Todos
* Otro - Excepción * Otro - Excepción
*/ */
$sesion = $this->usuario->getValor("oid"); $sesion = $this->usuario->getValor("oid");
if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){ if ($this->usuario->tieneRol(3) || $this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)) {
parent::removeCurriculum($curriculum, $fecha, $this->usuario->getValor("nombre")); return parent::addCurriculum($fichero, $this->usuario->getValor("nombre"));
}else{ } else {
$error = "El usuario no tiene permisos para eliminar un CV al candidato."; $error = "El usuario no tiene permisos para asociar CV al candidato.";
throw new Exception($error); throw new Exception($error);
} return false;
} exit;
}
}
/*SQL que da los pedidos en el que está un candidato dependiendo del estado function removeCurriculum($curriculum, $fecha) {
//PERMISOS:
/*
* Admin (1) - Todos
* RRHH (4) - Todos
* Otro - Excepción
*/
$sesion = $this->usuario->getValor("oid");
if ($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)) {
parent::removeCurriculum($curriculum, $fecha, $this->usuario->getValor("nombre"));
} else {
$error = "El usuario no tiene permisos para eliminar un CV al candidato.";
throw new Exception($error);
}
}
En el ejemplo /* SQL que da los pedidos en el que está un candidato dependiendo del estado
estado -> 20
id Candidato ->12 En el ejemplo
@param $estado - Estado del pedido. estado -> 20
@return array codPedido => nombre o vacío. id Candidato ->12
*/ @param $estado - Estado del pedido.
function getPedidosByEstado($estado){ @return array codPedido => nombre o vacío.
/*SELECT P.oid,P.nombre */
FROM pedidos P,candidato_pedido CP
WHERE CP.candidato='12' function getPedidosByEstado($estado) {
AND CP.estado='20' /* SELECT P.oid,P.nombre
AND P.oid=CP.pedido*/ FROM pedidos P,candidato_pedido CP
$idC = $this->getValor("oid"); WHERE CP.candidato='12'
$consulta = "SELECT P.oid as oid,P.nombre as nombre AND CP.estado='20'
AND P.oid=CP.pedido */
$idC = $this->getValor("oid");
$consulta = "SELECT P.oid as oid,P.nombre as nombre
FROM pedidos P,candidato_pedido CP FROM pedidos P,candidato_pedido CP
WHERE CP.candidato='$idC' WHERE CP.candidato='$idC'
AND CP.estado='$estado' AND CP.estado='$estado'
AND P.oid=CP.pedido"; AND P.oid=CP.pedido";
$bd = new BD(); $bd = new BD();
return $bd->keyValueQuery($consulta, "oid", "nombre"); return $bd->keyValueQuery($consulta, "oid", "nombre");
} }
function eliminar(){ function eliminar() {
//PERMISOS: //PERMISOS:
/* /*
* Admin (1) - Todos * Admin (1) - Todos
* Otro - Excepción * Otro - Excepción
*/ */
$sesion = $this->usuario->getValor("oid"); $sesion = $this->usuario->getValor("oid");
//Nos declaramos un array de estados eliminables: //Nos declaramos un array de estados eliminables:
$estados_eliminables = array(10, 20, 50, 40, 60); $estados_eliminables = array(10, 20, 50, 40, 60);
if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){ if ($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)) {
$estado = $this->getValor("estado"); $estado = $this->getValor("estado");
if(in_array($estado, $estados_eliminables)){ if (in_array($estado, $estados_eliminables)) {
return parent::eliminar(); return parent::eliminar();
}else{ } else {
$nombre_estado = $this->getValor("nombre_estado"); $nombre_estado = $this->getValor("nombre_estado");
$error = "No se pueden eliminar candidatos en estado ".$nombre_estado."."; $error = "No se pueden eliminar candidatos en estado " . $nombre_estado . ".";
throw new Exception($error); throw new Exception($error);
return false; return false;
} }
}else{ } else {
$error = "El usuario no tiene permisos para eliminar al candidato."; $error = "El usuario no tiene permisos para eliminar al candidato.";
throw new Exception($error); throw new Exception($error);
return false; return false;
} }
} }
function actualizarHistorial($mensaje){ function actualizarHistorial($mensaje) {
parent::actualizarHistorial($mensaje, $this->usuario->getValor("nombre")); parent::actualizarHistorial($mensaje, $this->usuario->getValor("nombre"));
} }
function getSiguientes(){ function getSiguientes() {
$estado = $this->getValor("estado"); $estado = $this->getValor("estado");
$idioma = $this->usuario->getValor("idioma"); $idioma = $this->usuario->getValor("idioma");
$rol = $this->usuario->getValor("rol"); $rol = $this->usuario->getValor("rol");
$a = new Automata("candidatos", $idioma, $rol); $a = new Automata("candidatos", $idioma, $rol);
$siguientes = $a->getSiguientes($estado); $siguientes = $a->getSiguientes($estado);
return $siguientes; return $siguientes;
} }
function transita($destino, $argumentos){ function transita($destino, $argumentos) {
$origen = $this->getValor("estado"); $origen = $this->getValor("estado");
$idioma = $this->usuario->getValor("idioma"); $idioma = $this->usuario->getValor("idioma");
$rol = $this->usuario->getValor("rol"); $rol = $this->usuario->getValor("rol");
$a = new Automata("candidatos", $idioma, $rol); $a = new Automata("candidatos", $idioma, $rol);
$transita = $a->getTransicion($origen,$destino);
if(($transita == "") || !($transita >= 0)){ $transita = $a->getTransicion($origen, $destino);
return false;
}else{
$res = $this->ejecutaTransicion($transita, $argumentos);
if($res){
$total = explode("#&dias;", $argumentos);
$msj = $total[0];
$diasEspera = $total[1];
$this->setCampos(array("msgEstado" => $msj, "diasEspera" => $diasEspera, "estado" => $destino));
/*$this->setCampo("msgEstado", $msj);
$this->setCampo("diasEspera", $diasEspera);
$this->setCampo("estado", $destino);*/
}
return $res;
}
}
private function ejecutaTransicion($codigo, $argumentos){ if (($transita == "") || !($transita >= 0)) {
//Si no hace nada al transitar salimos sin más. return false;
if($codigo == 0) return true; } else {
$funcion = "ejecutar$codigo"; $res = $this->ejecutaTransicion($transita, $argumentos);
$res = call_user_func(array("Candidato", $funcion), $argumentos); if ($res) {
$total = explode("#&dias;", $argumentos);
$msj = $total[0];
$diasEspera = $total[1];
$this->setCampos(array("msgEstado" => $msj, "diasEspera" => $diasEspera, "estado" => $destino));
/* $this->setCampo("msgEstado", $msj);
$this->setCampo("diasEspera", $diasEspera);
$this->setCampo("estado", $destino); */
}
return $res;
}
}
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("Candidato", $funcion), $argumentos);
/** return $res;
* Disponible a no disponible }
* Entrevistado a no disponible (entrevistado).
* Admin, RRHH
SE LLEGA DESDE:
- Editar el estado del candidato desde la vista.
PRECONDICIONES: /**
- Mensaje con texto. * Disponible a no disponible
* Entrevistado a no disponible (entrevistado).
* Admin, RRHH
SE LLEGA DESDE:
- Editar el estado del candidato desde la vista.
POSTCONDICIONES: PRECONDICIONES:
- Eliminarle de candidaturas en las que no esté rechazado - Mensaje con texto.
y el pedido esté pendiente, asignado o contratado
y comprobar transiciones a otros pedidos.
*/
private function ejecutar1020($mensaje){
if($mensaje == ""){ POSTCONDICIONES:
echo '<script type="text/javascript"> - Eliminarle de candidaturas en las que no esté rechazado
y el pedido esté pendiente, asignado o contratado
y comprobar transiciones a otros pedidos.
*/
private function ejecutar1020($mensaje) {
if ($mensaje == "") {
echo '<script type="text/javascript">
<!-- <!--
alert("Debe introducir un motivo para pasar al candidato a No disponible"); alert("Debe introducir un motivo para pasar al candidato a No disponible");
--> -->
</script>'; </script>';
return false; return false;
} }
return true; return true;
} }
/** /**
* Disponible a Entrevistado * Disponible a Entrevistado
* En proceso a En proceso (entrevistado) * En proceso a En proceso (entrevistado)
* No disponible a No disponible (entrevistado) * No disponible a No disponible (entrevistado)
* Admin, RRHH * Admin, RRHH
SE LLEGA DESDE: SE LLEGA DESDE:
- Editar el estado del candidato desde la vista. - Editar el estado del candidato desde la vista.
PRECONDICIONES: PRECONDICIONES:
- Ninguna. - Ninguna.
POSTCONDICIONES: POSTCONDICIONES:
- Almacenar en la BD la fecha de la entrevista. - Almacenar en la BD la fecha de la entrevista.
*/ */
private function ejecutar1050($mensaje){ private function ejecutar1050($mensaje) {
$fechaAntEntrevista=$this->getValor("fecha_entrevista"); $fechaAntEntrevista = $this->getValor("fecha_entrevista");
if(($fechaAntEntrevista=="2008-1-1") || ($fechaAntEntrevista=="0000-00-00")){ if (($fechaAntEntrevista == "2008-1-1") || ($fechaAntEntrevista == "0000-00-00")) {
$fecha = date(Y."-".m."-".d); $fecha = date(Y . "-" . m . "-" . d);
$this->setCampos(array("fecha_entrevista" => $fecha)); $this->setCampos(array("fecha_entrevista" => $fecha));
} }
return true; return true;
} }
/** /**
* En proceso a no disponible * En proceso a no disponible
* En proceso (entrevistado) a no disponible (entrevistado). * En proceso (entrevistado) a no disponible (entrevistado).
* Admin, RRHH * Admin, RRHH
SE LLEGA DESDE: SE LLEGA DESDE:
- Editar el estado del candidato desde la vista. - Editar el estado del candidato desde la vista.
PRECONDICIONES: PRECONDICIONES:
- Mensaje con texto. - Mensaje con texto.
POSTCONDICIONES: POSTCONDICIONES:
- Eliminarle de candidaturas en las que no esté rechazado - Eliminarle de candidaturas en las que no esté rechazado
y el pedido esté pendiente, asignado o contratado y el pedido esté pendiente, asignado o contratado
y comprobar transiciones a otros pedidos. y comprobar transiciones a otros pedidos.
*/ */
private function ejecutar3020($mensaje){ private function ejecutar3020($mensaje) {
if($mensaje == ""){ if ($mensaje == "") {
echo '<script type="text/javascript"> echo '<script type="text/javascript">
<!-- <!--
alert("Debe introducir un motivo para pasar al candidato a No disponible"); alert("Debe introducir un motivo para pasar al candidato a No disponible");
--> -->
</script>'; </script>';
return false; return false;
} }
$oid = $this->getValor("oid"); $oid = $this->getValor("oid");
$consulta = "SELECT pedido FROM candidato_pedido, pedidos WHERE candidato='$oid' AND estado <> '10' AND pedido.oid = candidato_pedido.pedido AND pedido.estado IN ('10', '20', '30')"; $consulta = "SELECT pedido FROM candidato_pedido, pedidos WHERE candidato='$oid' AND estado <> '10' AND pedido.oid = candidato_pedido.pedido AND pedido.estado IN ('10', '20', '30')";
$bd = new BD(); $bd = new BD();
$pedidos = $bd->arrayQuery($consulta, "pedido"); $pedidos = $bd->arrayQuery($consulta, "pedido");
//Elimino al usuario de todas las candidaturas en las que no esté rechazado y el pedido esté pendiente, asignado o contratado. //Elimino al usuario de todas las candidaturas en las que no esté rechazado y el pedido esté pendiente, asignado o contratado.
$consulta = "DELETE FROM candidato_pedido, pedidos WHERE candidato='$oid' AND estado <> '10' AND pedido.oid = candidato_pedido.pedido AND pedido.estado IN ('10', '20', '30')"; $consulta = "DELETE FROM candidato_pedido, pedidos WHERE candidato='$oid' AND estado <> '10' AND pedido.oid = candidato_pedido.pedido AND pedido.estado IN ('10', '20', '30')";
//Para cada candidatura en la que no esté rechazado compruebo si el sacarle //Para cada candidatura en la que no esté rechazado compruebo si el sacarle
//de ella supone un cambio en el pedido: //de ella supone un cambio en el pedido:
foreach($pedidos as $idP){ foreach ($pedidos as $idP) {
$pedido = new Pedido($idP); $pedido = new Pedido($idP);
$estado = $pedido->getEstado("estado"); $estado = $pedido->getEstado("estado");
//Si está asignado o contratado tiene que transitar a pendiente //Si está asignado o contratado tiene que transitar a pendiente
//(la transición se encarga ya de comprobar si cumple las precondiciones //(la transición se encarga ya de comprobar si cumple las precondiciones
//de este cambio de estado) //de este cambio de estado)
if(($estado == '20') || ($estado == '30')){ if (($estado == '20') || ($estado == '30')) {
$pedido->transita(10, ""); $pedido->transita(10, "");
} }
} }
return true; return true;
} }
/** /**
* No disponible a Disponible * No disponible a Disponible
* Admin, RRHH * Admin, RRHH
SE LLEGA DESDE: SE LLEGA DESDE:
- Editar el estado del candidato desde la vista. - Editar el estado del candidato desde la vista.
POSTCONDICIONES: POSTCONDICIONES:
- Calcular la afinidad del candidato con todos los pedidos para que - Calcular la afinidad del candidato con todos los pedidos para que
puedan aparecer en ellos como "Propuestos por el sistema". puedan aparecer en ellos como "Propuestos por el sistema".
*/ */
private function ejecutar2010(){ private function ejecutar2010() {
$this->setCampos(array("estado" => "10")); $this->setCampos(array("estado" => "10"));
$this->calculaAfinidad(); $this->calculaAfinidad();
return true; return true;
} }
/** /**
* En proceso a disponible * En proceso a disponible
* En proceso (entrevistado) a disponible * En proceso (entrevistado) a disponible
SE LLEGA DESDE: SE LLEGA DESDE:
- Rechazar a un candidato. - Rechazar a un candidato.
- Poner un pedido en el que se encontraba como "No contratado". - Poner un pedido en el que se encontraba como "No contratado".
PRECONDICIONES: PRECONDICIONES:
- El usuario no se encuentra aceptado en ningún proceso de selección. - El usuario no se encuentra aceptado en ningún proceso de selección.
*/ */
private function ejecutar3010(){ private function ejecutar3010() {
$id = $this->getValor("oid"); $id = $this->getValor("oid");
$bd = new BD(); $bd = new BD();
$consulta = "SELECT * FROM candidato_pedido WHERE candidato='.$id.' AND estado='20'"; $consulta = "SELECT * FROM candidato_pedido WHERE candidato='.$id.' AND estado='20'";
$res = $bd->numFilas(($consulta)); $res = $bd->numFilas(($consulta));
//No se cambia si está en más procesos. //No se cambia si está en más procesos.
if($res > 0){ if ($res > 0) {
return false; return false;
} }
return true; return true;
} }
/** /**
* Disponible a En proceso. * Disponible a En proceso.
* Admin, RRHH * Admin, RRHH
SE LLEGA DESDE: SE LLEGA DESDE:
- Al aceptar a un candidato disponible en un proceso de selección. - Al aceptar a un candidato disponible en un proceso de selección.
EFECTOS: EFECTOS:
- Se envía un email a RRHH informando de que se ha aceptado en un proyecto a un - Se envía un email a RRHH informando de que se ha aceptado en un proyecto a un
candidato que no ha sido entrevistado. candidato que no ha sido entrevistado.
- Se cambia el estado del candidato de disponible a enproceso - Se cambia el estado del candidato de disponible a enproceso
*/ */
private function ejecutar1030(){ private function ejecutar1030() {
//Enviar un mail a RRHH con los datos pidiendo incorporación. //Enviar un mail a RRHH con los datos pidiendo incorporación.
$nombre = $this->getValor("nombre")." ".$this->getValor("apellidos"); $nombre = $this->getValor("nombre") . " " . $this->getValor("apellidos");
$oid = $this->getValor("oid"); $oid = $this->getValor("oid");
$asunto = "Candidato aceptado por pedido no entrevistado"; $asunto = "Candidato aceptado por pedido no entrevistado";
$direccion = constante("email"); $direccion = constante("email");
$path = "http://portal.selforsistemas.net"; $path = "http://portal.selforsistemas.net";
//$link = "<a href='".$path."/detalle_candidato.php?oid=".$oid."'>".$nombre."</a>"; //$link = "<a href='".$path."/detalle_candidato.php?oid=".$oid."'>".$nombre."</a>";
$email = "El candidato ".$nombre." no entrevistado ha sido aceptado para un pedido."; $email = "El candidato " . $nombre . " no entrevistado ha sido aceptado para un pedido.";
envia_correo($direccion, $asunto, $email); envia_correo($direccion, $asunto, $email);
$this->setCampos(array("estado" => "30")); $this->setCampos(array("estado" => "30"));
return true; return true;
} }
/** /**
* Entrevistado a Incorporado * Entrevistado a Incorporado
* En proceso (entrevistado) a Incorporado * * En proceso (entrevistado) a Incorporado *
* Admin, RRHH * Admin, RRHH
SE LLEGA DESDE: SE LLEGA DESDE:
- Editar el estado del candidato desde la vista. - Editar el estado del candidato desde la vista.
PRECONDICIONES: PRECONDICIONES:
- Ninguna. - Ninguna.
POSTCONDICIONES: POSTCONDICIONES:
- Cambia el tipo a "usuario" y desaparece de la lista de candidatos. - Cambia el tipo a "usuario" y desaparece de la lista de candidatos.
- Se añade el campo "Fecha alta". - Se añade el campo "Fecha alta".
- Se transita automáticamente a "Esperando proyecto". - Se transita automáticamente a "Esperando proyecto".
*/ */
private function ejecutar5080($mensaje){ private function ejecutar5080($mensaje) {
$fecha = date(Y."-".m."-".d); $fecha = date(Y . "-" . m . "-" . d);
$nombre = md5($this->getValor("nombre")); $nombre = md5($this->getValor("nombre"));
$this->setCampos(array("tipo" => "usuario", "estado" => "90", "password" => $nombre, "rol" => 6, "fecha_alta" => $fecha, "salario" => $mensaje)); $this->setCampos(array("tipo" => "usuario", "estado" => "90", "password" => $nombre, "rol" => 6, "fecha_alta" => $fecha, "salario" => $mensaje));
/*$this->setCampo("estado", "90"); /* $this->setCampo("estado", "90");
$this->setCampo("password", $nombre); $this->setCampo("password", $nombre);
$this->setCampo("rol", 6); $this->setCampo("rol", 6);
$this->setCampo("fecha_alta", $fecha); $this->setCampo("fecha_alta", $fecha);
$this->setCampo("salario", $mensaje);*/ $this->setCampo("salario", $mensaje); */
return false; return false;
} }
/**
* Entrevistado a En proceso(entrevistado).
* Admin, RRHH
SE LLEGA DESDE:
- Al aceptar a un candidato disponible en un proceso de selección.
EFECTOS: /**
- Se cambia el estado del candidato de en proceso(entrevistado) * Entrevistado a En proceso(entrevistado).
*/ * Admin, RRHH
SE LLEGA DESDE:
- Al aceptar a un candidato disponible en un proceso de selección.
private function ejecutar5070(){ EFECTOS:
$this->setCampos(array("estado" => "70")); - Se cambia el estado del candidato de en proceso(entrevistado)
$this->campos["estado_usuario"]="70"; */
return true; private function ejecutar5070() {
} $this->setCampos(array("estado" => "70"));
$this->campos["estado_usuario"] = "70";
return true;
}
}
}
?> ?>

View File

@ -81,8 +81,34 @@
echo '<a href="pedido.php?idPedido='.$_GET['idPedido'].'" class="menuOption" style="color:#000000">'.$this->locale['1077'].'</a>'; echo '<a href="pedido.php?idPedido='.$_GET['idPedido'].'" class="menuOption" style="color:#000000">'.$this->locale['1077'].'</a>';
} }
} }
if(in_array("nueva_oferta",$opcionesThis)){
echo '<a href="addOferta.php" class="menuOption" style="color:#000000">'.'Nueva oferta'.'</a>';
}
} }
function menuOfertas($usuario, $opciones){
if(!is_array($opciones)){
$opcionesThis = array();
} else {
$opcionesThis = $opciones;
}
echo '<a href="lista_ofertas.php" class="menuOption" style="color:#000000">'.$this->locale['5100'].'</a>';
if($usuario->tieneRol("3") ||$usuario->tieneRol("1")){
echo '<a href="addOferta.php" class="menuOption" style="color:#000000">'.$this->locale['5101'].'</a>';
}
/*echo '<a href="buscar_oferta.php" class="menuOption" style="color:#000000">'.$this->locale['5102'].'</a>';*/
if(!in_array("gestionar", $opcionesThis)){
if(substr_count($_SERVER['REQUEST_URI'],"/oferta.php?idOferta")==1){
echo '<a href="gestion_oferta.php?idOferta='.$_GET['idOferta'].'" class="menuOption" style="color:#000000">'.$this->locale['284'].'</a>';
}
if(substr_count($_SERVER['REQUEST_URI'],"/gestion_oferta.php?idOferta")==1){
echo '<a href="oferta.php?idOferta='.$_GET['idOferta'].'" class="menuOption" style="color:#000000">'.$this->locale['5103'].'</a>';
}
}
}
function menuCandidatos(){ function menuCandidatos(){
// Lista de candidatos // Lista de candidatos
echo '<a href="lista_candidatos.php" class="menuOption" style="color:#000000">'.$this->locale['801'].'</a>'; echo '<a href="lista_candidatos.php" class="menuOption" style="color:#000000">'.$this->locale['801'].'</a>';
@ -211,10 +237,15 @@
if (!strcmp($opcion, "Gestión de candidatos")) { if (!strcmp($opcion, "Gestión de candidatos")) {
echo '<li><a title="'.$opcion.'" href="lista_candidatos.php">'.$opcion.'</a></li>'; echo '<li><a title="'.$opcion.'" href="lista_candidatos.php">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Mis datos")) { } elseif (!strcmp($opcion, "Mis datos")) {
$PonerAlFinal = '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>'; $PonerAlFinal .= '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Mantenimiento del sistema")) {
$PonerAlFinal .= '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Solicitudes de oferta")) { } elseif (!strcmp($opcion, "Solicitudes de oferta")) {
// Ticket 640 -> Entrada automatica a la lista de solicitudes de oferta. // Ticket 640 -> Entrada automatica a la lista de solicitudes de oferta.
echo '<li><a title="'.$opcion.'" href="lista_pedidos.php">'.$opcion.'</a></li>'; echo '<li><a title="'.$opcion.'" href="lista_pedidos.php">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Ofertas")) {
// Ticket 647 -> Nueva entrada de menú para ver la lista de ofertas
echo '<li><a title="'.$opcion.'" href="lista_ofertas.php">'.$opcion.'</a></li>';
} else { } else {
echo '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>'; echo '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>';
} }

View File

@ -1,4 +1,5 @@
<?php <?php
/* /*
* Clase ListaCandidatos * Clase ListaCandidatos
* *
@ -6,57 +7,100 @@
* *
*/ */
include_once("ListaPersonas.php"); include_once("ListaPersonas.php");
class ListaCandidatos extends ListaPersonas{ class ListaCandidatos extends ListaPersonas {
//Atributos:
//Constructor:
//Funciones:
//Atributos: /**
* Crea una lista de candidatos.
* @param usuario - dueño de la sesión.
* @param orden - parámetros por los que ordenar la lista.
* @param sql - consulta de búsqueda.
*/
function ListaCandidatos($usuario, $orden, $sql, $estado) {
parent::ListaPersonas($usuario, $orden, $sql);
$this->tipo = "candidato";
$this->estado = $estado;
}
//Constructor: /**
* Devuelve la query de la consulta usada en la búsqueda para crear la lista.
* @return una cadena de texto con la query.
*/
function getSQL() {
return $this->sql;
}
//Funciones: /**
* Devuelve una lista de los posibles estados en los que se puede encontrar un candidato
* como Key => value, donde key es el cod del estado y value es el nombre del estado.
*/
function getEstados() {
$consulta = "SELECT cod, nombre FROM candidatos_estados WHERE tipo='candidato'";
$bd = new BD();
return $bd->keyValueQuery($consulta, "cod", "nombre");
}
/** /**
* Crea una lista de candidatos. * Inserta un nuevo candidato en la lista de candidatos.
* @param usuario - dueño de la sesión. * @param campos - datos del candidato.
* @param orden - parámetros por los que ordenar la lista. */
* @param sql - consulta de búsqueda. function addCandidato($campos) {
*/ $campos["estado"] = 510;
function ListaCandidatos($usuario,$orden,$sql,$estado){ $id = parent::addPersona($campos);
parent::ListaPersonas($usuario, $orden, $sql); $candidato = new Candidato($this->usuario, $id);
$this->tipo = "candidato"; $mensaje = "Nuevo candidato";
$this->estado=$estado; $candidato->actualizarHistorial($mensaje);
} return $id;
}
/** /**
* Devuelve la query de la consulta usada en la búsqueda para crear la lista. * Devuelve los candidatos
* @return una cadena de texto con la query. */
*/ function getCandidatos() {
function getSQL(){ $candidatos = array();
return $this->sql;
}
/** if ($this->sql != "") {
* Devuelve una lista de los posibles estados en los que se puede encontrar un candidato // metemos el estado si es > 0
* como Key => value, donde key es el cod del estado y value es el nombre del estado. if ($this->estado > 0) {
*/ if (stripos($this->sql, "WHERE") > 0) {
function getEstados(){ $sqlAntesWhere = substr($this->sql, 0, stripos($this->sql, "WHERE"));
$consulta = "SELECT cod, nombre FROM candidatos_estados WHERE tipo='candidato'"; $sqlDespuesWhere = substr($this->sql, stripos($this->sql, "WHERE") + 5, strlen($this->sql));
$bd = new BD(); $sqlConEstado = "WHERE usuarios.estado='" . $this->estado . "' and ";
return $bd->keyValueQuery($consulta, "cod", "nombre"); $sqlNueva = $sqlAntesWhere . $sqlConEstado . $sqlDespuesWhere;
} } else {
$sqlConEstado = "WHERE usuarios.estado='" . $this->estado . "' ";
$sqlNueva = $this->sql . $sqlConEstado;
}
} else {
$sqlNueva = $this->sql;
}
$consulta = $sqlNueva . " " . $this->order_by;
} else {
if ($this->estado > 0) {
$consulta = "SELECT oid from usuarios WHERE tipo='" . $this->tipo . "' and estado='" . $this->estado . "'" . $this->orden;
} else {
$consulta = "SELECT oid from usuarios WHERE tipo='" . $this->tipo . "'" . $this->orden . "";
}
}
$bd = new BD();
$resultado = $bd->execQuery($consulta);
//Procesamos los candidatos.
if (mysql_num_rows($resultado) != 0) {
while ($rows = mysql_fetch_array($resultado)) {
$p = new Candidato($this->usuario, $rows["oid"]);
$candidatos[] = $p;
}
}
return $candidatos;
}
}
/**
* Inserta un nuevo candidato en la lista de candidatos.
* @param campos - datos del candidato.
*/
function addCandidato($campos){
$campos["estado"] = 510;
$id = parent::addPersona($campos);
$candidato = new Candidato($this->usuario, $id);
$mensaje = "Nuevo candidato";
$candidato->actualizarHistorial($mensaje);
return $id;
}
}
?> ?>

150
Objects/ListaOfertas.php Normal file
View File

@ -0,0 +1,150 @@
<?php
/*
* Clase ListaOfertas
*/
include_once("Objects/Oferta.php");
class ListaOfertas {
// Atributos:
/* Una lista de pedidos. */
private $ofertas = array();
/* Gestor dueño de la lista. */
private $gestor;
/* Campos por los que ordenar la lista. */
private $orden;
/* Condiciones para búsquedas. */
private $condiciones;
// Constructor:
/**
* Crea una lista de ofertas.
*
* @param usuario $ - gestor dueño de la lista.
* @param orden $ - parámetros por los que ordenar la lista.
* @param sql $ - consulta de búsqueda.
*/
function ListaOfertas($usuario, $condiciones=array(), $orden=array()) {
$this->gestor = $usuario;
$this->orden = $orden;
$this->condiciones = $condiciones;
}
/**
* Busca y devuelve todos los pedidos del usuario.
*/
function getOfertas() {
// sacado de http://patrickallaert.blogspot.com/2007/09/building-dynamic-sql-queries-elegant.html
$consulta = "SELECT * FROM candidato_pedido";
if (count($this->condiciones)) {
$consulta .= ' WHERE ' . implode(' AND ', $this->condiciones);
}
if (count($this->orden)) {
$consulta .= ' ORDER BY ' . implode(' , ', $this->orden);
}
$bd = new BD();
$resultado = $bd->execQuery($consulta);
// Procesamos las ofertas.
if (mysql_num_rows($resultado) == 0) {
$this->ofertas = array();
} else {
while ($rows = mysql_fetch_array($resultado)) {
$p = new Oferta($rows["oid"], $this->gestor);
$this->ofertas[] = $p;
}
}
return $this->ofertas;
}
/**
* Devuelve una lista de los posibles estados en los que se puede encontrar un pedido
* como Key => value, donde key es el cod del estado y value es el nombre del estado.
*/
function getEstadosOfertas() {
$consulta = "SELECT cod, nombre FROM candidaturas_estados";
$bd = new BD();
return $bd->keyValueQuery($consulta, "cod", "nombre");
}
/**
* Busca una oferta en función de su identificador.
*
* @return el pedido, en caso de encontrarlo y null en
* caso contrario.
*/
function buscarOferta($id) {
$lista = $this->getOfertas();
if ($lista) {
foreach ($lista as $elem) {
if ($elem->getValor("oid") == $id) {
return $elem;
}
}
}
return null;
}
function addOferta($campos) {
if (!$this->gestor->tieneRol(1) && !$this->gestor->tieneRol(3)) {
$error = "El usuario no tiene permisos para crear ofertas.";
throw new Exception($error);
}
// Calculamos el id
$referencia = $this->calculaReferencia($campos["pedido"]);
$inserto = "fecha, referencia";
$fecha = "'" . date("Y-m-d") . "'";
$valores = "$fecha, $referencia";
// Procesamos los datos
foreach ($campos as $key => $value) {
$inserto .= ", $key";
$valores .= ", '$value'";
}
// Insertamos en la BD
$consulta = "INSERT INTO candidato_pedido ($inserto) VALUES ($valores)";
$bd = new BD();
if (!$bd->execQuery($consulta)) {
return "-1";
} else {
$id = mysql_insert_id();
$p = new Oferta($id, $this->gestor);
$mensaje = "Nueva oferta";
$p->actualizarHistorial($mensaje);
}
return $id;
}
function calculaReferencia($solicitud) {
$bd = new BD();
$consulta = "select referencia from candidato_pedido where pedido = '$solicitud' order by oid desc limit 1";
if ($resultado = $bd->execQuery($consulta)) {
$rows = mysql_fetch_array($resultado);
echo "########################<br/>";
print_r($rows);
echo "########################<br/>";
$num = 1;
if (!empty($rows[0])) {
$num = substr($rows[0], strpos($rows[0], '/') + 1, strlen($rows[0]));
$num += 1;
}
return sprintf('\'%s/%s\'', $solicitud, $num);
} else {
return sprintf('\'%s/%s\'', $solicitud, 1);
}
}
}
?>

View File

@ -96,7 +96,7 @@ include_once("Objects/Pedido.php");
if($estado > 0){ if($estado > 0){
$consulta = "SELECT * from pedidos WHERE estado='".$estado."'".$this->orden ; $consulta = "SELECT * from pedidos WHERE estado='".$estado."'".$this->orden ;
}else{ }else{
$consulta = "SELECT * from pedidos WHERE estado IN (10, 20, 30) ".$this->orden.""; $consulta = "SELECT * from pedidos ".$this->orden."";
} }
} }
}else if($this->gestor->tieneRol(3)){ }else if($this->gestor->tieneRol(3)){
@ -123,7 +123,7 @@ include_once("Objects/Pedido.php");
if($estado > 0){ if($estado > 0){
$consulta = "SELECT * FROM pedidos WHERE gerente = '$id' AND estado='$estado'".$this->orden; $consulta = "SELECT * FROM pedidos WHERE gerente = '$id' AND estado='$estado'".$this->orden;
}else{ }else{
$consulta = "SELECT * FROM pedidos WHERE estado IN (10, 20, 30) AND gerente = '$id'".$this->orden; $consulta = "SELECT * FROM pedidos WHERE gerente = '$id'".$this->orden;
} }
} }
}else{ }else{
@ -188,6 +188,7 @@ include_once("Objects/Pedido.php");
//Insertamos en la BD //Insertamos en la BD
$consulta = "INSERT INTO pedidos ($inserto) VALUES ($valores)"; $consulta = "INSERT INTO pedidos ($inserto) VALUES ($valores)";
$bd = new BD(); $bd = new BD();
if(!$bd->execQuery($consulta)){ if(!$bd->execQuery($consulta)){
return -1; return -1;

View File

@ -154,7 +154,7 @@ include_once("Empleado.php");
//Insertamos en la BD //Insertamos en la BD
$consulta = "INSERT INTO usuarios ($inserto) VALUES ($valores)"; $consulta = "INSERT INTO usuarios ($inserto) VALUES ($valores)";
echo $consulta;
$bd = new BD(); $bd = new BD();
if(!$bd->execQuery($consulta)){ if(!$bd->execQuery($consulta)){
$error = "Campos del candidato incorrectos. Por favor, avise al webmaster de este error."; $error = "Campos del candidato incorrectos. Por favor, avise al webmaster de este error.";

298
Objects/Oferta.php Normal file
View File

@ -0,0 +1,298 @@
<?php
/*
* Clase Oferta
*/
include_once("BD.php");
include_once("Automata.php");
include_once("ListaCandidatos.php");
include_once("Candidato.php");
class Oferta {
// Atributos:
/* Usuario que tiene activa la sesión. */
private $usuario;
protected $campos = array();
// Constructores:
function Oferta($oid, $usuario) {
$this->usuario = $usuario;
$consulta = "SELECT oid FROM candidato_pedido WHERE oid = '$oid'";
$bd = new BD();
$num = $bd->numFilas($consulta);
if ($num > 0) {
$this->campos['oid'] = $oid;
} else {
$error = "Oferta no encontrada.";
throw new Exception($error);
}
}
function actualizarHistorial($mensaje) {
$oid = $this->getValor("oid");
$usuario = $this->usuario->getValor("nombre");
$consulta = "INSERT INTO historial_oferta (oid_h, fecha_h, persona_h, texto_h) VALUES('$oid', now(), '$usuario', '$mensaje')";
$bd = new BD();
return $bd->execQuery($consulta);
}
function getValor($nombre) {
if (array_key_exists($nombre, $this->campos)) {
// El campo ya lo habíamos recuperamos, lo mostramos
return $this->campos[$nombre];
} else {
switch ($nombre) {
case "nombre_estado":
$idEstado = $this->getValor("estado");
$idioma = $this->usuario->getValor("idioma");
$consulta = "SELECT nombre FROM candidaturas_estados WHERE cod=\"" . $idEstado . "\" AND idioma=\"" . $idioma . "\"";
break;
case "nombre_solicitud":
$oidPedido = $this->getValor("pedido");
$consulta = "SELECT nombre FROM pedidos WHERE oid=\"" . $oidPedido . "\"";
break;
case "nombre_candidato":
$oidCandidato = $this->getValor("candidato");
$consulta = "SELECT concat(nombre, ' ', apellidos) FROM usuarios WHERE oid=\"" . $oidCandidato . "\"";
break;
default: $consulta = "SELECT " . $nombre . " FROM candidato_pedido 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;
}
function getSiguientes() {
$estado = $this->getValor("estado");
$idioma = $this->usuario->getValor("idioma");
$rol = $this->usuario->getValor("rol");
$a = new Automata("candidaturas", $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("candidaturas", $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("Oferta", $funcion), $argumentos);
return $res;
}
/**
* En configuración -> Configurada
*/
private function ejecutar110120() {
// Comprobamos que haya un candidato asignado.
$candidato = $this->getValor("candidato");
if (!empty($candidato)) {
return true;
} else {
$error = "No se puede cambiar de estado porque no hay ningún candidato asignado a esta oferta";
throw new Exception($error);
return false;
exit;
}
}
function setCampo($nombre, $valor) {
// PERMISOS:
/*
* Admin (1) - Todos
* Gestor (3) - Los suyos
* Otro - Excepció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 candidato_pedido SET $nombre = '$valor' WHERE oid='$oid'";
$bd = new BD();
if ($bd->execQuery($consulta)) {
// Guardar en el historial
$valor = $this->getValorMulti($nombre, $valor);
if ($viejo == "" && $valor != "") {
$historial = "$nombre (de - a $valor)";
} else {
$historial = "$nombre (de $viejo a $valor)";
}
if ($nombre = "estado") {
$this->actualizarHistorial($historial);
}
}
}
} else {
$error = "El usuario no tiene permisos para editar la solicitud de oferta.";
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;
}
/**
* Devuelve una lista de candidatos disponibles para una oferta
*/
function getCandidatosDisponibles() {
return $this->getCandidatos("540");
}
/**
* Devuelve una lista de candidatos de un estado dado
*/
private function getCandidatos($estado) {
$lista = new ListaCandidatos($this->usuario, "", "", $estado);
return $lista;
}
function getHistorial() {
$historial = "";
$oid = $this->getValor("oid");
$consulta = "SELECT * FROM historial_oferta 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 quitarCandidato() {
$idCand = $this->getValor("candidato");
if (!empty($idCand)) {
$candidato = new Candidato($this->usuario, $idCand);
$estadoCand = $candidato->getValor("estado");
switch ($estadoCand) {
case "560":
$candidato->transita("540", "");
$nombre_candidato = $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos");
$mensaje = "Eliminado el candidato ".$nombre_candidato;
$this->actualizarHistorial($mensaje);
return true;
break;
default:
$error = "[quitarCandidato]. El candidato tiene un estado no permitido ('" . $estadoCand . "')";
throw new Exception($error);
}
}
}
function colocarCandidato($idCandidato) {
$idCand = $this->getValor("candidato");
if (!empty($idCand)) {
if (!$this->quitarCandidato()) {
return false;
}
}
$candidato = new Candidato($this->usuario, $idCandidato);
$estadoCand = $candidato->getValor("estado");
switch ($estadoCand) {
case "540":
if ($candidato->transita("560", "")) {
$this->setCampo("candidato", $idCandidato);
$nombre_candidato = $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos");
$mensaje = "Asignado el candidato ".$nombre_candidato;
$this->actualizarHistorial($mensaje);
return true;
}
else {
dbug("error");
}
break;
default:
$error = "El candidato tiene un estado no permitido ('" . $candidato->getValor("estado") . "')";
throw new Exception($error);
}
echo dbug('print');
}
}
?>

File diff suppressed because it is too large Load Diff

133
addOferta.php Normal file
View File

@ -0,0 +1,133 @@
<?php
include("seguridad.php");
include("functions.php");
include_once("Objects/ListaOfertas.php");
include_once("Objects/Oferta.php");
include_once("Objects/HTML.php");
$html = new HTML($locale);
$errores = array();
// Todas las variables
if (!empty($_POST)) {
print_r($_POST);
$solicitud = "";
if (!empty($_POST['solicitud'])) {
$solicitud = $_POST['solicitud'][0];
}
/*
$nombre=$_POST['nombre'];
$prioridad=$_POST['prioridad'];
$empleados=$_POST['empleados'];
$duracion=$_POST['duracion'];
$clientes=$_POST['clientes'];
$perfiles=$_POST['perfil'];
$salario_min=$_POST['salario_min'];
$salario_max=$_POST['salario_max'];
$procedencia=$_POST['procedencia'];
$tecnologias=$_POST['tecnologia'];
$idiomas=$_POST['idiomas'];
$provincias=$_POST['provincias']; */
$observaciones = $_POST['observaciones'];
/* $pesoTec=$_POST['pesoTec'];
$pesoIdi=$_POST['pesoIdi'];
$pesoPer=$_POST['pesoPer'];
if($usuario->tieneRol("1")){
$gerente=$_POST['gerente'];
} else {
$gerente=$usuario->getValor("oid");
}
*/
if ($_POST['action'] == "add") {
// Comprobamos campos obligatorios
if (empty($solicitud)) {
$errores[] = "1";
}
// Si no hay errores insertamos el pedido
if (count($errores) == 0) {
$listaOfertas = new ListaOfertas($usuario, "", "", "0");
$arrayInsert = array();
$arrayInsert["pedido"] = $solicitud;
$arrayInsert["obsGerente"] = $observaciones;
$arrayInsert["estado"] = "110";
/* $arrayInsert["prioridad"]= $prioridad;
$arrayInsert["empleados"]=$empleados;
$arrayInsert["duracion"]=$duracion;
$arrayInsert["gerente"]=$gerente;
$arrayInsert["cliente"]=$clientes;
$arrayInsert["salario_min"]=$salario_min;
$arrayInsert["salario_max"]=$salario_max;
$arrayInsert["procedencia"]=$procedencia;
$arrayInsert["estado"]="110";
$arrayInsert["pesoIdioma"]=$pesoIdi;
$arrayInsert["pesoPerfil"]=$pesoPer;
$arrayInsert["pesoTecno"]=$pesoTec; */
$idOferta = $listaOfertas->addOferta($arrayInsert);
if ($idOferta == "-1") {
// Se he producido un fallo al insertar
$errores[] = "0";
$msg = "No se ha podido agregar la oferta";
$tipo = "error";
} else {
$oferta = $listaOfertas->buscarOferta($idOferta);
header("Location: oferta.php?idOferta=" . $idOferta . "&msg=1");
}
}
}
} else {
$referencia = "";
$solicitud = "";
$observaciones = "";
}
include("html/cabecera.php");
echo $html->menuOfertas($usuario, "");
echo "<h2>" . $locale['5105'] . "</h2>";
if (isset($msg) && ($msg != "")) {
echo "<div class=\"aviso " . $tipo . "\">" . $msg . "</div>";
}
echo '<form method="POST" action="addOferta.php" name="form_registro" enctype="multipart/form-data">';
echo "<input type=\"hidden\" name=\"action\" value=\"add\" />";
echo "<table id=\"addOferta\">" .
"<tr>" .
" <td";
if (in_array("1", $errores))
echo " class=\"errorcampo\"";
echo ">" . $locale['1025'] . ":<br/>";
rellena_desplegable_pedidos_estado("solicitud", "130", array($solicitud));
echo " </td>";
echo "</td></tr>";
echo "<tr>";
echo "</tr>";
echo '<tr>' .
'<td colspan="3" align="center">' . $locale['135'] .
'<br><textarea name="observaciones" rows="10" cols="120" style="overflow: auto; width:100%;">' . nl2br($observaciones) . '</textarea></td>' .
'</tr>';
// Botones de guardar y restablecer
echo "<tr><td colspan=\"3\" align=\"center\">";
echo '<input type="submit" value="' . $locale['gu'] . '" onclick="return comprobar_registro(this)" class="button">';
echo '<input type="reset" value="' . $locale['res'] . '" class="button"></td>';
echo "</tr></table>";
echo "</form>";
include_once("html/pie.php");
?>

View File

@ -84,7 +84,7 @@ if(!empty($_POST)) {
$arrayInsert["salario_max"]=$salario_max; $arrayInsert["salario_max"]=$salario_max;
$arrayInsert["procedencia"]=$procedencia; $arrayInsert["procedencia"]=$procedencia;
$arrayInsert["observaciones"]=$observaciones; $arrayInsert["observaciones"]=$observaciones;
$arrayInsert["estado"]="10"; $arrayInsert["estado"]="110";
$arrayInsert["pesoIdioma"]=$pesoIdi; $arrayInsert["pesoIdioma"]=$pesoIdi;
$arrayInsert["pesoPerfil"]=$pesoPer; $arrayInsert["pesoPerfil"]=$pesoPer;
$arrayInsert["pesoTecno"]=$pesoTec; $arrayInsert["pesoTecno"]=$pesoTec;
@ -94,9 +94,8 @@ if(!empty($_POST)) {
$errores[]= "0"; $errores[]= "0";
$msg="No se ha podido agregar el pedido"; $msg="No se ha podido agregar el pedido";
$tipo="error"; $tipo="error";
} else { } else {
$pedido=$listaPedidos->buscarPedido($idPedido); $pedido=$listaPedidos->buscarPedido($idPedido);
print_r($perfiles);
$pedido->addPerfiles($perfiles); $pedido->addPerfiles($perfiles);
$pedido->addTecnologias($tecnologias); $pedido->addTecnologias($tecnologias);
$pedido->addIdiomas($idiomas); $pedido->addIdiomas($idiomas);
@ -172,7 +171,7 @@ echo "</td><td";
if(in_array("5",$errores)) echo " class=\"errorcampo\""; if(in_array("5",$errores)) echo " class=\"errorcampo\"";
echo ">".$locale['121']."<br/>"; echo ">".$locale['121']."<br/>";
// Ticket #565 -> En una solicitud de oferta, se deben poder indicar varios perfiles técnicos // Ticket #565 -> En una solicitud de oferta, se deben poder indicar varios perfiles técnicos
echo $html->listaSelect("perfil","oid","id","perfil",array("",$locale['ns']),$tecnologias,true,true,"15"); echo $html->listaSelect("perfil","oid","id","perfil",array("",$locale['ns']),$perfiles,true,true,"15");
echo "</td><td>".$locale['132'].": ".$locale['2100']; echo "</td><td>".$locale['132'].": ".$locale['2100'];
echo "</td></tr>"; echo "</td></tr>";

View File

@ -8,7 +8,7 @@ if(!$_SESSION["oid"]){
//$consulta = "select usuarios.nombre as nombre,usuarios.apellidos as apellidos, pedidos.nombre as pedido, estado_candidatura.id as estado from usuarios,candidato_pedido,pedidos,estado_candidatura where usuarios.oid='".$persona->getValor("oid")."' and candidato_pedido.candidato='".$persona->getValor("oid")."' and candidato_pedido.pedido = pedidos.oid and candidato_pedido.estado <> 6 "; //$consulta = "select usuarios.nombre as nombre,usuarios.apellidos as apellidos, pedidos.nombre as pedido, estado_candidatura.id as estado from usuarios,candidato_pedido,pedidos,estado_candidatura where usuarios.oid='".$persona->getValor("oid")."' and candidato_pedido.candidato='".$persona->getValor("oid")."' and candidato_pedido.pedido = pedidos.oid and candidato_pedido.estado <> 6 ";
$consulta = "SELECT U.oid as idCandidato,P.oid as idPedido, U.nombre,U.apellidos,P.nombre AS pedido, CE.nombre AS estado, P.oid,CP.obsRRHH,CP.obsGerente $consulta = "SELECT U.oid as idCandidato,P.oid as idPedido, U.nombre,U.apellidos,P.nombre AS pedido, CE.nombre AS estado, P.oid,CP.obsRRHH,CP.obsGerente
FROM usuarios U,pedidos P,candidato_pedido CP,candidaturas_estado CE FROM usuarios U,pedidos P,candidato_pedido CP,candidaturas_estados CE
WHERE U.oid='".$persona->getValor("oid")."' WHERE U.oid='".$persona->getValor("oid")."'
AND CP.candidato=U.oid AND CP.candidato=U.oid
AND P.oid=CP.pedido AND P.oid=CP.pedido

View File

@ -75,6 +75,6 @@ if ($link=conectar()){
} }
}else { }else {
//si no existe le mando otra vez a la portada //si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si"); // header("Location: index.php?errorusuario=si");
} }
?> ?>

View File

@ -102,15 +102,30 @@ INSERT INTO `candidatos_estados` (`cod`, `idioma`, `nombre`, `tipo`) VALUES
(523, 'sp', 'Rechazado 3', 'candidato'), (523, 'sp', 'Rechazado 3', 'candidato'),
(530, 'sp', 'No disponible', 'candidato'), (530, 'sp', 'No disponible', 'candidato'),
(540, 'sp', 'Disponible sin asignar', 'candidato'), (540, 'sp', 'Disponible sin asignar', 'candidato'),
(550, 'sp', 'Disponible asignado a solicitud histórica', 'candidato'), (550, 'sp', 'Disponible asignado a solicitud cerrada', 'candidato'),
(560, 'sp', 'Disponible asignado a solicitud abierta', 'candidato'); (560, 'sp', 'Disponible asignado a solicitud abierta', 'candidato');
-- -------------------------------------------------------- -- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `candidaturas_transiciones` (
`inicial` int(10) unsigned NOT NULL,
`final` int(10) unsigned NOT NULL,
`transicion` bigint(20) unsigned NOT NULL,
`rol` text NOT NULL,
PRIMARY KEY (`inicial`,`final`),
KEY `final` (`final`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `candidaturas_transiciones`
ADD CONSTRAINT `candidaturas_transiciones_ibfk_1` FOREIGN KEY (`inicial`) REFERENCES `candidaturas_estado` (`cod`),
ADD CONSTRAINT `candidaturas_transiciones_ibfk_2` FOREIGN KEY (`final`) REFERENCES `candidaturas_estado` (`cod`);
-- --
-- Estructura de tabla para la tabla `candidatos_transiciones` -- Estructura de tabla para la tabla `candidatos_transiciones`
-- --
CREATE TABLE IF NOT EXISTS `candidatos_transiciones` ( CREATE TABLE IF NOT EXISTS `candidatos_transiciones` (
`inicial` int(10) NOT NULL, `inicial` int(10) NOT NULL,
`final` int(10) NOT NULL, `final` int(10) NOT NULL,
@ -167,7 +182,8 @@ INSERT INTO `candidatos_transiciones` (`inicial`, `final`, `transicion`, `rol`)
CREATE TABLE IF NOT EXISTS `candidato_pedido` ( CREATE TABLE IF NOT EXISTS `candidato_pedido` (
`oid` int(10) unsigned NOT NULL AUTO_INCREMENT, `oid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`candidato` bigint(20) unsigned NOT NULL, `referencia` varchar(12) COLLATE latin1_spanish_ci NOT NULL,
`candidato` bigint(20) unsigned,
`pedido` varchar(8) COLLATE latin1_spanish_ci NOT NULL, `pedido` varchar(8) COLLATE latin1_spanish_ci NOT NULL,
`afinidad` float NOT NULL, `afinidad` float NOT NULL,
`estado` int(10) unsigned NOT NULL, `estado` int(10) unsigned NOT NULL,
@ -190,10 +206,10 @@ CREATE TABLE IF NOT EXISTS `candidato_pedido` (
-- -------------------------------------------------------- -- --------------------------------------------------------
-- --
-- Estructura de tabla para la tabla `candidaturas_estado` -- Estructura de tabla para la tabla `candidaturas_estados`
-- --
CREATE TABLE IF NOT EXISTS `candidaturas_estado` ( CREATE TABLE IF NOT EXISTS `candidaturas_estados` (
`cod` int(10) unsigned NOT NULL, `cod` int(10) unsigned NOT NULL,
`idioma` varchar(3) COLLATE latin1_spanish_ci NOT NULL, `idioma` varchar(3) COLLATE latin1_spanish_ci NOT NULL,
`nombre` varchar(50) COLLATE latin1_spanish_ci NOT NULL, `nombre` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
@ -201,10 +217,10 @@ CREATE TABLE IF NOT EXISTS `candidaturas_estado` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
-- --
-- Volcar la base de datos para la tabla `candidaturas_estado` -- Volcar la base de datos para la tabla `candidaturas_estados`
-- --
INSERT INTO `candidaturas_estado` (`cod`, `idioma`, `nombre`) VALUES INSERT INTO `candidaturas_estados` (`cod`, `idioma`, `nombre`) VALUES
(10, 'sp', 'Descartado'), (10, 'sp', 'Descartado'),
(20, 'sp', 'Aceptado'), (20, 'sp', 'Aceptado'),
(30, 'sp', 'En proceso'), (30, 'sp', 'En proceso'),
@ -359,10 +375,6 @@ CREATE TABLE IF NOT EXISTS `historial_pedido` (
KEY `oid_h` (`oid_h`) KEY `oid_h` (`oid_h`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
--
-- Volcar la base de datos para la tabla `historial_pedido`
--
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -378,10 +390,22 @@ CREATE TABLE IF NOT EXISTS `historial_usuario` (
KEY `oid_h` (`oid_h`) KEY `oid_h` (`oid_h`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
-- --
-- Volcar la base de datos para la tabla `historial_usuario` -- Estructura de tabla para la tabla `historial_oferta`
-- --
CREATE TABLE IF NOT EXISTS `historial_oferta` (
`oid_h` bigint(20) unsigned NOT NULL,
`fecha_h` varchar(20) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
`persona_h` varchar(20) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
`texto_h` text CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
KEY `oid_h` (`oid_h`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -759,9 +783,9 @@ INSERT INTO `pedidos_transiciones` (`inicial`, `final`, `transicion`, `rol`) VAL
(110, 120, 0, '1.3'), (110, 120, 0, '1.3'),
(110, 130, 110130, '1.3'), (110, 130, 110130, '1.3'),
(120, 110, 0, '1.3'), (120, 110, 0, '1.3'),
(130, 110, 0, '1.3'), (130, 110, 130110, '1.3'),
(130, 140, 0, ''), (130, 140, 130140, ''),
(140, 130, 0, ''); (140, 130, 140130, '');
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -1469,7 +1493,7 @@ ALTER TABLE `candidatos_estados`
ALTER TABLE `candidato_pedido` ALTER TABLE `candidato_pedido`
ADD CONSTRAINT `candidato_pedido_ibfk_1` FOREIGN KEY (`candidato`) REFERENCES `usuarios` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `candidato_pedido_ibfk_1` FOREIGN KEY (`candidato`) REFERENCES `usuarios` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `candidato_pedido_ibfk_2` FOREIGN KEY (`pedido`) REFERENCES `pedidos` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `candidato_pedido_ibfk_2` FOREIGN KEY (`pedido`) REFERENCES `pedidos` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `candidato_pedido_ibfk_3` FOREIGN KEY (`estado`) REFERENCES `candidaturas_estado` (`cod`) ON UPDATE CASCADE; ADD CONSTRAINT `candidato_pedido_ibfk_3` FOREIGN KEY (`estado`) REFERENCES `candidaturas_estados` (`cod`) ON UPDATE CASCADE;
-- --
-- Filtros para la tabla `clientes` -- Filtros para la tabla `clientes`

View File

@ -1,110 +1,131 @@
<?php <?php
/* Devuelve el nombre de un estado */ /* Devuelve el nombre de un estado */
function nombre_estado($oid){ function nombre_estado($oid)
$consulta = "select nombre from candidatos_estados where cod='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select nombre from candidatos_estados where cod='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["nombre"]; $rows = mysql_fetch_array($resultado);
return $rows["nombre"];
} }
/* Devuelve el nombre de un estado de candidatura */ /* Devuelve el nombre de un estado de candidatura */
function nombre_estado_candidatura($orden){ function nombre_estado_candidatura($orden)
$consulta = "select id from estado_candidatura where oid='$orden'"; {
$resultado = mysql_query($consulta); $consulta = "select id from estado_candidatura where oid='$orden'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["id"]; $rows = mysql_fetch_array($resultado);
return $rows["id"];
} }
/* Devuelve el nombre de un estado de pedido */ /* Devuelve el nombre de un estado de pedido */
function nombre_estado_pedido($oid){ function nombre_estado_pedido($oid)
$consulta = "select nombre from pedidos_estados where cod='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select nombre from pedidos_estados where cod='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["nombre"]; $rows = mysql_fetch_array($resultado);
return $rows["nombre"];
}
function nombre_estado_oferta($oid)
{
$consulta = "select nombre from candidaturas_estados where cod='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
return $rows["nombre"];
} }
/* Devuelve el nombre de una procedencia */ /* Devuelve el nombre de una procedencia */
function nombre_procedencia($id){ function nombre_procedencia($id)
$consulta = "select id from procedencia where num='$id'"; {
$resultado = mysql_query($consulta); $consulta = "select id from procedencia where num='$id'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["id"]; $rows = mysql_fetch_array($resultado);
return $rows["id"];
} }
/* Devuelve el nombre de una procedencia */ /* Devuelve el nombre de una procedencia */
function nombre_procedencia_cv($id){ function nombre_procedencia_cv($id)
$consulta = "select nombre from procedencia_cv where id='$id'"; {
$resultado = mysql_query($consulta); $consulta = "select nombre from procedencia_cv where id='$id'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["nombre"]; $rows = mysql_fetch_array($resultado);
return $rows["nombre"];
} }
/* Devuelve el nombre de una localidad */ /* Devuelve el nombre de una localidad */
function nombre_localidad($oid){ function nombre_localidad($oid)
$consulta = "select id from localidades where oid='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select id from localidades where oid='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["id"]; $rows = mysql_fetch_array($resultado);
return $rows["id"];
} }
/* Devuelve el nombre de una provincia */ /* Devuelve el nombre de una provincia */
function nombre_provincia($oid){ function nombre_provincia($oid)
$consulta = "select id from provincias where oid='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select id from provincias where oid='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["id"]; $rows = mysql_fetch_array($resultado);
return $rows["id"];
} }
/* Devuelve el nombre de un perfil */ /* Devuelve el nombre de un perfil */
function nombre_perfil($oid){ function nombre_perfil($oid)
$consulta = "select id from perfil where oid='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select id from perfil where oid='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["id"]; $rows = mysql_fetch_array($resultado);
return $rows["id"];
} }
/* Devuelve el nombre de un rol */ /* Devuelve el nombre de un rol */
function nombre_rol($oid){ function nombre_rol($oid)
$consulta = "select id from rol where oid='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select id from rol where oid='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["id"]; $rows = mysql_fetch_array($resultado);
return $rows["id"];
} }
/* Devuelve el nombre de un cliente */ /* Devuelve el nombre de un cliente */
function nombre_cliente($oid){ function nombre_cliente($oid)
$consulta = "select id from clientes where oid='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select id from clientes where oid='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["id"]; $rows = mysql_fetch_array($resultado);
return $rows["id"];
} }
/* Devuelve el perfil de un pedido */ /* Devuelve el perfil de un pedido */
function perfil_pedido($oid){ function perfil_pedido($oid)
$consulta = "select perfil from pedidos where oid='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select perfil from pedidos where oid='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["perfil"]; $rows = mysql_fetch_array($resultado);
return $rows["perfil"];
} }
/* Devuelve el nombre de un pedido */ /* Devuelve el nombre de un pedido */
function nombre_pedido($oid){ function nombre_pedido($oid)
$consulta = "select nombre from pedidos where oid='$oid'"; {
$resultado = mysql_query($consulta); $consulta = "select nombre from pedidos where oid='$oid'";
$rows = mysql_fetch_array($resultado); $resultado = mysql_query($consulta);
return $rows["nombre"]; $rows = mysql_fetch_array($resultado);
return $rows["nombre"];
} }
/* Devuelve el nombre de un salario */ /* Devuelve el nombre de un salario */
function nombre_salario($id){ function nombre_salario($id)
$consulta = "SELECT nombre FROM salario WHERE id='$id'"; {
if($resultado = mysql_query($consulta)){ $consulta = "SELECT nombre FROM salario WHERE id='$id'";
$rows = mysql_fetch_array($resultado); if ($resultado = mysql_query($consulta)) {
return $rows["nombre"]; $rows = mysql_fetch_array($resultado);
}else{ return $rows["nombre"];
return ""; } else {
} return "";
}
} }
?> ?>

View File

@ -201,7 +201,7 @@ carpeta antiword en el ra
/* Devuelve la lista de currículums */ /* Devuelve la lista de currículums */
function menu_curriculums($oid, $tipo){ function menu_curriculums($oid, $tipo){
include LOCALE.LOCALESET."lenguaje.php"; include_once LOCALE.LOCALESET."lenguaje.php";
$consulta = "select * from curriculum_usuario where oid='$oid' order by fecha"; $consulta = "select * from curriculum_usuario where oid='$oid' order by fecha";
$resultado = mysql_query($consulta); $resultado = mysql_query($consulta);
$num = @mysql_num_rows($resultado); $num = @mysql_num_rows($resultado);
@ -224,7 +224,7 @@ function menu_curriculums($oid, $tipo){
/* Muestra la lista de currículums */ /* Muestra la lista de currículums */
function ver_curriculums($oid, $tipo){ function ver_curriculums($oid, $tipo){
include LOCALE.LOCALESET."lenguaje.php"; include_once LOCALE.LOCALESET."lenguaje.php";
$consulta = "select * from curriculum_usuario where oid='$oid' order by fecha"; $consulta = "select * from curriculum_usuario where oid='$oid' order by fecha";
$resultado = mysql_query($consulta); $resultado = mysql_query($consulta);
$num = @mysql_num_rows($resultado); $num = @mysql_num_rows($resultado);

View File

@ -3,10 +3,45 @@
ini_set("memory_limit", "32M"); ini_set("memory_limit", "32M");
//require_once ('Excel/reader.php'); //require_once ('Excel/reader.php');
// Función para imprimir cosas
// Sacado de http://php.net/manual/de/debugger.php
// USO:
// > dbug(<loquesea>);
// > " "
// > echo dbug('print');
function dbug() {
static $output = '', $doc_root;
$args = func_get_args();
if (!empty($args) && $args[0] === 'print') {
$_output = $output;
$output = '';
return $_output;
}
// do not repeat the obvious (matter of taste)
if (!isset($doc_root)) {
$doc_root = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']);
}
$backtrace = debug_backtrace();
// you may want not to htmlspecialchars here
$line = htmlspecialchars($backtrace[0]['line']);
$file = htmlspecialchars(str_replace(array('\\', $doc_root), array('/', ''), $backtrace[0]['file']));
$class = !empty($backtrace[1]['class']) ? htmlspecialchars($backtrace[1]['class']) . '::' : '';
$function = !empty($backtrace[1]['function']) ? htmlspecialchars($backtrace[1]['function']) . '() ' : '';
$output .= "<b style='color: red;'>$class$function =&gt;$file #$line</b><pre style='color: red;'>";
ob_start();
foreach ($args as $arg) {
var_dump($arg);
}
$output .= htmlspecialchars(ob_get_contents(), ENT_COMPAT, 'UTF-8');
ob_end_clean();
$output .= '</pre>';
}
/* Conexión a la base de datos */ /* Conexión a la base de datos */
function conectar() function conectar()
{ {
include LOCALE.LOCALESET."lenguaje.php"; include_once LOCALE.LOCALESET."lenguaje.php";
if (!($puntero=mysql_connect("localhost","root","password"))) if (!($puntero=mysql_connect("localhost","root","password")))
{ {
echo $locale['bd']; echo $locale['bd'];
@ -24,8 +59,8 @@ function conectar()
/* Conexión a la base de datos de tablas */ /* Conexión a la base de datos de tablas */
function conectar_info() function conectar_info()
{ {
include LOCALE.LOCALESET."lenguaje.php"; include_once LOCALE.LOCALESET."lenguaje.php";
if (!($puntero=mysql_connect("localhost","root","0selfor0"))) if (!($puntero=mysql_connect("localhost","root","password")))
{ {
echo $locale['bd']; echo $locale['bd'];
return false; return false;

File diff suppressed because it is too large Load Diff

View File

@ -294,7 +294,7 @@ $locale['283'] = "Selecci&oacute;n solicitudes de oferta";
$locale['284'] = "Editar"; $locale['284'] = "Editar";
$locale['285'] = "Mostrar"; $locale['285'] = "Mostrar";
$locale['286'] = "Nota: los campos marcados con * son obligatorios."; $locale['286'] = "Nota: los campos marcados con * son obligatorios.";
$locale['287'] = "Candidatos <br> asignados"; $locale['287'] = "N&uacute;mero<br/>de ofertas";
$locale['288'] = "Actualizar parte"; $locale['288'] = "Actualizar parte";
$locale['289'] = "Solicitar vacaciones"; $locale['289'] = "Solicitar vacaciones";
$locale['290'] = "Se ha solicitado correctamente los d&iacute;as "; $locale['290'] = "Se ha solicitado correctamente los d&iacute;as ";
@ -1013,4 +1013,14 @@ $locale['4048'] = "Cualquier perfil t&eacute;cnico";
$locale['5001'] = "Provincia no deseada:"; $locale['5001'] = "Provincia no deseada:";
$locale['5002'] = "Se ha eliminado la provincia no deseada correctamente"; $locale['5002'] = "Se ha eliminado la provincia no deseada correctamente";
$locale['5003'] = "Estado"; $locale['5003'] = "Estado";
$locale['5100'] = "Lista de ofertas";
$locale['5101'] = "Nueva oferta";
$locale['5102'] = "Buscar oferta";
$locale['5103'] = "Ver oferta";
$locale['5104'] = "Afinidad";
$locale['5105'] = "A&ntilde;adir nueva oferta";
$locale['5106'] = "Referencia";
$locale['5107'] = "Candidato";
?> ?>

View File

@ -139,6 +139,15 @@ function eliminaCapa(idCapa) {
function mostrarCapa(idCapa){ function mostrarCapa(idCapa){
document.getElementById(idCapa).style.visibility="visible"; document.getElementById(idCapa).style.visibility="visible";
} }
function ocultarCapa(idCapa){ function ocultarCapa(idCapa){
document.getElementById(idCapa).style.visibility="hidden"; document.getElementById(idCapa).style.visibility="hidden";
}
function cambiarCandidato(lugar) {
var mensaje="Esta oferta ya tiene asignada un candidato. \xbfEst\xe1 seguro que desea sustituirlo?";
if(confirm(mensaje)){
document.location=lugar;
}
} }

41
lista_ofertas.php Normal file
View File

@ -0,0 +1,41 @@
<?php
include("seguridad.php");
include("functions.php");
if (!$usuario->tieneRol("4") && !$usuario->tieneRol("1") && !$usuario->tieneRol("3")) {
header("Location: aplicacion.php?e=permiso&rol=" . $usuario->getValor("rol"));
exit;
}
include_once("html/cabecera.php");
/* LISTA_PROYECTOS.PHP */
$consulta = "";
include_once("Objects/ListaOfertas.php");
include_once("Objects/HTML.php");
$html = new HTML($locale);
echo $html->menuOfertas($usuario, "");
echo "<h2>" . "Lista de ofertas" . "</h2>";
$tipoOfertas = (!empty($_GET["byEstado"])) ? $_GET['byEstado'] : "";
$order_by = (!empty($_GET['order'])) ? $_GET['order'] : "";
$modo = (!empty($_GET['modo'])) ? $_GET["modo"] : "";
// sacado de http://patrickallaert.blogspot.com/2007/09/building-dynamic-sql-queries-elegant.html
$cond = array();
if ($tipoOfertas != "") {
$cond[] = "estado = '$tipoOfertas'";
}
$orden = array();
if ($order_by != "") {
$orden[] = $order_by.' '.$modo;
}
$listaOfertas = new ListaOfertas($usuario, $cond, $orden);
include_once("ver_lista_ofertas.php");
include_once("html/pie.php");
?>

View File

@ -30,7 +30,7 @@ if (isset($_GET["order"]) && ($_GET["order"]!="")) {
$modo = (isset($_GET["modo"])) ? stripinput($_GET["modo"]) : ""; $modo = (isset($_GET["modo"])) ? stripinput($_GET["modo"]) : "";
$tipoPedidos = (isset($_GET["byEstado"]) && ($_GET['byEstado'] != "")) ? $_GET['byEstado'] : "10"; $tipoPedidos = (isset($_GET["byEstado"]) && ($_GET['byEstado'] != "")) ? $_GET['byEstado'] : "0";
$listaPedidos=new ListaPedido($usuario,$order_by,"",$tipoPedidos); $listaPedidos=new ListaPedido($usuario,$order_by,"",$tipoPedidos);

15
oferta.php Normal file
View File

@ -0,0 +1,15 @@
<?php
include_once("seguridad.php");
include("functions.php");
$idOferta = isset($_GET["idOferta"]) ? stripinput($_GET["idOferta"]) : "";
$tabla = isset($_POST["tabla"]) ? stripinput($_POST["tabla"]) : "";
$where = isset($_POST["where"]) ? stripinput($_POST["where"]) : "";
$condicion = isset($_POST["condicion"]) ? stripinput($_POST["condicion"]) : "";
include_once("ver_oferta.php");
include_once("html/pie.php");
?>

View File

@ -4,9 +4,9 @@ include("seguridad.php");
include("functions.php"); include("functions.php");
$idPedido = isset($_GET["idPedido"]) ? stripinput($_GET["idPedido"]) : ""; $idPedido = isset($_GET["idPedido"]) ? stripinput($_GET["idPedido"]) : "";
if(!isset($tabla)) $tabla = stripinput($_POST["tabla"]); $tabla = isset($_POST["tabla"]) ? stripinput($_POST["tabla"]) : "";
if(!isset($where)) $where = stripinput($_POST["where"]); $where = isset($_POST["where"]) ? stripinput($_POST["where"]) : "";
if(!isset($condicion)) $condicion = stripinput($_POST["condicion"]); $condicion = isset($_POST["condicion"]) ? stripinput($_POST["condicion"]) : "";
include_once("ver_pedido.php"); include_once("ver_pedido.php");

View File

@ -6,7 +6,6 @@ ini_set("session.use_trans_sid","0");
//iniciamos la sesión //iniciamos la sesión
session_name("loginUsuario"); session_name("loginUsuario");
include_once("Objects/Usuario.php"); include_once("Objects/Usuario.php");
include_once("Objects/ListaPedido.php");
include_once("Objects/Semaforo.php"); include_once("Objects/Semaforo.php");
session_start(); session_start();
//FICHERO DE IDIOMAS //FICHERO DE IDIOMAS

155
ver_lista_ofertas.php Normal file
View File

@ -0,0 +1,155 @@
<?php
include_once("seguridad.php");
/**
* Muestra toda la lista de ofertas de $listaOfertas
*/
include("functions.php");
$destinoURL = substr($_SERVER['REQUEST_URI'], strripos($_SERVER['REQUEST_URI'], "/") + 1);
if (stripos($destinoURL, "?") > 0) {
$destinoURL = substr($destinoURL, 0, stripos($destinoURL, "?"));
}
// Comprobamos mensajes que pueden llegar hasta aqui
if (isset($_GET['msg'])) {
switch ($_GET['msg']) {
case "1":$mensaje = "<div class=\"aviso ok\">" . $locale['1059'] . "</div>";
break;
case "2":$mensaje = "<div class=\"aviso error\">" . $locale['1060'] . "</div>";
break;
default:
break;
}
}
if (isset($mensaje)) echo $mensaje;
if (!isset($variablesExtra)) $variablesExtra = "";
?>
<div style="float:left; padding-top:10px; border-top:1px solid #CCC; border-left:1px solid #CCC; border-right:1px solid #CCC;background-color:#F0F0F0">
<ul id="tabnav">
<li class="<?php if ($tipoOfertas == "") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=0" . $variablesExtra; ?>"><?php echo $locale['1067']; ?></a></li>
<li class="<?php if ($tipoOfertas == "110") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=110" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("110"); ?></a></li>
<li class="<?php if ($tipoOfertas == "120") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=120" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("120"); ?></a></li>
<li class="<?php if ($tipoOfertas == "130") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=130" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("130"); ?></a></li>
<li class="<?php if ($tipoOfertas == "140") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=140" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("140"); ?></a></li>
<li class="<?php if ($tipoOfertas == "150") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=150" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("150"); ?></a></li>
</ul>
</div>
<div style="height: 35px; border-bottom:1px solid #CCC"></div>
<div style="clear:both;"></div>
<?php
echo '<div id="ContTabul">';
// CABECERAS
echo "<table width=\"100%\"> ";
// Acciones
echo "<tr class=\"encabezado\">";
echo " <td align=\"center\" colspan=\"3\">" . $locale['2014'] . "</td>";
// denominacion
$orderView = "denominacion";
echo " <td align=\"center\">" . $locale['1042'].":" . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// Fecha
$orderView = "fecha";
echo " <td align=\"center\">" . $locale['1021'] . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>" ;
// estado
$orderView = "estado";
echo " <td align=\"center\">" . $locale['1102'] . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// solicitud
$orderView = "solicitud";
echo " <td align=\"center\">" . $locale['278'].":" . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// Cliente
$orderView = "candidato";
echo " <td align=\"center\">" . $locale['704'].":" . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// Afinidad
/*$orderView = "afinidad";
echo " <td align=\"center\">" . $locale['5104'] . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
*/
echo "</tr>";
// Vamos mostrando ofertas
$listadeOfertas = $listaOfertas->getOfertas();
$pagLista = "1";
if (!empty($_GET['pagLista']) && ($_GET['pagLista'] > 0)) {
$pagLista = $_GET['pagLista'];
}
// Vemos si tiene ofertas
if (count($listadeOfertas) == 0) {
echo "<tr><td colspan=\"11\" align=\"center\">no hay ofertas</td></tr></table>";
} else {
$inicio = ($pagLista - 1) * constante("lista");
if (count($listadeOfertas) > ($inicio + constante("lista"))) {
$final = $inicio + constante("lista");
} else {
$final = count($listadeOfertas);
}
for ($i = $inicio;$i < $final;$i++) {
// foreach($listadeOfertas as $ofertaAct){
$ofertaAct = $listadeOfertas[$i];
echo "<tr>";
if (($ofertaAct->getValor("gerente") == $usuario->getValor("oid")) || $usuario->tieneRol("1")) {
// Es el gerente de ese pedido, puede editarlo y eliminarlo
echo '<td align="center"><a href="gestion_pedido.php?idPedido=' . $ofertaAct->getValor("oid") . '"><img src="css/edit.png" title="' . $locale['2017'] . '"/></a></td>';
echo "<td align=\"center\"><a href=\"#\" onclick=eliminarPedido('" . $ofertaAct->getValor("oid") . "') ><img src=\"css/eliminar.png\" title=\"" . $locale['2016'] . "\"/></a></td>";
} else {
// No es el gerente no puede ni editarlo ni eliminarlo
echo '<td></td><td></td>';
}
echo '<td align="center"><a href="oferta.php?idOferta=' . $ofertaAct->getValor("oid") . '"><img src="css/brick_go.png" title="' . $locale['2015'] . '" /></a></td>';
echo '<td align="center">' . $ofertaAct->getValor("referencia") . '</td>';
echo '<td align="center">' . $ofertaAct->getValor("fecha") . '</td>';
echo '<td align="center">' . $ofertaAct->getValor("nombre_estado") . '</td>';
echo '<td align="center"><a href="/pedido.php?idPedido=' . $ofertaAct->getValor("pedido") . '">' . $ofertaAct->getValor("nombre_solicitud") . '</a></td>';
echo '<td align="center"><a href="/detalle_candidato.php?oid=' . $ofertaAct->getValor("candidato") . '">' . $ofertaAct->getValor("nombre_candidato") . '</td>';
//echo '<td align="center">' . $ofertaAct->getValor("afinidad") . '</td>';
echo "</tr>";
}
// Comprobamos si tenemos que mostar una paginación
$numPaginas = ceil(count($listadeOfertas) / constante("lista"));
echo "<td colspan=\"11\"><div id=\"cronopaginacion\">";
if (isset($_GET["order"]) && ($_GET["order"] != "")) {
if ($variablesExtra != "") {
$variablesExtra = "&" . $variablesExtra;
}
$variables = "byEstado=" . $tipoOfertas . "order=" . $_GET["order"] . "&modo=" . $_GET["modo"] . $variablesExtra;
echo $html->paginacion($numPaginas, $pagLista, $destinoURL, $variables, "pagLista");
} else {
$variables = "byEstado=" . $tipoOfertas . $variablesExtra;
echo $html->paginacion($numPaginas, $pagLista, $destinoURL, $variables, "pagLista");
}
echo "</div></td></tr>";
echo " </table> ";
}
echo '</div>';
?>

View File

@ -33,9 +33,10 @@ if (!isset($variablesExtra)) $variablesExtra = "";
<div style="float:left; padding-top:10px; border-top:1px solid #CCC; border-left:1px solid #CCC; border-right:1px solid #CCC;background-color:#F0F0F0"> <div style="float:left; padding-top:10px; border-top:1px solid #CCC; border-left:1px solid #CCC; border-right:1px solid #CCC;background-color:#F0F0F0">
<ul id="tabnav"> <ul id="tabnav">
<li class="<?php if ($tipoPedidos=="0") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=0".$variablesExtra; ?>"><?php echo $locale['1067']; ?></a></li> <li class="<?php if ($tipoPedidos=="0") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=0".$variablesExtra; ?>"><?php echo $locale['1067']; ?></a></li>
<li class="<?php if ($tipoPedidos=="10") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=10".$variablesExtra; ?>"><?php echo nombre_estado_pedido("10"); ?></a></li> <li class="<?php if ($tipoPedidos=="110") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=110".$variablesExtra; ?>"><?php echo nombre_estado_pedido("110"); ?></a></li>
<li class="<?php if ($tipoPedidos=="20") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=20".$variablesExtra; ?>"><?php echo nombre_estado_pedido("20"); ?></a></li> <li class="<?php if ($tipoPedidos=="120") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=120".$variablesExtra; ?>"><?php echo nombre_estado_pedido("120"); ?></a></li>
<li class="<?php if ($tipoPedidos=="30") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=30".$variablesExtra; ?>"><?php echo nombre_estado_pedido("30"); ?></a></li> <li class="<?php if ($tipoPedidos=="130") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=130".$variablesExtra; ?>"><?php echo nombre_estado_pedido("130"); ?></a></li>
<li class="<?php if ($tipoPedidos=="140") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=140".$variablesExtra; ?>"><?php echo nombre_estado_pedido("140"); ?></a></li>
</ul> </ul>
</div> </div>
<div style="float:left;padding-top:11px;"> <div style="float:left;padding-top:11px;">
@ -113,24 +114,22 @@ echo " <td align=\"center\">".$locale['1524']."<br />" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=asc".$variablesExtra."\" ><img src=\"css/asc.png\" /></a>" . " <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=asc".$variablesExtra."\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=desc".$variablesExtra."\" ><img src=\"css/desc.png\" /></a></td>"; " <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=desc".$variablesExtra."\" ><img src=\"css/desc.png\" /></a></td>";
// Número de personas // Número de ofertas
$orderView="empleados"; $orderView="empleados";
echo " <td align=\"center\">".$locale['1024']."<br />" . echo " <td align=\"center\">".$locale['287']."<br />" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=asc".$variablesExtra."\" ><img src=\"css/asc.png\" /></a>" . " <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=asc".$variablesExtra."\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=desc".$variablesExtra."\" ><img src=\"css/desc.png\" /></a></td>"; " <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=desc".$variablesExtra."\" ><img src=\"css/desc.png\" /></a></td>";
// Candidatos asignados
echo " <td align=\"center\">".$locale['287']."</td>";
echo "</tr>"; echo "</tr>";
// Vamos mostrando petición por petición // Vamos mostrando petición por petición
$listadePedidos=$listaPedidos->getPedidos(); $listadePedidos=$listaPedidos->getPedidos();
if($_GET['pagLista']>0){
$pagLista=$_GET['pagLista']; $pagLista = "1";
}else{ if (!empty($_GET['pagLista']) && ($_GET['pagLista'] > 0)) {
$pagLista="1"; $pagLista = $_GET['pagLista'];
} }
// Vemos si tiene pedidos // Vemos si tiene pedidos
if(count($listadePedidos)==0){ if(count($listadePedidos)==0){
echo "<tr><td colspan=\"11\" align=\"center\">no tiene solicitudes de oferta</td></tr></table>"; echo "<tr><td colspan=\"11\" align=\"center\">no tiene solicitudes de oferta</td></tr></table>";
@ -172,7 +171,6 @@ if(count($listadePedidos)==0){
echo '</td>'; echo '</td>';
echo '<td align="center">'.$pedidoAct->getValor("empleados").'</td>'; echo '<td align="center">'.$pedidoAct->getValor("empleados").'</td>';
echo '<td align="center">'.$pedidoAct->dameNumCand("Aceptado").'</td>';
echo "</tr>"; echo "</tr>";
} }
// Comprobamos si tenemos que mostar una paginación // Comprobamos si tenemos que mostar una paginación

271
ver_oferta.php Normal file
View File

@ -0,0 +1,271 @@
<?php
include_once("Objects/Oferta.php");
include_once("seguridad.php");
$usuario = $_SESSION['usuario'];
$oferta = new Oferta($idOferta, $usuario);
include_once("html/cabecera.php");
include_once("Objects/Administracion.php");
$administracion = new Administracion($usuario, $locale);
$constantes = $administracion->getItem("constantes");
$mostrarTabla = $constantes['candPagina'];
$altoScroll = 83 / 2 * $mostrarTabla;
?>
<?php
include_once("Objects/HTML.php");
$html = new HTML($locale);
// Comprogamos si hay error de semaforo activo
if (isset($_GET["msgSem"]) && ($_GET["msgSem"] != "")) {
$mensajeSemaforo = $semaforo->getMensaje($_GET["msgSem"]);
echo "<div class=\"aviso semaforo\">" . $mensajeSemaforo . "</div>";
}
$action = (isset($_GET['action']) && ($_GET['action'] != "")) ? $_GET['action'] : "";
if (!empty($action)) {
$error = false;
$mensaje = "";
switch ($action) {
case "aceptar":
if (!empty($_GET['idCand'])) {
try {
$idCand = $_GET['idCand'];
$estado = $oferta->colocarCandidato($idCand);
if ($estado) {
$tipo = "ok";
$mensaje = "El candidato se ha asignado a la oferta";
} else {
$tipo = "error";
$mensaje = "No se ha podido asignar el candidato a la oferta";
}
} catch (Exception $e) {
$mensaje = $e->getMessage();
$tipo = "error";
}
} else {
$tipo = "error";
$mensaje = $locale['1053'];
}
break;
case "cambEst": if (!empty($_GET['idEst'])) {
$idEstado = $_GET['idEst'];
try {
$camb = $oferta->transita($idEstado, "");
if ($camb) {
$tipo = "ok";
$mensaje = $locale['1072'];
} else {
$tipo = "error";
$mensaje = $locale['1073'];
}
} catch (Exception $e) {
$mensaje = $e->getMessage();
$tipo = "error";
}
}
break;
default: $error = true;
$mensaje = $locale['1057'];
break;
}
if ($mensaje != "") {
// Mostramos el mensaje
echo "<div class=\"aviso " . $tipo . "\">" . $mensaje . "</div>";
}
}
if (($oferta->getValor("estado") == 110) || ($oferta->getValor("estado") == 120)) {
echo $html->menuOfertas($usuario, array(""));
} else
echo $html->menuOfertas($usuario, "gestionar");
?>
<h2><?php echo $oferta->getValor("nombre"); ?></h2>
<?php
// Comprobamos mensajes que pueden llegar hasta aqui
if (isset($_GET["msg"])) {
switch ($_GET['msg']) {
case "1": $mensaje = "<div class=\"aviso ok\">" . $locale['1061'] . "</div>";
break;
default:
break;
}
} else {
$mensaje = "";
}
echo $mensaje;
?>
<table width="100%">
<tr><td>
<table width="100%">
<tr>
<td class="nombre"><?php echo $locale['5106']; ?></td>
<td><?php echo $oferta->getValor("referencia"); ?></td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['1025']; ?></td>
<td><?php echo $oferta->getValor("nombre_solicitud"); ?></td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['132']; ?></td>
<td><?php echo $oferta->getValor("nombre_estado"); ?>
<div id="obsCambioEst" class="obsCambioEst">
<form id="formCambEst" action="oferta.php?idOferta=<?php echo $oferta->getValor("oid"); ?>&action=cambEstObs" method="post" >
<input type="hidden" name="action" value="cambEstObs" />
<input type="hidden" name="idEstado" id="idEstado" />
</form>
</div>
<?php
if ($oferta->getValor("msgEstado") != "") {
echo " -> " . $oferta->getValor("msgEstado");
}
echo "<br />";
$estadosSiguientes = $oferta->getSiguientes();
foreach ($estadosSiguientes as $codEstado => $nombreEstado) {
?>
<input class="button" name="cambEstado" type="button" value="<?php echo $locale['2104'] . $nombreEstado; ?>"
onClick="javascript:document.location='oferta.php?idOferta=<?php echo $oferta->getValor("oid"); ?>&action=cambEst&idEst=<?php echo $codEstado; ?>'"
style="width:200px; margin-bottom:5px"><br />
<?php
}
?>
</td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['5107']; ?></td>
<td><?php echo nl2br($oferta->getValor("nombre_candidato")); ?></td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['135']; ?></td>
<td><?php echo nl2br($oferta->getValor("observaciones")); ?></td>
</tr>
</table>
</td></tr>
</table>
<br/>
<?php
if (($oferta->getValor("estado") == 110)) {
?>
<table width="100%">
<?php
$listaCandidatos = $oferta->getCandidatosDisponibles()->getCandidatos();
if (!empty($listaCandidatos)) {
?>
<tr> <!-- Tabla de candidatos -->
<td>
<h3><span class="nombre">Candidatos disponibles</span></h3>
<table width="100%" class="listaPropuestos">
<thead>
<tr class="nombre">
<th><?php echo $locale['2014']; ?></th>
<th><?php echo $locale['704']; ?></th>
<th><?php echo $locale['202']; ?></th>
<th><?php echo $locale['1052']; ?></th>
<th><?php echo $locale['203']; ?></th>
<th><?php echo $locale['206']; ?></th>
</tr>
</thead>
<?php
echo "<tbody>";
$final = count($listaCandidatos);
for ($i = 0; $i < $final; $i++) {
$candidato = $listaCandidatos[$i];
?>
<tr>
<td class="centrado">
<?php
$candActual = $oferta->getValor("candidato");
if (!empty($candActual)) {
echo "<a href=\"#\" onclick=\"cambiarCandidato('oferta.php?idOferta=".$oferta->getValor("oid")."&action=aceptar&idCand=".$candidato->getValor("oid")."')\">";
}
else {
echo "<a href='oferta.php?idOferta=".$oferta->getValor("oid")."&action=aceptar&idCand=".$candidato->getValor("oid")."'>";
}
?>
<img src='css/accept.png' title="<?php echo $locale['1047']; ?>" />
</a>
</td>
<td>
<a href="detalle_persona.php?oid=<?php echo $candidato->getValor("oid"); ?>" target=popup onclick=window.open('', 'popup', ',',',',',',',','width = 600, height = 800')><?php echo $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos"); ?></a>
</td>
<td>
<?php
$perfiles = $candidato->getPerfiles();
$keylocalidades = array_values($perfiles);
// Mostramos la lista para borrar
foreach ($perfiles as $nombre => $valor) {
echo "- " . $nombre . "<br />";
}
?>
</td>
<td><?php echo $candidato->getValor("nombre_estado"); ?></td>
<td><?php
$tecnologias = rellena_lista_oid("tecnologia_usuario", "tecnologia", "tecnologia", $candidato->getValor("oid"));
if (gettype($tecnologias) != "NULL") {
foreach ($tecnologias as $tecno) {
echo $tecno . ",";
}
}
?></td>
<td>&nbsp;<?php
$idiomas = rellena_lista_oid("idioma_usuario", "idiomas", "idioma", $candidato->getValor("oid"));
if (gettype($idiomas) != "NULL") {
foreach ($idiomas as $tecno) {
echo $tecno . ",";
}
}
?></td>
</tr>
<?php
} // for
?>
</tbody>
</table>
<div id="cronopaginacion"><?php echo $html->paginacion($numPaginas, $pagAcept, "pedido.php", "idPedido=" . $oferta->getValor("oid"), "pagAcept"); ?></div>
</td>
</tr>
<?php
} // if
?>
<?php
}
?>
<tr align="center"> <!-- HISTORIAL -->
<td ><a name="historial"><?php echo $locale['127']; ?></a><br />
<textarea name="historial" readonly rows="8" cols="90" maxlength="300" style="overflow: auto;width:100%"><?php echo $oferta->getHistorial(); ?></textarea>
</td>
</tr>
</table>
<?php include_once("html/pie.php"); ?>

File diff suppressed because it is too large Load Diff