Your IP : 216.73.216.79


Current Path : /var/www/html/school/backend/controllers/
Upload File :
Current File : /var/www/html/school/backend/controllers/ReportTableController.php

<?php

namespace backend\controllers;

use Yii;
use backend\models\ReportTable;
use backend\models\ReportTableSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\data\SqlDataProvider;

/**
 * ReportTableController implements the CRUD actions for ReportTable model.
 */
class ReportTableController extends Controller
{
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }

    /**
     * Lists all ReportTable models.
     * @return mixed
     */
    public function actionIndex()
    {
        $searchModel = new ReportTableSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

    /**
     * Displays a single ReportTable model.
     * @param integer $id
     * @return mixed
     */
    public function actionView($id)
    {
        $model = ReportTable::find()->where( [ 'id_report_table' => $id] )->one();
        
        
        if($model->sql_statement==""){
        $getDb=Yii::$app->db->schema->getTableNames(); 

        $dbSelect = $getDb[$model->table_name];

        $getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames(); 

        $model->column_id = explode(',',$model->column_id);
        }
        //print_r($model->column_id);

        //echo $dbTable = $getTable[$model->column_id];
        //print_r($dbSelect);

        if($model->sql_statement==""){
        foreach ($model->column_id as $key => $value) {
                              
                            $dbTable[] =  $getTable[$value];
                            
     
                        }
        }else{


             // $data =strrchr($model->sql_statement,"FROM");
             // $data0 =str_replace('FROM',"",$data);
             // echo $data1=str_replace('WHERE',"",$data0);


                function getBetween($content,$start,$end){
                    
                    $r = explode($start, $content);

                    if (isset($r[1])){
                        $r = explode($end, $r[1]);
                        return $r[0];
                    }
                    return '';
                }

                function getBetween1($content,$start1,$end1){
                    
                    $r = explode($start1, $content);

                    if (isset($r[1])){
                        $r = explode($end1, $r[1]);
                        return $r[0];
                    }
                    return '';
                }


            $start="SELECT";
            $end ="FROM";
            $getColumn=getBetween($model->sql_statement,$start,$end);
            
            $start1="FROM";
            $end1 ="WHERE";
            $getTbl=getBetween1($model->sql_statement,$start1,$end1);

            // echo $getTbl;

             $dbTable=Yii::$app->db->createCommand("SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name IN ('".$getColumn."') AND table_name = '".$getTbl."'")->queryColumn();
            //$dbTable=Yii::$app->db->getTableSchema("SELECT username FROM databank_1011")->getColumnNames();
            
        }
               //echo $model->sql_statement;
        //$totalCount = Yii::$app->db->createCommand('SELECT COUNT(*) FROM '.$dbSelect)->queryScalar();

        if($model->sql_statement==""){

        $dataProvider1 = new SqlDataProvider([
                        'sql' => 'SELECT '.$model->column_name.' FROM '.$dbSelect,
                        // 'totalCount' => $totalCount,                   
                        // 'pagination' => [
                        //     'pageSize' => 8,
                        // ],
                    ]);
        }else{

            $dataProvider1 = new SqlDataProvider([
                        'sql' => $model->sql_statement,
                        // 'totalCount' => $totalCount,                   
                        // 'pagination' => [
                        //     'pageSize' => 8,
                        // ],
                    ]);
            //echo '<pre>';print_r($dataProvider1);echo '</pre>';exit;
            
        }

        //echo '<pre>';print_r($dbTable);echo '</pre>';exit;
        
        return $this->render('view', [
            'model' => $this->findModel($id),
            'dataProvider' => $dataProvider1,
            'dbTable' => $dbTable,
            
        ]);
    }

    //echo $dataProvider1->getModels();
         //echo '<pre>';print_r($dataProvider1->getTableSchema($dbSelect));echo '</pre>';exit;

    /**
     * Creates a new ReportTable model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     * @return mixed
     */
    public function actionCreate()
    {
        $model = new ReportTable();

        $model->id_report_meta=Yii::$app->request->get('id_report_meta');
        $model->title_report_table=Yii::$app->request->get('title_report_table');
        $model->table_name=Yii::$app->request->get('table_name');
        $model->sql_statement=Yii::$app->request->get('sql_statement');

        $test=str_replace('"',"",$model->sql_statement);
        // $data =strrchr($model->sql_statement,"=");
        // $data0 =str_replace('=',"",$data);
        // $data1=str_replace('"',"",$data0);
        // $table=str_replace("'","",$data1);

        if ($model->load(Yii::$app->request->post()) ) {

           if($model->sql_statement==""){
            $getDb=Yii::$app->db->schema->getTableNames(); 
            $dbSelect = $getDb[$model->table_name];

            $getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames(); 
            //$dbTable = $getTable[$model->column_name];
           }

            //print_r($model->column_name);] 

                 foreach ($model->column_id as $key => $value) {
                              
                             $dbTable[] =  $getTable[$value];
     
                        }

           
                    
                       

                    $model->column_id = implode(',',$model->column_id); 
                    $model->column_name = implode(',',$dbTable);
                    
                    date_default_timezone_set("Asia/Kuala_Lumpur");
                    $model->created_by = Yii::$app->user->identity->username;
                    $model->created_at = date("Y-m-d H:i:s");
                    
                    $model->save();
            
            

             return $this->redirect(['view', 'id' => $model->id_report_table]);
        
        } else {
            
            
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

    /**
     * Updates an existing ReportTable model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id
     * @return mixed
     */
    public function actionUpdate($id)
    {

        $model = $this->findModel($id);
        $model->column_id = explode(',',$model->column_id);

        

        if ($model->load(Yii::$app->request->post()) ) {

            if($model->sql_statement==""){
            $getDb=Yii::$app->db->schema->getTableNames(); 
            $dbSelect = $getDb[$model->table_name];

            $getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames(); 
            //$dbTable = $getTable[$model->column_name];
            }
            //print_r($model->column_name);

                     
                    
                        foreach ($model->column_id as $key => $value) {
                              
                             $dbTable[] =  $getTable[$value];
     
                        }

                    $model->column_id = implode(',',$model->column_id); 
                    $model->column_name = implode(',',$dbTable);
            date_default_timezone_set("Asia/Kuala_Lumpur");
            $model->updated_by=Yii::$app->user->identity->username;
            $model->updated_at=date("Y-m-d H:i:s");
            $model->save();
            
            return $this->redirect(['view', 'id' => $model->id_report_table]);

        } else {

            
            return $this->render('update', [
                'model' => $model,
                
            ]);
        }
    }

    /**
     * Deletes an existing ReportTable model.
     * If deletion is successful, the browser will be redirected to the 'index' page.
     * @param integer $id
     * @return mixed
     */
    public function actionDelete($id)
    {
        $this->findModel($id)->delete();

        return $this->redirect(['index']);
    }

    /**
     * Finds the ReportTable model based on its primary key value.
     * If the model is not found, a 404 HTTP exception will be thrown.
     * @param integer $id
     * @return ReportTable the loaded model
     * @throws NotFoundHttpException if the model cannot be found
     */
    protected function findModel($id)
    {
        if (($model = ReportTable::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }

    

    public function actionView1($id)
        
    {
        $this->layout = 'empty';

        $model = ReportTable::find()->where( [ 'id_report_table' => $id] )->one();
        
        
        if($model->sql_statement==""){
        $getDb=Yii::$app->db->schema->getTableNames(); 

        $dbSelect = $getDb[$model->table_name];

        $getTable=Yii::$app->db->getTableSchema($dbSelect)->getColumnNames(); 

        $model->column_id = explode(',',$model->column_id);
        }
        //print_r($model->column_id);

        //echo $dbTable = $getTable[$model->column_id];
        //print_r($dbSelect);

        if($model->sql_statement==""){
        foreach ($model->column_id as $key => $value) {
                              
                            $dbTable[] =  $getTable[$value];
                            
     
                        }
        }else{


             // $data =strrchr($model->sql_statement,"FROM");
             // $data0 =str_replace('FROM',"",$data);
             // echo $data1=str_replace('WHERE',"",$data0);


                function getBetween($content,$start,$end){
                    
                    $r = explode($start, $content);

                    if (isset($r[1])){
                        $r = explode($end, $r[1]);
                        return $r[0];
                    }
                    return '';
                }

                function getBetween1($content,$start1,$end1){
                    
                    $r = explode($start1, $content);

                    if (isset($r[1])){
                        $r = explode($end1, $r[1]);
                        return $r[0];
                    }
                    return '';
                }


            $start="SELECT";
            $end ="FROM";
            $getColumn=getBetween($model->sql_statement,$start,$end);
            
            $start1="FROM";
            $end1 ="WHERE";
            $getTbl=getBetween1($model->sql_statement,$start1,$end1);

            // echo $getTbl;

             $dbTable=Yii::$app->db->createCommand("SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE column_name IN ('".$getColumn."') AND table_name = '".$getTbl."'")->queryColumn();
            //$dbTable=Yii::$app->db->getTableSchema("SELECT username FROM databank_1011")->getColumnNames();
            
        }
               //echo $model->sql_statement;
        //$totalCount = Yii::$app->db->createCommand('SELECT COUNT(*) FROM '.$dbSelect)->queryScalar();

        if($model->sql_statement==""){

        $dataProvider1 = new SqlDataProvider([
                        'sql' => 'SELECT '.$model->column_name.' FROM '.$dbSelect,
                        // 'totalCount' => $totalCount,                   
                        // 'pagination' => [
                        //     'pageSize' => 8,
                        // ],
                    ]);
        }else{

            $dataProvider1 = new SqlDataProvider([
                        'sql' => $model->sql_statement,
                        // 'totalCount' => $totalCount,                   
                        // 'pagination' => [
                        //     'pageSize' => 8,
                        // ],
                    ]);
            //echo '<pre>';print_r($dataProvider1);echo '</pre>';exit;
            
        }

        //echo '<pre>';print_r($dbTable);echo '</pre>';exit;
        
        return $this->render('view1', [
            'model' => $this->findModel($id),
            'dataProvider' => $dataProvider1,
            'dbTable' => $dbTable,
            
        ]);
    }}