<?php
class parametroActions extends wtActions
{
    public function executeIndex()
    {
        
    }
    
    public function executeList()
    {
    	$o_GSS_CompaniaFN = new GSS_CompaniaFN();
    	$o_GSS_CompaniaFN->setEstado('A');
    	$o_GSS_CompaniaFN->addOrderBy( "DescripcionCorta", GSS_CompaniaFN::DescripcionCorta);
        $this->a_GSS_Compania= $o_GSS_CompaniaFN->select();
        
    	$this->block = $this->getRequestParameter( 'block' );
    }
    
    public function executeGrid()
    {
       
    	
    	//set_header_utf8();
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        $o_GridAction = new GridAction();
        $o_GridAction->setClassFind( new GSS_ParametroMastFN() );
        //$o_GridAction->addMethodDefault("IdCompania", myUser::getUser()->getIdBusiness() );
        $o_GridAction->addAssignFilter( "DescripcionParametro" );
        $o_GridAction->setNumberRecordsShow( 15 );
        $o_GridAction->setControlArray( false );
        $o_GridAction->initialize();
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
        $a_ResultJson['page']    = $o_GridAction->getPage();
        $a_ResultJson['total']   = $o_GridAction->getTotalPage();
        $a_ResultJson['records'] = $o_GridAction->getTotalRecords();
        //$a_ResultJson['rows']    = $o_GridAction->getResultArray();
        $a_ResultSelect    = $o_GridAction->getResultSelect();
        
        $a_Rs = array();
        foreach ( $a_ResultSelect as $iKey => $o_ObjClassBN )
        {
            /*
            $o_GSS_CompaniaFN = new GSS_CompaniaFN();
            $o_GSS_CompaniaBN = $o_GSS_CompaniaFN->selectByPK( $o_ObjClassBN->getIdCompania() );
            */

        	/*
            switch ( $o_ObjClassBN->getTipodeDatoFlag() )
            {
            	case 'N': //SE RECUPERA EL VALOR EL CAMPO Numero
                    $valor = $o_ObjClassBN->getNumero(); 
                break; 
            	case 'T': //SE RECUPERA EL VALOR EL CAMPO Texto
                    $valor = $o_ObjClassBN->getTexto();  
                break; 
            	case 'D': //SE RECUPERA EL VALOR EL CAMPO Fecha
                    $valor = $o_ObjClassBN->getFecha();  
                break; 
                case 'B': //BOOLEAN
                    $valor = $o_ObjClassBN->getTexto();  //
                break;
            }
            */

            $valor = $o_ObjClassBN->getIdValorParametro();

            switch ( $o_ObjClassBN->getTipodeDatoFlag() )
            {
                case 'B': //BOOLEAN
                    $valor = $o_ObjClassBN->getTexto();  //
                break;
            }

            $a_Rs[] = array(  
                                "IdParametro"    => utf8_encode( $o_ObjClassBN->getIdCompania()."**".$o_ObjClassBN->getIdAplicacionCodigo()."**".$o_ObjClassBN->getIdParametroClave() ),
                                //"Empresa"         => utf8_encode( $o_GSS_CompaniaBN->getDescripcionCorta() ),
                                "ParametroClave" => $o_ObjClassBN->getIdParametroClave(),
                                "Explicacion"    => $o_ObjClassBN->getExplicacion(),
                                "Tipo"           => $o_ObjClassBN->getTipodeDatoDesc(),
                                "Valor"          => $valor,
                                "Estado"         => $o_ObjClassBN->getEstado()
                           );
        }
        $a_ResultJson['rows'] = $a_Rs;
        //pr( $a_ResultJson );
        echo json_encode( $a_ResultJson );

        return ViewResponse::NONE;
        
    	
    	
    }

    public function executeAddedit()
    {
        $this->block      = $this->getRequestParameter( 'block' );
        $this->i_Id       = $this->getRequestParameter( 'i_Id' );
        $this->s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        $o_GSS_CompaniaFN = new GSS_CompaniaFN();
        $this->a_GSS_Compania= $o_GSS_CompaniaFN->select();
        
        $a_Ids = explode( "**", $this->i_Id );
        $i_IdCompania         = $a_Ids[0];
        $s_AplicacionCodigo = $a_Ids[1];
        $s_ParametroClave      = $a_Ids[2];
                
               
        $this->s_Titulo = "Nuevo Parametro";
        $this->o_GSS_ParametroMastBN = new GSS_ParametroMastBN();
        if( $this->s_TipoProc == "upd" )
        {
            $this->s_Titulo = "Editar Parametro";
            $o_GSS_ParametroMastFN = new GSS_ParametroMastFN();
            $this->o_GSS_ParametroMastBN = $o_GSS_ParametroMastFN->selectByPK( $i_IdCompania, $s_AplicacionCodigo, $s_ParametroClave );
        }
    }
   
