<?php

class GateController extends Controller
{

  public function filters()
  {
    return array (
        array (
            'application.filters.SyslogFilter' 
        ) 
    );
  }

  /**
   * Displays a particular model.
   *
   * @param integer $id
   *          the ID of the model to be displayed
   */
  public function actionView($id)
  {
    $this->render ( 'view', array (
        'model' => $this->loadModel ( $id ) 
    ) );
  }

  /**
   * Creates a new model.
   * If creation is successful, the browser will be redirected to the 'view' page.
   */
  public function actionCreate()
  {
    $model = new Gate ();
    
    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);
    
    if (isset ( $_POST ['Gate'] ))
    {
      $model->setAttributes ( $_POST ['Gate'], false );
      if ($model->save ())
        $this->redirect ( array (
            'view',
            'id' => $model->ID 
        ) );
    }
    else
    {
      $model->Enable = true;
      $model->Type = Gate::GM_PASS;
      $model->GateType = Gate::GT_T_EXSPEED;
      $model->speed_limit = 50;
    }
    
    $this->render ( 'create', array (
        'model' => $model 
    ) );
  }

  /**
   * Updates a particular model.
   * If update is successful, the browser will be redirected to the 'view' page.
   *
   * @param integer $id
   *          the ID of the model to be updated
   */
  public function actionUpdate($id)
  {
    $model = $this->loadModel ( $id );
    
    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);
    
    if (isset ( $_POST ['Gate'] ))
    {
      $model->setAttributes ( $_POST ['Gate'], false );
      if ($model->save ())
        $this->redirect ( array (
            'view',
            'id' => $model->ID 
        ) );
    }
    
    $this->render ( 'update', array (
        'model' => $model 
    ) );
  }

  /**
   * Deletes a particular model.
   * If deletion is successful, the browser will be redirected to the 'admin' page.
   *
   * @param integer $id
   *          the ID of the model to be deleted
   */
  public function actionDelete($id)
  {
    // if(Yii::app()->request->isPostRequest)
    {
      // we only allow deletion via POST request
      $this->loadModel ( $id )
        ->delete ();
      
      // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
      if (! isset ( $_GET ['ajax'] ))
        $this->redirect ( isset ( $_POST ['returnUrl'] ) ? $_POST ['returnUrl'] : array (
            'index' 
        ) );
    }
    // else
    // throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
  }

  /**
   * Lists all models.
   */
  public function actionIndex()
  {
    $dataProvider = new CActiveDataProvider ( 'Gate' );
    $this->render ( 'index', array (
        'dataProvider' => $dataProvider 
    ) );
  }

  /**
   * Manages all models.
   */
  public function actionAdmin()
  {
    $model = new Gate ( 'search' );
    $model->unsetAttributes (); // clear any default values
    if (isset ( $_GET ['Gate'] ))
      $model->attributes = $_GET ['Gate'];
    
    $this->render ( 'admin', array (
        'model' => $model 
    ) );
  }

  /**
   * Returns the data model based on the primary key given in the GET variable.
   * If the data model is not found, an HTTP exception will be raised.
   *
   * @param
   *          integer the ID of the model to be loaded
   * @return Gate
   */
  public function loadModel($id)
  {
    $model = Gate::model ()->findByPk ( $id );
    if ($model === null)
      throw new CHttpException ( 404, 'The requested page does not exist.' );
    return $model;
  }

  /**
   * Returns the data model based on the primary key given in the GET variable.
   * If the data model is not found, an HTTP exception will be raised.
   *
   * @param
   *          integer the Gate ID of the model to be loaded
   * @return Gate
   */
  public function loadModelByGate($gate)
  {
    $model = Gate::model ()->find ( 'Gate=:gt', array (
        ':gt' => $gate 
    ) );
    if ($model === null)
      throw new CHttpException ( 404, 'The requested page does not exist.' );
    return $model;
  }

  /**
   * Performs the AJAX validation.
   *
   * @param
   *          CModel the model to be validated
   */
  protected function performAjaxValidation($model)
  {
    if (isset ( $_POST ['ajax'] ) && $_POST ['ajax'] === 'gate-form')
    {
      echo CActiveForm::validate ( $model );
      Yii::app ()->end ();
    }
  }
}
