X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/78860b66af59d050da193ab0628890a8f9587841..e16973f3e09a6f9624cc3f10a1f0a365763bb69f:/lib/MECON/Dependencia.php?ds=sidebyside diff --git a/lib/MECON/Dependencia.php b/lib/MECON/Dependencia.php index f4592d0..6b01f1f 100644 --- a/lib/MECON/Dependencia.php +++ b/lib/MECON/Dependencia.php @@ -1,96 +1,252 @@ - -// +----------------------------------------------------------------------+ -// -// $Id$ -// $Author$ -// $URL$ -// $Date$ -// $Rev$ -// + +------------------------------------------------------------------------------- +$Id$ +-----------------------------------------------------------------------------*/ #require_once 'PEAR.php'; require_once 'MECON/Agente.php'; require_once 'DB.php'; - - -// +X2C Class 145 :dependencia /** * @access protected */ -class dependencia { - /** - * @var int $codep - * @access public - */ - var $codep; - - // ~X2C - - // +X2C Operation 147 - /** - * @param int $codep - * - * @return void - * @access public - */ - function dependencia($codep) // ~X2C - { - $this->codep = $codep; - } - // -X2C - - // +X2C Operation 148 - /** - * @return void - * @access public - */ - function getAgentes() // ~X2C - { -//Planta y becarios - $agentes = array(); - $dsn = 'mysql://intranet:intranet@intranet-db/novedades'; - $db = DB::connect($dsn); - if (DB::isError($db)) die ($db->getMessage("No pudo conectarse a la base")); - $sql = "SELECT nrodoc - FROM web003 - WHERE codep = $this->codep"; - $result = $db->query($sql); - if(DB::isError($result)) - die($result->getMessage("query mal hecho")); - while($row = $result->fetchRow()) - $agentes[] = new Agente($row[0]); -//Contratados - $dsn = 'mysql://intranet:intranet@intranet-db/Contratados'; - $db = DB::connect($dsn); - if (DB::isError($db)) die ($db->getMessage("No pudo conectarse a la base")); - $sql = "SELECT * - FROM Contratados - WHERE codep = $this->codep"; - $result = $db->query($sql); - if(DB::isError($result)) - die($result->getMessage("query mal hecho")); - while($row = $result->fetchRow()) - $agentes[] = new Agente($row[0]); - return $agentes; - } - // -X2C - -} // -X2C Class :dependencia -?> +class MECON_Dependencia { + + /** + * @protected + */ + var $_dbh; + + /** + * @protected + */ + var $_database; + + /** + * @var int $codep + * @access public + */ + var $codep; + + /** + * @var int $nombre + * @access public + */ + var $nombre; + + /** + * @var int $nombre_breve + * @access public + */ + var $nombre_breve; + + /** + * Id de la dependencia en la base. + * + * @var int $dependencia_id + * @access public + */ + var $dependencia_id = null; + + /** + * @param string $codep + * @param int $id + * + * @return void + * @access public + */ + function MECON_Dependencia(&$db, $codep, $id = null, $database = 'CODEP') + { + $this->_db = $db; + $this->_database = $database; + + if(!is_null($codep)) { + $this->codep = $codep; + + $sql = "SELECT nombre, nombre_breve, dependencia_id, codigo_actual + FROM ".$database.".Dependencias + WHERE codigo_actual = '".$this->codep."' AND + dependencia_esta_activa = 1"; + + $result = $this->_db->query($sql); + } + else { + $this->dependencia_id = $id; + + $sql = "SELECT nombre, nombre_breve, dependencia_id, codigo_actual + FROM ".$database.".Dependencias + WHERE dependencia_id = ".$this->dependencia_id." AND + dependencia_esta_activa = 1"; + $result = $this->_db->query($sql); + } + + if(DB::isError($result)) + trigger_error($result->getMessage("query mal hecho"), E_USER_ERROR); + + if($result->numRows() > 0) { + $row = $result->fetchRow(DB_FETCHMODE_ASSOC); + $this->codep = $row['codigo_actual']; + $this->nombre = $row['nombre']; + $this->nombre_breve = $row['nombre_breve']; + $this->dependencia_id = $row['dependencia_id']; + } + } + + + /** + * @return void + * @access public + */ + function getAgentes() + { + //Planta y becarios + $agentes = array(); + $sql = "SELECT nrodoc + FROM novedades.web003 + WHERE codep = '".$this->codep."'"; + $result = $this->_db->query($sql); + if(DB::isError($result)) + trigger_error($result->getMessage("query mal hecho"), E_USER_ERROR); + while($row = $result->fetchRow()) + $agentes[$row[0]] = new MECON_Agente($this->_db, $row[0]); + //Contratados + $sql = "SELECT nrodoc + FROM Contratados.Contratados + WHERE codep = '".$this->codep."'"; + $result = $this->_db->query($sql); + if(DB::isError($result)) + trigger_error($result->getMessage("query mal hecho"), E_USER_ERROR); + while($row = $result->fetchRow()) + $agentes[$row[0]] = new MECON_Agente($this->_db, $row[0]); + return $agentes; + } + + + /** + * @return dependencia + * @access public + * @static + */ + function getDependencias() + { + $base = (isset($this->_database))? $this->_database : "CODEP"; + $sql = "SELECT codigo_actual + FROM ".$base.".Dependencias + WHERE dependencia_esta_activa = 1"; + $result = $this->_db->query($sql); + if(DB::isError($result)) + trigger_error($result->getMessage("query mal hecho"), E_USER_ERROR); + $dependencias = array(); + while($row = $result->fetchRow()) + $dependencias[] = $row[0]; + return $dependencias; + } + + + /** + * @return void + * @access public + */ + function getNombre() + { + return $this->nombre; + } + + + /** + * @return void + * @access public + */ + function getNombreBreve() + { + return $this->nombre_breve; + } + + + + /** + * Buscar dependencias por el codep. + * + * @param db &$dbh Base de Datos + * @param string $codep COdigo de dependencia, o parte del mismo seguido del comodIn (*) + * + * @return array + * @access public + * @static + */ + function buscarPorCodigo(&$dbh, $codep, $database = 'CODEP') + { + //Reemplazar el comodín + $codep = preg_replace ('/\*/', '%', $codep); + + $sql = " SELECT codigo_actual, codigo_comdoc, nombre, + dependencia_id, nombre_breve + FROM ".$database.".Dependencias + WHERE dependencia_esta_activa = 1 + AND codigo_actual LIKE '".$codep."' + ORDER BY codigo_actual "; + + $dbh->setFetchMode(DB_FETCHMODE_ASSOC); + $result = $dbh->query($sql); + + return $result; + } + + + + /** + * @param db &$dbh Base de Datos + * @param string $clave Cadena de palabras clave del nombre de la dependencia. + * + * @return array + * @access public + * @static + */ + function buscarPorNombre(&$dbh, $clave, $database = 'CODEP') + { + //ReducciOn de espacios en blanco + $clave = preg_replace ('/\s+/', ' ', $clave); + + $sql = " SELECT codigo_actual, codigo_comdoc, nombre, dependencia_id, + nombre_breve + FROM ".$database.".Dependencias + WHERE dependencia_esta_activa = 1 "; + + //Separar la cadena de palabras clave + $items = split(' ', $clave); + foreach ($items as $i){ + $sql.= " AND nombre like '%".$i."%' "; + } + + $sql.= " ORDER BY codigo_actual"; + + $dbh->setFetchMode(DB_FETCHMODE_ASSOC); + $result = $dbh->query($sql); + + return $result; + } + + +} +?> \ No newline at end of file