    public function executeSaveAddEdit()
    {
        $block      = $this->getRequestParameter( 'block' );
        $i_Id       = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        $TypeSub    = $this->getRequestParameter( 'TypeSub' );
        
        
        $i_Id      = $this->getRequestParameter( 'i_Id' );
        $valor      = $this->getRequestParameter( 'valor' );
        $TipodeDatoFlag      = $this->getRequestParameter( 'TipodeDatoFlag' );
        $Estado      = $this->getRequestParameter( 'Estado' );
        
        $a_Ids = explode( "**", $i_Id );
        $i_IdCompania         = $a_Ids[0];
        $s_AplicacionCodigo = $a_Ids[1];
        $s_ParametroClave      = $a_Ids[2];
               
        
        
        try 
        {
            $o_GSS_ParametroMastDP = new GSS_ParametroMastDP();
            $o_GSS_ParametroMastDP->setIdCompania( (int)$i_IdCompania );
            $o_GSS_ParametroMastDP->setTipodeDatoFlag( $TipodeDatoFlag );
            $o_GSS_ParametroMastDP->setIdAplicacionCodigo( $s_AplicacionCodigo );
            $o_GSS_ParametroMastDP->setIdParametroClave( $s_ParametroClave );
            $o_GSS_ParametroMastDP->setIdValorParametro( $valor );
            $o_GSS_ParametroMastDP->setEstado( $Estado );
            if( $s_TipoProc == "nvo" )
            {
                //NUEVO
                
                $o_GSS_ParametroMastDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
                $o_GSS_ParametroMastDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
                
                $b_Result = $o_GSS_ParametroMastDP->save();
               
            }
            else 
            {
                //UPDATE
                $o_GSS_ParametroMastDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                $o_GSS_ParametroMastDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
                $b_Result = $o_GSS_ParametroMastDP->update();
            }
            $a_Rs['type_sub'] = $TypeSub;
            $a_Rs['error']    = false;
            $a_Rs['id']       = $i_Id;
            
        }
        catch ( Exception $o_Exception )
        {
            $a_Rs['error']         = true;
            $a_Rs['mensaje_error'] = $o_Exception->getMessage();
        }
        echo json_encode( $a_Rs );
        return ViewResponse::NONE;
    }
    
    public function executeAudi()
    {
        $block          = $this->getRequestParameter( 'block' );
        $i_Id           = $this->getRequestParameter( 'i_Id' );
        
       
        $a_Ids = explode( "**", $i_Id );
        
        $i_IdCompania         = $a_Ids[0];
        $s_AplicacionCodigo = $a_Ids[1];
        $s_ParametroClave      = $a_Ids[2];
        
        $this->s_Topico = "Parametro";
        $o_GSS_ParametroMastFN = new GSS_ParametroMastFN();
        
        
        
        $this->o_ObjectBN = $o_GSS_ParametroMastFN->selectByPK( $i_IdCompania, $s_AplicacionCodigo, $s_ParametroClave );
        
       
    }
    
    public function executeViewdel()
    {
        $this->block      = $this->getRequestParameter( 'block' );
        $this->i_Id       = $this->getRequestParameter( 'i_Id' );
        $this->s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        $o_GSS_CompaniaFN = new GSS_CompaniaFN();
    	$o_GSS_CompaniaFN->setEstado('A');
    	$o_GSS_CompaniaFN->addOrderBy( "DescripcionCorta", GSS_CompaniaFN::DescripcionCorta);
        $this->a_GSS_Compania= $o_GSS_CompaniaFN->select();
        
        $a_Ids = explode( "**", $this->i_Id  );
        $i_IdCompania         = $a_Ids[0];
        $s_AplicacionCodigo = $a_Ids[1];
        $s_ParametroClave      = $a_Ids[2];
        
        $o_GSS_ParametroMastFN = new GSS_ParametroMastFN();
        $this->GSS_ParametroMastBN = $o_GSS_ParametroMastFN->selectByPK( $i_IdCompania, $s_AplicacionCodigo, $s_ParametroClave );
        
    }
    
    public function executeDeleteRow()
    {
        $block      = $this->getRequestParameter( 'block' );
        $i_Id       = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        $a_Ids = explode( "**", $i_Id );
        $i_IdCompania         = $a_Ids[0];
        $s_AplicacionCodigo = $a_Ids[1];
        $s_ParametroClave      = $a_Ids[2];
        try 
        {
        	
            $o_GSS_ParametroMastDP = new GSS_ParametroMastDP();
            $o_GSS_ParametroMastDP->setIdCompania( $i_IdCompania );
            $o_GSS_ParametroMastDP->setIdAplicacionCodigo( $s_AplicacionCodigo );
            $o_GSS_ParametroMastDP->setIdParametroClave( $s_ParametroClave );
            $o_GSS_ParametroMastDP->delete();

            $a_Rs['error']   = false;
            $a_Rs['id']      = $i_Id;
        }
        catch ( Exception $o_Exception )
        {
            $a_Rs['error']   = true;
            $a_Rs['mensaje_error_ex'] = $o_Exception->getMessage();
            $a_Rs['mensaje_error'] = "No se pudo eliminar el registro.";
        }
        echo json_encode( $a_Rs );
        return ViewResponse::NONE;
    }
}