<?php

class ubicacionRecorridoModelo extends Modelo
{
    private $atIdEmpleado;
    public function __construct()
    {
        parent::__construct();
        $this->atIdEmpleado = Session::metObtener('idEmpleado');
    }


    public function metListarUbicaciondeRecorrido()
    {
        $registro = $this->_db->query(
            "SELECT * 
                    FROM pa_c006_tipo_ubicacion_recorrido
                    order by pk_num_ubicacion_recorrido desc"
        );
        $registro->setFetchMode(PDO::FETCH_ASSOC);
        return $registro->fetchAll();
    }

    public function metGetUbicacionRecorrido($pk_num_ubicacion_recorrido){
        $registro = $this->_db->query(
            "SELECT 
                        ubicacion_recorrido.*,
                         concat(a003_persona.ind_nombre1,' ',a003_persona.ind_apellido1) as usuario_modificado
                    from pa_c006_tipo_ubicacion_recorrido as ubicacion_recorrido
                    LEFT JOIN rh_b001_empleado on ubicacion_recorrido.fk_rhb001_num_empleado = rh_b001_empleado.pk_num_empleado
	                LEFT JOIN a003_persona on rh_b001_empleado.fk_a003_num_persona = a003_persona.pk_num_persona
                     where ubicacion_recorrido.pk_num_ubicacion_recorrido = '". $pk_num_ubicacion_recorrido ."'"
        );
        $registro->setFetchMode(PDO::FETCH_ASSOC);
        $registro= $registro->fetchAll();
        $registro= $registro[0];

        return $registro;
    }

    public function metInsertUbicacionRecorrido($descripcion){
        $this->_db->beginTransaction();


        $insertRecorrido = $this->_db->prepare("
            INSERT INTO
                pa_c006_tipo_ubicacion_recorrido
            set 
                descripcion=:descripcion,
                fk_rhb001_num_empleado=:fk_rhb001_num_empleado
                
            ");

        $insertRecorrido->execute(array(
            'fk_rhb001_num_empleado' => $this->atIdEmpleado,
            'descripcion' => $descripcion
        ));
        $idAgregado = $this->_db->lastInsertId();
        $fallaTansaccion = $insertRecorrido->errorInfo();


        if (!empty($fallaTansaccion[1]) && !empty($fallaTansaccion[2])) {
            $this->_db->rollBack();
        } else {
            $this->_db->commit();
        }


        return $idAgregado;
    }

    public function metUpdateUbicacionRecorrido($id,$descripcion){
        $this->_db->beginTransaction();


        $updateRecorrido = $this->_db->prepare("
            UPDATE
                pa_c006_tipo_ubicacion_recorrido
            set 
                fk_rhb001_num_empleado=:fk_rhb001_num_empleado,
                descripcion=:descripcion,
                fecha_modificacion=now()
            where pa_c006_tipo_ubicacion_recorrido.pk_num_ubicacion_recorrido=".$id
            );

        $updateRecorrido->execute(array(
            'fk_rhb001_num_empleado' => $this->atIdEmpleado,
            'descripcion' => $descripcion
        ));
        $fallaTansaccion = $updateRecorrido->errorInfo();


        if (!empty($fallaTansaccion[1]) && !empty($fallaTansaccion[2])) {
            $this->_db->rollBack();
            return 0;
        } else {
            $this->_db->commit();
            return 1;
        }

    }






    public function metListarRecorridos($desde=null , $hasta=null)
    {
        /*
         * Dependiendo si se envía información de las fechas se toma como rango de búsqueda
         * caso contrario se utiliza la fecha actual del servidor para la consulta.
         * Se busca reducir el tamaño de la respuesta.
         */


        if( isset($desde) && isset($hasta)){
            $whereClause =" pa_b014_recorrido.fecha_creacion >= '". $desde . " ' and pa_b014_recorrido.fecha_creacion <= '". $hasta . " '";
        }else{
            $fecha = date("Y-m-d");
            $whereClause =" pa_b014_recorrido.fecha_creacion >= '". $fecha ." 00:00:01' and pa_b014_recorrido.fecha_creacion <= '". $fecha ." 23:69:69' ";

        }

        $registro = $this->_db->query(
            "SELECT 
                        pa_b014_recorrido.*,
                        pa_c006_tipo_ubicacion_recorrido.descripcion as tiempo_recorrido ,
                        concat(a003_persona.ind_nombre1,' ',a003_persona.ind_apellido1) as nombre_emisor
                    FROM pa_b014_recorrido  
                    left join pa_c006_tipo_ubicacion_recorrido on pa_b014_recorrido.fk_pac006_tipo_tiempo = pa_c006_tipo_ubicacion_recorrido.pk_num_ubicacion_recorrido 
                    LEFT JOIN rh_b001_empleado on pa_b014_recorrido.fk_rhb001_empleado_emisor = rh_b001_empleado.pk_num_empleado
	                LEFT JOIN a003_persona on rh_b001_empleado.fk_a003_num_persona = a003_persona.pk_num_persona
                    where " . $whereClause
        );
        $registro->setFetchMode(PDO::FETCH_ASSOC);
        $resultado = $registro->fetchAll();
        return $resultado;
    }
    public function metListarUbicacionesRecorrido()
    {
        $registro = $this->_db->query(
            "SELECT * FROM pa_c006_tipo_ubicacion_recorrido"
        );
        $registro->setFetchMode(PDO::FETCH_ASSOC);
        return $registro->fetchAll();
    }
    public function metListarCaracteristicasObjeto()
    {
        $registro = $this->_db->query(
            "SELECT * FROM pa_c004_caracteristica_objeto"
        );
        $registro->setFetchMode(PDO::FETCH_ASSOC);
        return $registro->fetchAll();
    }





}


