Incam_Intranet/Objects/Empleado.php
2011-04-04 15:16:10 +00:00

256 lines
6.9 KiB
PHP
Raw Blame History

<?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;
}
}
?>