<?php
class turnoActions extends wtActions
{
    public function executeIndex()
    {
        
    }
    
    public function executeList()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();
        $this->block = $this->getRequestParameter( 'block' );
    }
    
    public function executeGrid()
    {
        $block = $this->getRequestParameter( 'block' );
        $page  = $this->getRequestParameter( 'page' );
        
        set_header_utf8();
        
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        $o_GridAction = new GridAction();
        $o_GridAction->setClassFind( new TR_TurnoFN() );
        
        //$o_GridAction->addMethodDefault( "IdCompania", myUser::getUser()->getIdBusiness() );
        //$o_GridAction->addMethodDefault( "IdSucursal", myUser::getUser()->getIdSucursal() );
        //$o_GridAction->addAssignFilter( myUser::getUser()->getIdBusiness() );
        //$o_GridAction->addAssignFilter( myUser::getUser()->getIdSucursal() );

        $o_GridAction->addConditionFilter( "TurnoDescripcion", TR_TurnoFN::TurnoDescripcion, "LIKE", "%%s%" );
        
        $o_GridAction->addOrder( "TurnoDescripcion", TR_TurnoFN::TurnoDescripcion);
        $o_GridAction->addOrder( "Estado", TR_TurnoFN::Estado );
        
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        $o_GridAction->addRowsToShow( "IdTurno", "TurnoDescripcion", "TurnoDescHora", "TurnoDescMin", "Estado" );
        
        //$o_GridAction->addInnerJoin( new MST_ClaseLineaFN(), "IdLinea", "Descripcion" );
        
        $o_GridAction->setNumberRecordsShow( 100 );
        
        $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();
        //pr( $a_ResultJson );
        echo json_encode( $a_ResultJson );

        return ViewResponse::NONE;   
    }
    
    public function executeAddedit()
    {
        LayoutTemplate::getInstance()->setUseBootstrap();
        $this->block      = $this->getRequestParameter( 'block' );
        $this->i_Id       = $this->getRequestParameter( 'i_Id' );
        $this->s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        
        $this->s_Titulo = "Nuevo Turno";

        $this->o_TR_TurnoBN = new TR_TurnoBN();
        if( $this->s_TipoProc == "upd" )
        {
            $this->s_Titulo = "Editar Turno";

            $o_TR_TurnoFN = new TR_TurnoFN();
            $this->o_TR_TurnoBN = $o_TR_TurnoFN->selectByPK( $this->i_Id );
        }
    }
    
    public function executeRequest()
    {
        $block      = $this->getRequestParameter( 'block' );
        $IdCompania = $this->getRequestParameter( 'IdCompania' );
        $IdUnidadProduccion = $this->getRequestParameter( 'IdUnidadProduccion' );
        $TipoProc   = $this->getRequestParameter( 'TipoProc' );
        
        switch ( $TipoProc )
        {
            case "LoadGrupo":
                $o_ALM_AlmacenGrupoFN = new ALM_AlmacenGrupoFN();
                $o_ALM_AlmacenGrupoFN->setIdCompania( $IdCompania );
                $a_Result  = $o_ALM_AlmacenGrupoFN->select();
                $s_NameId  = "getIdAlmacenGrupo";
                $s_NameDes = "getDescripcion";
            break;
            case "LoadSucursal":
                $o_GSS_SucursalFN = new GSS_SucursalFN();
                $o_GSS_SucursalFN->setIdCompania( $IdCompania );
                $a_Result  = $o_GSS_SucursalFN->select();
                $s_NameId  = "getIdSucursal";
                $s_NameDes = "getDescripcion";
            break;
        }
        foreach ( $a_Result as $i_Key => $o_ObjectBN )
        {
            $a_lst[$o_ObjectBN->$s_NameId()] = $o_ObjectBN->$s_NameDes();
        }
        echo json_encode( $a_lst );
        return ViewResponse::NONE;
    }
    
    public function executeSaveAddEdit()
    {
        $block      = $this->getRequestParameter( 'block' );
        $i_Id       = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        $TypeSub    = $this->getRequestParameter( 'TypeSub' );
        
        $TurnoDescripcion   = $this->getRequestParameter( 'TurnoDescripcion' );
        $TurnoDescHora      = $this->getRequestParameter( 'TurnoDescHora' );
        $TurnoDescMin       = $this->getRequestParameter( 'TurnoDescMin' );
        $Estado             = $this->getRequestParameter( 'Estado' );

        try 
        {
            myUser::getUser()->validar_session();

            $o_TR_TurnoDP = new TR_TurnoDP();
            $o_TR_TurnoDP->setTurnoDescripcion( $TurnoDescripcion );
            $o_TR_TurnoDP->setTurnoDescHora( (int) $TurnoDescHora );
            $o_TR_TurnoDP->setTurnoDescMin( (int) $TurnoDescMin );
            $o_TR_TurnoDP->setEstado( $Estado );
            $o_TR_TurnoDP->setIdCompania( myUser::getUser()->getIdBusiness() );
            $o_TR_TurnoDP->setIdSucursal( myUser::getUser()->getIdSucursal() );
            
            if( $s_TipoProc == "nvo" )
            {
                $IdTurno = TR_TurnoDP::recuperarId();
                $o_TR_TurnoDP->setIdTurno( $IdTurno );
                $o_TR_TurnoDP->setFechaCreacion( date( "Y-m-d H:i:s" ) );
                $o_TR_TurnoDP->setUsuarioCreacion( myUser::getUser()->getUserId() );
                $o_TR_TurnoDP->save();
            }
            else 
            {
                //UPDATE
                $o_TR_TurnoDP->setIdTurno( ( int ) $i_Id );
                $o_TR_TurnoDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
                $o_TR_TurnoDP->setUsuarioModificacion( myUser::getUser()->getUserId() );

                $o_TR_TurnoDP->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' );
        $this->s_Topico = "Almacen";
        $o_ALM_AlmacenMastFN = new ALM_AlmacenMastFN();
        $this->o_ObjectBN = $o_ALM_AlmacenMastFN->selectByPK( $i_Id );
    }
    
    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( GSS_CompaniaFN::IdCompania, true );
        $this->a_GSS_Compania = $o_GSS_CompaniaFN->select();

        $o_ALM_AlmacenMastFN = new ALM_AlmacenMastFN();
        $o_ALM_AlmacenMastBN = $o_ALM_AlmacenMastFN->selectByPK( $this->i_Id );
        //$s_IdUnidadProduccion = $o_ALM_AlmacenMastBN->getIdUnidadProduccion();  
        
        $o_ALM_AlmacenGrupoFN = new ALM_AlmacenGrupoFN();
        //$o_ALM_AlmacenGrupoFN->setIdCompania( myUser::getUser()->getIdBusiness() );
        $this->a_GrupoAlmacen  = $o_ALM_AlmacenGrupoFN->select();
        
        //SE RECUPERA SUCURSAL
        $o_GSS_SucursalFN = new GSS_SucursalFN();
        $o_GSS_SucursalFN->setIdCompania( $o_ALM_AlmacenMastBN->getIdCompania() );
        $this->a_GSS_Sucursal = $o_GSS_SucursalFN->select();
       
        $this->o_ALM_AlmacenMastBN = $o_ALM_AlmacenMastBN;
    }
    
    public function executeDeleteRow()
    {
        $block      = $this->getRequestParameter( 'block' );
        $i_Id       = $this->getRequestParameter( 'i_Id' );
        $s_TipoProc = $this->getRequestParameter( 's_TipoProc' );
        try 
        {
            $o_ALM_AlmacenMastDP = new ALM_AlmacenMastDP();
            $o_ALM_AlmacenMastDP->setIdCompania( myUser::getUser()->getIdBusiness() );
            $o_ALM_AlmacenMastDP->setIdAlmacen( $i_Id );
            $o_ALM_AlmacenMastDP->setEstado( "I" );
            $o_ALM_AlmacenMastDP->setFechaModificacion( date( "Y-m-d H:i:s" ) );
            $o_ALM_AlmacenMastDP->setUsuarioModificacion( myUser::getUser()->getUserId() );
            $b_Result = $o_ALM_AlmacenMastDP->update();
            //$o_ALM_AlmacenMastDP->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;
    }
}