]> git.llucax.com Git - mecon/intranet.git/blob - sistema/local_lib/Servicios/Bandas/Agente.php
- Primera version semi-funcional de bandas. Otros cambios que no tengo idea de que...
[mecon/intranet.git] / sistema / local_lib / Servicios / Bandas / Agente.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: Thu Aug 14 16:03:23 2003                                 
24 // | Autor:  Matias Sklar <msklar@mecon.gov.ar>
25 // +--------------------------------------------------------------------+
26 //
27 // $Id$
28 //
29
30
31
32 // +X2C includes
33 require_once 'MECON/Agente.php';
34 // ~X2C
35
36 // +X2C Class 183 :Servicios_Bandas_Agente
37 /**
38  * @access public
39  */
40 class Servicios_Bandas_Agente extends MECON_Agente {
41     /**
42      * Todos los accesos del agente en el mes pedido
43      *
44      * @var    int $accesos
45      * @access private
46      */
47     var $_accesos = null;
48
49     /**
50      * Número de ausentes sin aviso en el mes pedido
51      *
52      * @var    int $NASA
53      * @access private
54      */
55     var $_NASA;
56
57     /**
58      * Promedio horario del agente en el mes pedido
59      *
60      * @var    int $promedio
61      * @access private
62      */
63     var $_promedio;
64
65     /**
66      * Array con las horas por día trabajadas por el agente
67      *
68      * @var    int $horas
69      * @access private
70      */
71     var $_horas;
72
73     /**
74      * Cantidad de días trabajados por el agente en el mes pedido
75      *
76      * @var    int $diasTrabajados
77      * @access private
78      */
79     var $_diasTrabajados = 0;
80
81     /**
82      * Cantidad de días laborables trabajados por el agente en el mes pedido
83      *
84      * @var    int $diasLaborablesTrabajados
85      * @access private
86      */
87     var $_diasLaborablesTrabajados = 0;
88
89     // ~X2C
90
91
92     // +X2C Operation 197
93     /**
94      * Devuelve el promedio de horas del agente en el mes pedido
95      *
96      * @return void
97      * @access public
98      */
99     function getPromedioMensual() // ~X2C
100     {
101         return $this->_promedio;
102     }
103     // -X2C
104
105     // +X2C Operation 198
106     /**
107      * Devuelve un array con las horas de cada día
108      *
109      * @return void
110      * @access public
111      */
112     function getHoras() // ~X2C
113     {
114         return $this->_horas;
115     }
116     // -X2C
117
118     // +X2C Operation 205
119     /**
120      * Método que devuelve todos los accesos de una persona en un rango de fechas
121      *
122      * @return void
123      * @access public
124      */
125     function getAccesos() // ~X2C
126     {
127         return $this->_accesos;
128     }
129     // -X2C
130
131     // +X2C Operation 207
132     /**
133      * Devuelve la cantidad de días laborales trabajados por el agente en el mes considerado
134      *
135      * @return void
136      * @access public
137      */
138     function getDiasLaborablesTrabajados() // ~X2C
139     {
140         return $this->_diasLaborablesTrabajados;
141     }
142     // -X2C
143
144     // +X2C Operation 208
145     /**
146      * Devuelve la cantidad de días trabajados por el agente en el mes considerado
147      *
148      * @return void
149      * @access public
150      */
151     function getDiasTrabajados() // ~X2C
152     {
153         return $this->_diasTrabajados;
154     }
155     // -X2C
156
157     // +X2C Operation 212
158     /**
159      * Devuelve la cantidad de ausentes sin aviso del agente en el mes considerado
160      *
161      * @return int
162      * @access public
163      */
164     function getNASA() // ~X2C
165     {
166         return $this->_NASA;
167     }
168     // -X2C
169
170     // +X2C Operation 213
171     /**
172      * Constructor de la clase
173      *
174      * @param  int $agente Número de documento del agente a instanciar
175      * @param  date $fecha Fecha utilizada para determinar el mes a mostrar
176      *
177      * @return void
178      * @access public
179      */
180     function Servicios_Bandas_Agente($agente = null, $fecha = null) // ~X2C
181     {
182         Parent::MECON_Agente($agente);
183         $dsn = 'mysql://intranet:intranet@bal747f/bandas';
184         $db = DB::connect($dsn);
185         if (DB::isError($db)) 
186             die ($db->getMessage("No pudo conectarse a la base"));
187         if(is_null($fecha)) $fecha = new Date();
188         $mes = $fecha->format('%m');
189         $anio = $fecha->format('%Y');
190         $sql = "SELECT  AC.credencial, TA.tipo_acceso, A.fecha, A.hora
191                 FROM    Acceso A, Agente_Credencial AC, Tipo_Acceso TA
192                 WHERE   AC.credencial = A.credencial AND
193                         AC.agente = $agente AND
194                         MONTH(A.fecha) = $mes AND YEAR(A.fecha) = $anio AND
195                         TA.puerta = A.puerta AND
196                         AC.desde <= A.fecha AND 
197                         (  AC.hasta >= A.fecha OR  AC.hasta IS NULL)
198                 ORDER BY A.fecha, A.hora";
199         $result = $db->query($sql);
200         if (DB::isError($result))
201             die ($result->getMessage("Query mal hecho"));
202         for ($fila = 0; $fila < $result->numRows(); $fila++) {
203             $this->_accesos[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
204         }
205
206         $sql = "SELECT  diasLaborablesTrabajados, diasTrabajados, promedio, NASN
207                 FROM    PrecalculoMensual
208                 WHERE   agente = $agente AND anio = $anio and mes  = $mes";
209         $result = $db->query($sql);
210         if (DB::isError($result))
211             die ($result->getMessage("Query mal hecho"));
212         if ( $result->numRows() > 0) {
213             $aux = $result->fetchRow(DB_FETCHMODE_ASSOC);
214             $this->_diasTrabajados = $aux['diasTrabajados'];
215             $this->_diasLaborablesTrabajados = $aux['diasLaborablesTrabajados'];
216             $this->_promedio = $aux['promedio'];
217             $this->_NASA = $aux['NASN'];
218         }
219         $sql = "SELECT  fecha, tiempo, ASN, inconsistencia
220                 FROM    PrecalculoDiario
221                 WHERE   agente = $agente AND
222                         MONTH(fecha) = $mes AND
223                         YEAR(fecha) = $anio
224                 ORDER BY fecha";
225         $result = $db->query($sql);
226         if (DB::isError($result))
227             die ($result->getMessage("Query mal hecho"));
228         for ($fila = 1; $fila < ($result->numRows() + 1); $fila++) {
229             $this->_horas[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
230         }
231        
232     }
233     // -X2C
234
235 } // -X2C Class :Servicios_Bandas_Agente
236 ?>