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�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�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�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� un candidato dependiendo del estado En el ejemplo estado -> 20 id Candidato ->12 @param $estado - Estado del pedido. @return array codPedido => nombre o vac�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�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; } } ?>