]> git.llucax.com Git - mecon/intranet.git/blobdiff - sistema/local_lib/Servicios/Bandas/Agente.php
Agregué una clase Buscador que sirve para hacer todas las búsquedas de bandas
[mecon/intranet.git] / sistema / local_lib / Servicios / Bandas / Agente.php
index 389436f731c7bca63a7dc74eed4dcc4e6aa726d8..7ba4e13aac5b94c71b492364305593e92550c4ab 100644 (file)
@@ -37,7 +37,7 @@ require_once 'MECON/Agente.php';
 /**
  * @access public
  */
-class Servicios_Bandas_Agente extends Agente {
+class Servicios_Bandas_Agente extends MECON_Agente {
     /**
      * Todos los accesos del agente en el mes pedido
      *
@@ -47,47 +47,77 @@ class Servicios_Bandas_Agente extends Agente {
     var $_accesos = null;
 
     /**
-     * @var    int $credencial
+     * Número de ausentes sin aviso en el mes pedido
+     *
+     * @var    int $NASA
      * @access private
      */
-    var $_credencial;
+    var $_NASA;
 
-    // ~X2C
+    /**
+     * Promedio horario del agente en el mes pedido
+     *
+     * @var    int $promedio
+     * @access private
+     */
+    var $_promedio;
 
-    // +X2C Operation 194
     /**
-     * @param  date $fecha 
+     * Array con las horas por día trabajadas por el agente
      *
-     * @return void
-     * @access public
+     * @var    int $horas
+     * @access private
      */
-    function getCredencial($fecha = null) // ~X2C
-    {
-        trigger_error('Not implemented!', E_USER_WARNING);
-    }
-    // -X2C
+    var $_horas;
+
+    /**
+     * Cantidad de días trabajados por el agente en el mes pedido
+     *
+     * @var    int $diasTrabajados
+     * @access private
+     */
+    var $_diasTrabajados = 0;
+
+    /**
+     * Cantidad de días laborables trabajados por el agente en el mes pedido
+     *
+     * @var    int $diasLaborablesTrabajados
+     * @access private
+     */
+    var $_diasLaborablesTrabajados = 0;
+
+    /**
+     * @var    array $ASA
+     * @access private
+     */
+    var $_ASA = null;
+
+    // ~X2C
+
 
     // +X2C Operation 197
     /**
+     * Devuelve el promedio de horas del agente en el mes pedido
+     *
      * @return void
      * @access public
      */
     function getPromedioMensual() // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        return $this->_promedio;
     }
     // -X2C
 
     // +X2C Operation 198
     /**
-     * @param  date $dia La fecha que se desea consultar
+     * Devuelve un array con las horas de cada día
      *
      * @return void
      * @access public
      */
-    function getHoras($dia = null) // ~X2C
+    function getHoras() // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        return $this->_horas;
     }
     // -X2C
 
@@ -95,15 +125,12 @@ class Servicios_Bandas_Agente extends Agente {
     /**
      * Método que devuelve todos los accesos de una persona en un rango de fechas
      *
-     * @param  date $fecha_desde 
-     * @param  date $fecha_hasta 
-     *
      * @return void
      * @access public
      */
-    function getAccesos($fecha_desde, $fecha_hasta) // ~X2C
+    function getAccesos() // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        return $this->_accesos;
     }
     // -X2C
 
@@ -116,7 +143,7 @@ class Servicios_Bandas_Agente extends Agente {
      */
     function getDiasLaborablesTrabajados() // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        return $this->_diasLaborablesTrabajados;
     }
     // -X2C
 
@@ -129,22 +156,10 @@ class Servicios_Bandas_Agente extends Agente {
      */
     function getDiasTrabajados() // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+        return $this->_diasTrabajados;
     }
     // -X2C
 
