<?php
/* Mantenimiento de los registros de la tabla SEG_UsuarioSesion redefinidos por el usaurio */
class SEG_UsuarioSesionDP extends BaseSEG_UsuarioSesionDP
{
    public static function recuperarId()
    {
        $o_utilGenerateId = new utilGenerateId();
        $o_utilGenerateId->setIdCompania( myUser::getUser()->getIdBusiness() );
        $o_utilGenerateId->setTipoCorrelativo( "USUSES" );
        $o_utilGenerateId->setSerie( "SEG" );
        $i_Id = $o_utilGenerateId->generateId();
        return $i_Id;
    }

    public function guardarSesion()
    {
        //$_SERVER['SERVER_ADDR'] -> La dirección IP del servidor donde se está ejecutando actualmente el script.
        //$_SERVER['REMOTE_ADDR'] -> La dirección IP desde la cual está viendo la página actual el usuario.
        if( $_SERVER['SERVER_NAME'] == "localhost" )
        {
            $_SERVER['REMOTE_ADDR'] = "localhost";
        }

        $s_IP = $_SERVER['REMOTE_ADDR'];

        $o_SEG_UsuarioSesionFN = new SEG_UsuarioSesionFN();
        $o_SEG_UsuarioSesionFN->setIP( $s_IP );
        $o_SEG_UsuarioSesionFN->setIdRol( $this->getIdRol() );
        $o_SEG_UsuarioSesionFN->setIdUsuario( $this->getIdUsuario() );
        $a_SEG_UsuarioSesion = $o_SEG_UsuarioSesionFN->select();
        if( !$a_SEG_UsuarioSesion )
        {
            $i_Id = SEG_UsuarioSesionDP::recuperarId();
            $o_SEG_UsuarioSesionDP = new SEG_UsuarioSesionDP();
            $o_SEG_UsuarioSesionDP->setId( $i_Id );
            $o_SEG_UsuarioSesionDP->setIP( $s_IP );
            $o_SEG_UsuarioSesionDP->setIdRol( $this->getIdRol() );
            $o_SEG_UsuarioSesionDP->setIdUsuario( $this->getIdUsuario() );
            $o_SEG_UsuarioSesionDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
            $o_SEG_UsuarioSesionDP->save();
        }
    }

    public static function borrarSesion( $s_IdRol )
    {
        $o_SEG_UsuarioSesionBN = SEG_UsuarioSesionFN::buscarPorIP( $s_IdRol );
        if( $o_SEG_UsuarioSesionBN )
        {
            /*$o_SEG_UsuarioSesionDP = new SEG_UsuarioSesionDP();
            $o_SEG_UsuarioSesionDP->setId( $o_SEG_UsuarioSesionBN->getId() );
            $o_SEG_UsuarioSesionDP->delete();*/
            $s_Sql = "delete from SEG_UsuarioSesion where IP='".$o_SEG_UsuarioSesionBN->getIP()."' AND IdRol='".$o_SEG_UsuarioSesionBN->getIdRol()."' ;";
            $o_DBConnect = Conexion::getConexion();
            $o_Statement = $o_DBConnect->createStatement();
            $o_Statement->executeQuery( $s_Sql );
        }
    }
}