]> git.llucax.com Git - mecon/intranet.git/blob - sistema/local_lib/Servicios/Bandas/Agente.php
doh
[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     /**
90      * @var    array $ASA
91      * @access private
92      */
93     var $_ASA = null;
94
95     // ~X2C
96
97
98     // +X2C Operation 197
99     /**
100      * Devuelve el promedio de horas del agente en el mes pedido
101      *
102      * @return void
103      * @access public
104      */
105     function getPromedioMensual() // ~X2C
106     {
107         return $this->_promedio;
108     }
109     // -X2C
110
111     // +X2C Operation 198
112     /**
113      * Devuelve un array con las horas de cada día
114      *
115      * @return void
116      * @access public
117      */
118     function getHoras() // ~X2C
119     {
120         return $this->_horas;
121     }
122     // -X2C
123
124     // +X2C Operation 205
125     /**
126      * Método que devuelve todos los accesos de una persona en un rango de fechas
127      *
128      * @return void
129      * @access public
130      */
131     function getAccesos() // ~X2C
132     {
133         return $this->_accesos;
134     }
135     // -X2C
136
137     // +X2C Operation 207
138     /**
139      * Devuelve la cantidad de días laborales trabajados por el agente en el mes considerado
140      *
141      * @return void
142      * @access public
143      */
144     function getDiasLaborablesTrabajados() // ~X2C
145     {
146         return $this->_diasLaborablesTrabajados;
147     }
148     // -X2C
149
150     // +X2C Operation 208
151     /**
152      * Devuelve la cantidad de días trabajados por el agente en el mes considerado
153      *
154      * @return void
155      * @access public
156      */
157     function getDiasTrabajados() // ~X2C
158     {
159         return $this->_diasTrabajados;
160     }
161     // -X2C
162
163
164     // +X2C Operation 213
165     /**
166      * Constructor de la clase
167      *
168      * @param  int $agente Número de documento del agente a instanciar
169      * @param  date $fecha Fecha utilizada para determinar el mes a mostrar
170      *
171      * @return void
172      * @access public
173      */
174     function Servicios_Bandas_Agente($agente = null, $fecha = null) // ~X2C
175     {
176                 Parent::MECON_Agente($agente);
177         $dsn = 'mysql://intranet:intranet@bal747f/bandas';
178         $db = DB::connect($dsn);
179         if (DB::isError($db)) 
180             die ($db->getMessage("No pudo conectarse a la base"));
181         if(is_null($fecha)) $fecha = new Date();
182         $mes = $fecha->format('%m');
183         $anio = $fecha->format('%Y');
184         $sql = "SELECT  AC.credencial, TA.tipo_acceso, A.fecha, A.hora
185                 FROM    Acceso A, Agente_Credencial AC, Tipo_Acceso TA
186                 WHERE   AC.credencial = A.credencial AND
187                         AC.agente = $agente AND
188                         MONTH(A.fecha) = $mes AND YEAR(A.fecha) = $anio AND
189                         TA.puerta = A.puerta AND
190                         AC.desde <= A.fecha AND 
191                         (  AC.hasta >= A.fecha OR  AC.hasta IS NULL)
192                 ORDER BY A.fecha, A.hora";
193         $result = $db->query($sql);
194         if (DB::isError($result))
195             die ($result->getMessage("Query mal hecho"));
196         for ($fila = 0; $fila < $result->numRows(); $fila++) {
197             $this->_accesos[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
198         }
199
200         $sql = "SELECT  diasLaborablesTrabajados, diasTrabajados, promedio, NASN
201                 FROM    PrecalculoMensual
202                 WHERE   agente = $agente AND anio = $anio and mes  = $mes";
203         $result = $db->query($sql);
204         if (DB::isError($result))
205             die ($result->getMessage("Query mal hecho"));
206         if ( $result->numRows() > 0) {
207             $aux = $result->fetchRow(DB_FETCHMODE_ASSOC);
208             $this->_diasTrabajados = $aux['diasTrabajados'];
209             $this->_diasLaborablesTrabajados = $aux['diasLaborablesTrabajados'];
210             $this->_promedio = $aux['promedio'];
211             $this->_NASA = $aux['NASN'];
212         }
213         $sql = "SELECT  P.fecha, tiempo, ASN, inconsistencia, tipo
214                 FROM    PrecalculoDiario AS P, Dia AS D
215                 WHERE   agente = $agente AND
216                                                 P.fecha = D.fecha AND
217                         MONTH(P.fecha) = $mes AND
218                         YEAR(P.fecha) = $anio
219                 ORDER BY P.fecha";
220         $result = $db->query($sql);
221         if (DB::isError($result))
222             die ($result->getMessage("Query mal hecho"));
223                 $this->_ASA = array();
224         for ($fila = 1; $fila < ($result->numRows() + 1); $fila++) {
225             $this->_horas[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
226                         ($this->_horas[$fila]['ASN']==1)?array_push($this->_ASA,$this->_horas[$fila]['fecha']):0;
227         }
228        
229     }
230     // -X2C
231
232     // +X2C Operation 229
233     /**
234      * Devuelve las fechas dentro del mes pedido en que el agente faltó y no se pasó ninguna novedad que lo justifique
235      *
236      * @return array
237      * @access public
238      */
239     function getASA() // ~X2C
240     {
241                 return $this->_ASA;
242     }
243     // -X2C
244
245     // +X2C Operation 230
246     /**
247      * @return int
248      * @access public
249      */
250     function getNASA() // ~X2C
251     {
252         return $this->_NASA;
253     }
254     // -X2C
255
256 } // -X2C Class :Servicios_Bandas_Agente
257 ?>