-    // +X2C Operation 212
-    /**
-     * Devuelve la cantidad de ausentes sin aviso del agente en el mes considerado
-     *
-     * @return int
-     * @access public
-     */
-    function getNASA() // ~X2C
-    {
-        trigger_error('Not implemented!', E_USER_WARNING);
-    }
-    // -X2C
 
     // +X2C Operation 213
     /**
@@ -158,7 +173,83 @@ class Servicios_Bandas_Agente extends Agente {
      */
     function Servicios_Bandas_Agente($agente = null, $fecha = null) // ~X2C
     {
-        trigger_error('Not implemented!', E_USER_WARNING);
+               Parent::MECON_Agente($agente);
+        $dsn = 'mysql://intranet:intranet@bal747f/bandas';
+        $db = DB::connect($dsn);
+        if (DB::isError($db)) 
+            die ($db->getMessage("No pudo conectarse a la base"));
+        if(is_null($fecha)) $fecha = new Date();
+        $mes = $fecha->format('%m');
+        $anio = $fecha->format('%Y');
+        $sql = "SELECT  AC.credencial, TA.tipo_acceso, A.fecha, A.hora
+                FROM    Acceso A, Agente_Credencial AC, Tipo_Acceso TA
+                WHERE   AC.credencial = A.credencial AND
+                        AC.agente = $agente AND
+                        MONTH(A.fecha) = $mes AND YEAR(A.fecha) = $anio AND
+                        TA.puerta = A.puerta AND
+                        AC.desde <= A.fecha AND 
+                        (  AC.hasta >= A.fecha OR  AC.hasta IS NULL)
+                ORDER BY A.fecha, A.hora";
+        $result = $db->query($sql);
+        if (DB::isError($result))
+            die ($result->getMessage("Query mal hecho"));
+        for ($fila = 0; $fila < $result->numRows(); $fila++) {
+            $this->_accesos[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
+        }
+
+        $sql = "SELECT  diasLaborablesTrabajados, diasTrabajados, promedio, NASN
+                FROM    PrecalculoMensual
+                WHERE   agente = $agente AND anio = $anio and mes  = $mes";
+        $result = $db->query($sql);
+        if (DB::isError($result))
+            die ($result->getMessage("Query mal hecho"));
+        if ( $result->numRows() > 0) {
+            $aux = $result->fetchRow(DB_FETCHMODE_ASSOC);
+            $this->_diasTrabajados = $aux['diasTrabajados'];
+            $this->_diasLaborablesTrabajados = $aux['diasLaborablesTrabajados'];
+            $this->_promedio = $aux['promedio'];
+            $this->_NASA = $aux['NASN'];
+        }
+        $sql = "SELECT  P.fecha, tiempo, ASN, inconsistencia, tipo
+                FROM    PrecalculoDiario AS P, Dia AS D
+                WHERE   agente = $agente AND
+                                               P.fecha = D.fecha AND
+                        MONTH(P.fecha) = $mes AND
+                        YEAR(P.fecha) = $anio
+                ORDER BY P.fecha";
+        $result = $db->query($sql);
+        if (DB::isError($result))
+            die ($result->getMessage("Query mal hecho"));
+               $this->_ASA = array();
+        for ($fila = 1; $fila < ($result->numRows() + 1); $fila++) {
+            $this->_horas[$fila] = $result->fetchRow(DB_FETCHMODE_ASSOC);
+                       ($this->_horas[$fila]['ASN']==1)?array_push($this->_ASA,$this->_horas[$fila]['fecha']):0;
+        }
+       
+    }
+    // -X2C
+
+    // +X2C Operation 229
+    /**
+     * Devuelve las fechas dentro del mes pedido en que el agente faltó y no se pasó ninguna novedad que lo justifique
+     *
+     * @return array
+     * @access public
+     */
+    function getASA() // ~X2C
+    {
+               return $this->_ASA;
+    }
+    // -X2C
+
+    // +X2C Operation 230
+    /**
+     * @return int
+     * @access public
+     */
+    function getNASA() // ~X2C
+    {
+        return $this->_NASA;
     }
     // -X2C