<?php
/**
 * IMPORTANT NOTE
 * The code of this system is closed and a private proprietary of Flex Solutions.
 * A written authorization/license from Flex Solutions is required before using or modifying this code.
 * Email: sales@flexsolution.biz, Phone: +962795342585, Website: http://www.flexsolutions.biz
 */

 class DepartmentController extends Controller
     {

     /**
      * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
      * using two-column layout. See 'protected/views/layouts/column2.php'.
      */
     public $layout = '//layouts/column2';


     /**
      * @return array action filters
      */
     public function filters()
     {
         return array(
             'accessControl', // perform access control for CRUD operations
         );
     }


     /**
      * Specifies the access control rules.
      * This method is used by the 'accessControl' filter.
      * @return array access control rules
      */
     public function accessRules()
     {
         return array(
             array('allow', // allow all users to perform 'index' and 'view' actions
                 'actions' => array('create', 'update', 'delete'),
                 'roles' => array('System Admin', 'Super Admin'),
             ),
             array('allow', // allow all users to perform 'index' and 'view' actions
                 'actions' => array('index', 'view'),
                 'roles' => array('System Admin', 'Super Admin', 'Facility Admin'),
             ),
             array('deny', // deny all users
                 'users' => array('*'),
             ),
         );
     }


     /**
      * 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 Department;

         // Uncomment the following line if AJAX validation is needed
         // $this->performAjaxValidation($model);

         if (isset($_POST['Department']))
         {
             $model->attributes = $_POST['Department'];
             if ($model->save())
             {
                 Yii::app()->user->setFlash('success', Yii::t('default', 'The Department has been added successfully'));
                 $this->redirect(array('view', 'id' => $model->id));
             }
             else
             {
                 Yii::app()->user->setFlash('error', CHtml::errorSummary($model));
             }
         }

         $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['Department']))
         {
             $model->attributes = $_POST['Department'];
             if ($model->save())
             {
                 Yii::app()->user->setFlash('success', Yii::t('default', 'The Department has been updated successfully'));
                 $this->redirect(array('view', 'id' => $model->id));
             }
             else
             {
                 Yii::app()->user->setFlash('error', CHtml::errorSummary($model));
             }
         }

         $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)
     {
         $model = $this->loadModel($id);
         $success_msg = Yii::t('default', 'The Department ({n}) has been deleted successfully ', $model->name);
         $failer_msg = Yii::t('default', 'You cannot delete this element because it is referenced by other element');
         try
         {
             $model->delete();
             if ( ! isset($_GET['ajax']))
             { // Check Wether the data grid will be updated through AJAX or Not
                 Yii::app()->user->setFlash('success', $success_msg);
             }
             else
             {
                 Yii::app()->user->setFlash('success', $success_msg);
                 echo "<div class='flash-msg'>" . "<br>";
                 $this->widget('bootstrap.widgets.TbAlert');
                 echo "</div>";
             }
         }
         catch (CDbException $e)
         { // here the item is referenced by another item
             if ( ! isset($_GET['ajax']))
             {
                 Yii::app()->user->setFlash('error', $failer_msg);
             }
             else
             {
                 Yii::app()->user->setFlash('error', $failer_msg);
                 echo "<div class='flash-msg'>" . "<br>";
                 $this->widget('bootstrap.widgets.TbAlert');
                 echo "</div>";
             }
         }
     }


     /**
      * Lists all models.
      */
     public function actionIndex()
     {
         $model = new Department('search');
         $model->unsetAttributes();  // clear any default values
         if (isset($_GET['Department']))
             $model->attributes = $_GET['Department'];

         $this->render('index', 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
      */
     public function loadModel($id)
     {
         $model = Department::model()->findByPk($id);
         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'] === 'department-form')
         {
             echo CActiveForm::validate($model);
             Yii::app()->end();
         }
     }
     }

