git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_Intranet/trunk/src@1 e2b1556b-49f8-d141-9351-52d6861a72d9
256 lines
6.9 KiB
PHP
256 lines
6.9 KiB
PHP
<?php
|
||
/*
|
||
* Clase Empleado
|
||
*
|
||
* Contiene toda la informaci<63>n relativa al empleado.
|
||
*
|
||
* 2008-10-06 (diego): Se crea el objeto con los m<>todos necesarios para gestionar empleados.
|
||
*
|
||
*/
|
||
include_once("BD.php");
|
||
include_once("Persona.php");
|
||
class Empleado extends Persona{
|
||
|
||
private $usuario;
|
||
|
||
function Empleado($usuario, $oid){
|
||
$consulta = "SELECT oid FROM usuarios WHERE oid = '$oid' AND tipo='usuario'";
|
||
$bd = new BD();
|
||
$num = $bd->numFilas($consulta);
|
||
if($num > 0){
|
||
parent::Persona($oid);
|
||
$this->usuario = $usuario;
|
||
}else{
|
||
$error = "Empleado no encontrado.";
|
||
throw new Exception($error);
|
||
}
|
||
}
|
||
|
||
function setCampo($nombre, $valor){
|
||
//PERMISOS:
|
||
/*
|
||
* Admin (1) - Todos
|
||
* RRHH (4) - Todos
|
||
* Otro - Excepci<63>n
|
||
*/
|
||
$sesion = $this->usuario->getValor("oid");
|
||
$editar = true;
|
||
switch ($nombre) {
|
||
case "password":if($valor != ""){
|
||
$valor = md5($valor);
|
||
}else{
|
||
$editar = false;
|
||
}
|
||
break;
|
||
case "dias_vacaciones":
|
||
$editar=false;
|
||
if($valor!=$this->getValor("dias_vacaciones")){
|
||
$consulta = "UPDATE vacaciones_oid SET dias='$valor' WHERE oid='".$this->getValor("oid")."' AND anyo='".date("Y")."'";
|
||
$bd = new BD();
|
||
$bd->execQuery($consulta);
|
||
if(mysql_affected_rows()==0) {
|
||
$consulta="INSERT INTO vacaciones_oid(dias,oid,anyo) VALUES ('".$valor."','".$this->getValor("oid")."','".date("Y")."')";
|
||
$bd->execQuery($consulta);
|
||
}
|
||
parent::setCampo($nombre,$valor);
|
||
}
|
||
default:
|
||
break;
|
||
}
|
||
if($editar){
|
||
if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){
|
||
return parent::setCampo($nombre, $valor);
|
||
}else{
|
||
if($nombre == "observaciones" && $this->usuario->tieneRol(3)){
|
||
return parent::setCampo($nombre, $valor);
|
||
}else{
|
||
$error = "El usuario no tiene permisos para editar al empleado.";
|
||
throw new Exception($error);
|
||
return false;
|
||
exit;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function addCurriculum($fichero){
|
||
//PERMISOS:
|
||
/*
|
||
* Admin (1) - Todos
|
||
* RRHH (4) - Todos
|
||
* Otro - Excepci<63>n
|
||
*/
|
||
$sesion = $this->usuario->getValor("oid");
|
||
if($this->usuario->tieneRol(3) || $this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){
|
||
return parent::addCurriculum($fichero, $this->usuario->getValor("nombre"));
|
||
}else{
|
||
$error = "El usuario no tiene permisos para asociar CV al empleado.";
|
||
throw new Exception($error);
|
||
return false;
|
||
exit;
|
||
}
|
||
}
|
||
|
||
function removeCurriculum($curriculum, $fecha){
|
||
//PERMISOS:
|
||
/*
|
||
* Admin (1) - Todos
|
||
* RRHH (4) - Todos
|
||
* Otro - Excepci<63>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 empleado.";
|
||
throw new Exception($error);
|
||
}
|
||
}
|
||
|
||
function getRoles(){
|
||
if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){
|
||
$oid = $this->getValor("oid");
|
||
$consulta = "SELECT rol FROM usuarios WHERE oid='$oid'";
|
||
$bd = new BD();
|
||
$rol = $bd->getCampo($consulta);
|
||
|
||
if($rol == ""){
|
||
$array = array();
|
||
}else{
|
||
$array = explode(".", $rol);
|
||
}
|
||
|
||
$roles = array();
|
||
|
||
foreach($array as $elem){
|
||
$roles[$elem] = nombre_rol($elem);
|
||
}
|
||
}else{
|
||
$error = "El usuario no tiene permisos para ver los roles del empleado.";
|
||
throw new Exception($error);
|
||
return array();
|
||
}
|
||
|
||
return $roles;
|
||
}
|
||
|
||
function getSiguientes(){
|
||
if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){
|
||
$estado = $this->getValor("estado");
|
||
$idioma = $this->usuario->getValor("idioma");
|
||
$rol = $this->usuario->getValor("rol");
|
||
$a = new Automata("candidatos", $idioma, $rol);
|
||
$siguientes = $a->getSiguientes($estado);
|
||
}else{
|
||
$error = "El usuario no tiene permisos para ver los estados de los empleado.";
|
||
throw new Exception($error);
|
||
return array();
|
||
}
|
||
return $siguientes;
|
||
}
|
||
|
||
function addRol($rol){
|
||
if($this->usuario->tieneRol(1)){
|
||
$rol = $this->getValor("rol");
|
||
$rol .= $rol.".";
|
||
$this->setCampos(array("rol" => $rol));
|
||
}else{
|
||
$error = "El usuario no tiene permisos para gestionar los roles de los empleado.";
|
||
throw new Exception($error);
|
||
}
|
||
}
|
||
|
||
function removeRol($rol){
|
||
if($this->usuario->tieneRol(1)){
|
||
$roles = explode(".", $this->getValor("rol"));
|
||
$rol_final = "";
|
||
foreach($roles as $r){
|
||
if($r != $rol){
|
||
$rol_final .= $r.".";
|
||
}
|
||
}
|
||
$this->setCampos(array("rol" => $rol_final));
|
||
}else{
|
||
$error = "El usuario no tiene permisos para gestionar los roles de los empleado.";
|
||
throw new Exception($error);
|
||
}
|
||
}
|
||
|
||
/*SQL que da los pedidos en el que est<73> un candidato dependiendo del estado
|
||
|
||
En el ejemplo
|
||
estado -> 20
|
||
id Candidato ->12
|
||
@param $estado - Estado del pedido.
|
||
@return array codPedido => nombre o vac<61>o.
|
||
*/
|
||
function getPedidosByEstado($estado){
|
||
/*SELECT P.oid,P.nombre
|
||
FROM pedidos P,candidato_pedido CP
|
||
WHERE CP.candidato='12'
|
||
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
|
||
WHERE CP.candidato='$idC'
|
||
AND CP.estado='$estado'
|
||
AND P.oid=CP.pedido";
|
||
$bd = new BD();
|
||
return $bd->keyValueQuery($consulta, "oid", "nombre");
|
||
}
|
||
|
||
function eliminar(){
|
||
//PERMISOS:
|
||
/*
|
||
* Admin (1) - Todos
|
||
* RRHH (4) - Todos
|
||
* Otro - Excepci<63>n
|
||
*/
|
||
$sesion = $this->usuario->getValor("oid");
|
||
if($this->usuario->tieneRol(1) || $this->usuario->tieneRol(4)){
|
||
return parent::eliminar();
|
||
}else{
|
||
return false;
|
||
}
|
||
}
|
||
|
||
function actualizarHistorial($mensaje){
|
||
parent::actualizarHistorial($mensaje, $this->usuario->getValor("nombre"));
|
||
}
|
||
|
||
function transita($destino, $argumentos){
|
||
$origen = $this->getValor("estado");
|
||
$idioma = $this->usuario->getValor("idioma");
|
||
$rol = $this->usuario->getValor("rol");
|
||
$a = new Automata("candidatos", $idioma, $rol);
|
||
$transita = $a->getTransicion($origen,$destino);
|
||
|
||
if(($transita == "") || !($transita >= 0)){
|
||
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("diasEspera", $diasEspera);
|
||
$this->setCampo("estado", $destino);*/
|
||
}
|
||
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;
|
||
}
|
||
|
||
}
|
||
?>
|