Incam_Intranet/Objects/CapacidadProfesional.php
2011-06-09 17:50:51 +00:00

198 lines
6.2 KiB
PHP
Raw Permalink Blame History

<?php
/*
* Clase Capacidad Profesional
*
* Contiene toda la información relativa a la capacidad profesional.
*
*
*/
include_once("BD.php");
class CapacidadProfesional{
private $tipo_capacidad; /* Esta propiedad de la clase nos informará si estamos ante una capadidad profesional de candidato o de solicitud*/
protected $campos = array();
protected $tecnologias = array();
function CapacidadProfesional($id, $tipo){
$this->tipo_capacidad = $tipo;
$this->_getCampos($id);
//Ahora recuperamos la lista de tecnologías que tendrá en perfil tecnico de la capacidad, si las tubiera
$this->_getTecnologias();
}
/**
* Devuelve una lista de tecnolog<6F>as asociadas a la capacidad
* OJO ESTA TABLA TAMBIEN GUARDA EL ID_PERFIL_TECNICO POR SI EN UN FUTURO, SE REQUIERE QUE UNA CAPACIDAD TENGA VARIOS PERFILES TECNICOS
*/
private function _getCampos($id){
$bd = new BD();
$consulta = "";
$consulta = "select C.id, C.id_usuario, C.id_solicitud, C.id_perfil_tecnico, C.id_perfil_funcional, C.meses_tecnico, C.meses_funcional, C.observaciones, ";
$consulta = $consulta . "PT.id as perfil_tecnico, PT.abrev, PF.id as perfil_funcional, PF.abrev ";
$consulta = $consulta . "from capacidades as C left join perfil as PT on (PT.oid = C.id_perfil_tecnico) ";
$consulta = $consulta . "left join perfil_funcional as PF on (PF.oid = C.id_perfil_funcional) ";
$consulta = $consulta . "WHERE (C.id =". $id .")";
$resultado = $bd->execQuery($consulta);
if (mysql_num_rows($resultado) != 0)
$this->campos = mysql_fetch_array($resultado);
}
/**
* Devuelve una lista de tecnolog<6F>as asociadas a la capacidad
* (LO QUITAMOS)OJO ESTA TABLA TAMBIEN GUARDA EL ID_PERFIL_TECNICO POR SI EN UN FUTURO, SE REQUIERE QUE UNA CAPACIDAD TENGA VARIOS PERFILES TECNICOS
*/
private function _getTecnologias(){
$bd = new BD();
$consulta = "";
$consulta = "SELECT CPT.id_capacidad, CPT.id_tecnologia, CPT.meses, T.id ";
$consulta = $consulta. "FROM capacidades_perfil_tecnologias as CPT ";
$consulta = $consulta. "left join tecnologia as T on (T.oid = CPT.id_tecnologia) ";
$consulta = $consulta. "where CPT.id_capacidad = ". $this->campos["id"];
$resultado = $bd->execQuery($consulta);
if (mysql_num_rows($resultado) != 0) {
$this->tecnologias = null;
while ($row = mysql_fetch_array($resultado)) {
$this->tecnologias[] = $row;
}
}
}
function getCampos(){
return $this->campos;
}
/**
* Inserta una nueva capacidad profesional a la lista de capacidades.
* @param campos - datos de la capacidad.
*/
function addCapacidad($campos) {
$inserto = "";//,id_solicitud,id_perfil_tecnico, id_perfil_funcional, meses_tecnico, meses_funcional, observaciones";
$valores = ""; //, $fecha, $fecha";
//Procesamos los datos
$i=1;
foreach($campos as $key => $value){
if ($i>1) {
$inserto .= ",";
$valores .= ",";
}
$inserto .= " $key";
$valores .= " '$value'";
$i++;
}
//Insertamos en la BD
$consulta = "INSERT INTO capacidades ($inserto) VALUES ($valores)";
//echo $consulta;
$bd = new BD();
if(!$bd->execQuery($consulta)){
$error = "Campos de la capacidad incorrectos. Por favor, avise al webmaster de este error.";
throw new Exception($error);
return false;
}
$id = mysql_insert_id();
return $id;
}
function getTecnologias(){
return $this->tecnologias;
}
/**
* Asocia una nueva tecnolog<6F>a en la base de datos.
*/
private function addTecnologia($id_tecnologia,$meses){
$id_capacidad = $this->campos["id"];
if(($id_tecnologia>0) && (!in_array($id_tecnologia, $this->tecnologias))){
$consulta = "DELETE FROM capacidades_perfil_tecnologias where id_capacidad='$id_capacidad' and id_tecnologia='$id_tecnologia'";
$bd = new BD();
$bd->execQuery($consulta);
$consulta = "INSERT INTO capacidades_perfil_tecnologias (id_capacidad, id_tecnologia, meses) VALUES('$id_capacidad', '$id_tecnologia', '$meses')";
//echo $consulta;
$bd = new BD();
if($bd->execQuery($consulta)){
$mensaje = "Nueva tecno: $nombre_tecno";
// $this->actualizarHistorial($mensaje);
$this->_getTecnologias(); //Refrescamos la lista
$this->listaTecnologias[$nombre_tecno] = $id;
}else{
return false;
}
}else{
return false;
}
return true;
}
function addTecnologias($array){
if(gettype($array) == "array"){
foreach($array as $elem){
$id=substr($elem, 0, stripos($elem, "-"));
$meses=substr($elem, (stripos($elem, "-")+1), strlen($elem));
$this->addTecnologia($id,$meses);
}
}
}
/**
* Elimina la asociaci<63>n entre una tecnolog<6F>a y la capacidad profesional.
*/
function removeTecnologia($idCap,$idTec){
$bd = new BD();
$consulta = "DELETE FROM capacidades_perfil_tecnologias WHERE id_capacidad = '".$idCap."' and id_tecnologia = '".$idTec."'";
if($bd->execQuery($consulta)){
$this->_getTecnologias();
}else{
return false;
}
return true;
}
/**
* Asigna nuevos campos a la persona.
* @param array - lista de campos a asignar de la forma campo => valor.
*/
function modificarCapacidad($array){
$consulta = "UPDATE capacidades SET ";
$i = 0;
foreach($array as $key => $value){
if ($i > 0)
$consulta .= ", ";
$consulta .= $key ."= '". $value ."'";
$i++;
}
// $fecha = "'".date('Y'."-".'m'."-".'d')."'";
// $consulta .= " fecha_modificacion = $fecha ";
$consulta .= " WHERE id=". $this->campos['id'];
//echo $consulta;
$bd = new BD();
$bd->execQuery($consulta);
}
/**
* Asigna nuevos campos a la persona.
* @param array - lista de campos a asignar de la forma campo => valor.
*/
function eliminar(){
//Eliminamos de la tabla detalle
$consulta = "DELETE FROM capacidades_perfil_tecnologias WHERE id_capacidad='".$this->campos["id"]."'";
//echo $consulta;
$bd = new BD();
$bd->execQuery($consulta);
$consulta = "DELETE FROM capacidades WHERE id='".$this->campos["id"]."'";
//echo $consulta;
if($bd->execQuery($consulta))
return true;
else
return false;
}
}
?>