]> git.llucax.com Git - mecon/intranet.git/blob - sistema/local_lib/Servicios/Agenda.php
9587c4616ff70e89974821d2b7a2529128a038c3
[mecon/intranet.git] / sistema / local_lib / Servicios / Agenda.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // |                      Ministerio de Economía                        |
5 // |                             Intranet                               |
6 // +--------------------------------------------------------------------+
7 // | This file is part of Intranet.                                     |
8 // |                                                                    |
9 // | Intranet is free software; you can redistribute it and/or modify   |
10 // | it under the terms of the GNU General Public License as published  |
11 // | by the Free Software Foundation; either version 2 of the License,  |
12 // | or (at your option) any later version.                             |
13 // |                                                                    |
14 // | Intranet is distributed in the hope that it will be useful, but    |
15 // | WITHOUT ANY WARRANTY; without even the implied warranty of         |
16 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
17 // | General Public License for more details.                           |
18 // |                                                                    |
19 // | You should have received a copy of the GNU General Public License  |
20 // | along with Hooks; if not, write to the Free Software Foundation,   |
21 // | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
22 // +--------------------------------------------------------------------+
23 // | Creado: Tue Aug 12 14:52:37 2003                                 
24 // | Autor:  Martin Marrese <mmarre@mecon.gov.ar>
25 // +--------------------------------------------------------------------+
26 //
27 // $Id$
28 //
29
30 // +X2C Class 174 :Servicios_Agenda
31 /**
32  * Clase para el manejo de la agenda en la cual se muestran la informacion de los internos de los diferentes edificios.
33  *
34  * @access public
35  */
36 class Servicios_Agenda {
37     /**
38      * Conexion a la base de datos
39      *
40      * @var    DB $db
41      * @access private
42      */
43     var $_db;
44
45     /**
46      * Interno a buscar
47      *
48      * @var    int $interno
49      * @access private
50      */
51     var $_interno = null;
52
53     /**
54      * Nombre a buscar
55      *
56      * @var    string $nombre
57      * @access private
58      */
59     var $_nombre = null;
60
61     /**
62      * Codep a buscar
63      *
64      * @var    string $codep
65      * @access private
66      */
67     var $_codep = null;
68
69     /**
70      * Descripcion de la dependencia a buscar
71      *
72      * @var    string $dependencia
73      * @access private
74      */
75     var $_dependencia = null;
76
77     /**
78      * Codigo de edificio a buscar
79      *
80      * @var    int $edificio
81      * @access private
82      */
83     var $_edificio = null;
84
85     /**
86      * Piso a buscar
87      *
88      * @var    int $piso
89      * @access private
90      */
91     var $_piso = null;
92
93     /**
94      * Oficina a buscar
95      *
96      * @var    string $oficina
97      * @access private
98      */
99     var $_oficina = null;
100
101     /**
102      * Criterio para ordenar
103      *
104      * @var    string $ordenar
105      * @access private
106      */
107     var $_ordenar = null;
108
109     /**
110      * Sets Interno.
111      *
112      * @param  int $interno Interno.
113      *
114      * @return void
115      * @access public
116      */
117     function setInterno($interno)
118     {
119         $this->_interno = $interno;
120     }
121
122     /**
123      * Sets Nombre.
124      *
125      * @param  string $nombre Nombre.
126      *
127      * @return void
128      * @access public
129      */
130     function setNombre($nombre)
131     {
132         $this->_nombre = $nombre;
133     }
134
135     /**
136      * Sets Codep.
137      *
138      * @param  string $codep Codep.
139      *
140      * @return void
141      * @access public
142      */
143     function setCodep($codep)
144     {
145         $this->_codep = $codep;
146     }
147
148     /**
149      * Sets Dependencia.
150      *
151      * @param  string $dependencia Dependencia.
152      *
153      * @return void
154      * @access public
155      */
156     function setDependencia($dependencia)
157     {
158         $this->_dependencia = $dependencia;
159     }
160
161     /**
162      * Sets Edificio.
163      *
164      * @param  int $edificio Edificio.
165      *
166      * @return void
167      * @access public
168      */
169     function setEdificio($edificio)
170     {
171         $this->_edificio = $edificio;
172     }
173
174     /**
175      * Sets Piso.
176      *
177      * @param  int $piso Piso.
178      *
179      * @return void
180      * @access public
181      */
182     function setPiso($piso)
183     {
184         $this->_piso = $piso;
185     }
186
187     /**
188      * Sets Oficina.
189      *
190      * @param  string $oficina Oficina.
191      *
192      * @return void
193      * @access public
194      */
195     function setOficina($oficina)
196     {
197         $this->_oficina = $oficina;
198     }
199
200     /**
201      * Sets Ordenar.
202      *
203      * @param  string $ordenar Ordenar.
204      *
205      * @return void
206      * @access public
207      */
208     function setOrdenar($ordenar)
209     {
210         $this->_ordenar = $ordenar;
211     }
212
213     // ~X2C
214
215     // +X2C Operation 175
216     /**
217      * @param  DB $db Conexiona la base de datos
218      *
219      * @return array ()
220      * @access public
221      * @static
222      */
223     function getEdificios($db) // ~X2C
224     {
225         $rta['-'] = '-';
226         $consulta = 'select cod_edificio, desc_edificio from agenda.edificios where cod_edificio <> 13 order by desc_edificio';
227         $dbh = $db->prepare($consulta);
228         $res = $db->execute($dbh);
229         while ($re = $res->fetchrow(DB_FETCHMODE_ASSOC)) {
230             $rta[$re['cod_edificio']] = $re['desc_edificio'];
231         }
232         $res->free();
233         return $rta;
234     }
235     // -X2C
236
237     // +X2C Operation 176
238     /**
239      * Constructor
240      *
241      * @param  DB &$db Conexion a la base de datos.
242      *
243      * @return void
244      * @access public
245      */
246     function Servicios_Agenda(&$db) // ~X2C
247     {
248         $this->_db = $db;
249     }
250     // -X2C
251
252     // +X2C Operation 186
253     /**
254      * Busca la informacion en la base. Devuelve un array de array o null.
255      *
256      * @return array
257      * @access public
258      */
259     function obtenerInfo() // ~X2C
260     {
261         $sql = 'SELECT interno, nombre, internos.codep, dependencia, desc_edificio as edificio, piso, oficina 
262                 FROM   agenda.internos, agenda.dependencias, agenda.edificios
263                 WHERE  dependencias.codep=internos.codep AND
264                        edificios.cod_edificio=internos.cod_edif ';
265         
266         $sql.=($this->_interno)  ? ' AND interno = '.$this->_interno:''; 
267         $sql.=($this->_codep)    ? ' AND internos.codep =
268             \''.$this->_codep.'\'':''; 
269         $sql.=($this->_edificio) ? ' AND internos.cod_edif = '.$this->_edificio:''; 
270         $sql.=($this->_piso)     ? ' AND piso = '.$this->_piso:''; 
271         $sql.=($this->_oficina)  ? ' AND oficina = '.$this->_oficina:''; 
272         
273         if ($this->_nombre) {
274             $nom = split('/ /',$this->_nombre);
275             foreach ($nom as $n) {
276                $sql.= " AND nombre LIKE '%$n%'";
277             }
278         }
279         if ($this->_dependencia && $this->_dependencia != '--Ingrese una palabra clave--') {
280             $dep = split(' ', $this->_dependencia);
281             foreach ($dep as $d) {
282                 $d = trim($d);
283                 $sql.= " AND dependencia LIKE '%$d%'";
284             }
285         }
286         
287         $sql.=($this->_ordenar)  ? ' order by '.$this->_ordenar :''; 
288         
289         $dbh = $this->_db->prepare($sql);
290         $res = $this->_db->execute($dbh);
291
292         $rta = null;
293         while ($re  = $res->fetchRow()) {
294             $rta[]= $re;
295         }
296         
297         return $rta;
298     }
299     // -X2C
300
301 } // -X2C Class :Servicios_Agenda
302 ?>