<?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
 */
 
/**
 * This is the model class for table "v_asset_detailed_dashboard".
 *
 * The followings are the available columns in table 'v_asset_detailed_dashboard':
 * @property integer $id
 * @property string $date
 * @property integer $asset_id
 * @property integer $type_of_asset_id
 * @property string $expiry_date
 * @property string $status
 * @property integer $grace_period
 * @property integer $days_count
 * @property integer $segment_id
 * @property string $segment_name
 * @property string $serial_number
 * @property string $asset_number
 * @property string $part_number
 * @property string $description
 * @property string $asset_status
 * @property string $plate_number
 * @property string $chassis_number
 * @property string $radioactive_license_number
 */
class VAssetDetailedDashboard extends TidansActiveRecord {

    public $vehicle_book_expiry_date,
    $radioactive_license_expiry_date,
    $vehicle_book_status,
    $radioactive_license_status;

    /**
     * @return string the associated database table name
     */
    public function tableName() {
	return 'v_asset_detailed_dashboard';
    }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules() {
	// NOTE: you should only define rules for those attributes that
	// will receive user inputs.
	return array(
	    array('date, asset_id, type_of_asset_id, segment_name, serial_number, asset_number, part_number, asset_status', 'required'),
	    array('id, asset_id, type_of_asset_id, grace_period, days_count, segment_id', 'numerical', 'integerOnly' => true),
	    array('status', 'length', 'max' => 7),
	    array('segment_name', 'length', 'max' => 500),
	    array('serial_number, asset_number, part_number, chassis_number', 'length', 'max' => 40),
	    array('description', 'length', 'max' => 200),
	    array('asset_status, plate_number, radioactive_license_number', 'length', 'max' => 10),
	    array('expiry_date', 'safe'),
	    // The following rule is used by search().
	    // @todo Please remove those attributes that should not be searched.
	    array('id, date, asset_id, type_of_asset_id, expiry_date, status, grace_period, days_count, segment_id, segment_name, 
		serial_number, asset_number, part_number, description, asset_status, plate_number, chassis_number, radioactive_license_number,
		 type_of_asset_name,po_number,tid_no,invoice_number,vehicle_book_expiry_date,radioactive_license_expiry_date,vehicle_book_status,radioactive_license_status', 'safe', 'on' => 'search'),
	);
    }

    /**
     * @return array relational rules.
     */
    public function relations() {
	// NOTE: you may need to adjust the relation name and the related
	// class name for the relations automatically generated below.
	return array(
	);
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
	return array(
	    'id' => 'ID',
	    'date' => 'Date',
	    'asset_id' => 'Asset',
	    'type_of_asset_id' => 'Type Of Asset',
	    'expiry_date' => 'Expiry Date',
	    'status' => 'Status',
	    'grace_period' => 'Days to Expire',
	    'days_count' => 'Days Count',
	    'segment_id' => 'Segment',
	    'segment_name' => 'Segment Name',
	    'serial_number' => 'Serial Number',
	    'asset_number' => 'Asset Number',
	    'part_number' => 'Part Number',
	    'description' => 'Description',
	    'asset_status' => 'Asset Status',
	    'plate_number' => 'Plate Number',
	    'chassis_number' => 'Chassis Number',
	    'radioactive_license_number' => 'Radioactive License Number',
	    'vehicle_book_expiry_date' => Yii::t('default', 'Vehicle Book Expiry Date'),
	    'radioactive_license_expiry_date' => Yii::t('default', 'Radioactive License Expiry Date'),
	    'vehicle_book_status' => Yii::t('default', 'Vehicle Book Status'),
	    'radioactive_license_status' => Yii::t('default', 'Radioactive License Status'),
	    'po_number' => Yii::t('default', 'PO Number'),
	    'tid_no' => Yii::t('default', 'TID No'),
	    'invoice_number' => Yii::t('default', 'Invoice Number'),
	    'segment_name' => Yii::t('default', 'Segment'),
	    'po_segment_code' => Yii::t('default', 'PO Segment Code'),
	    'type_of_asset_name' => Yii::t('default', 'Type of Asset'),
	);
    }

    /**
     * Retrieves a list of models based on the current search/filter conditions.
     *
     * Typical usecase:
     * - Initialize the model fields with values from filter form.
     * - Execute this method to get CActiveDataProvider instance which will filter
     * models according to data in model fields.
     * - Pass data provider to CGridView, CListView or any similar widget.
     *
     * @return CActiveDataProvider the data provider that can return the models
     * based on the search/filter conditions.
     */
    public function search($invoice_id = null, $type_of_asset= null, $segment= null, $status= null, $date= null) {
	// @todo Please modify the following code to remove attributes that should not be searched.

	$criteria = $this->ModelCriteria($invoice_id, $type_of_asset, $segment, $status, $date);


	$pageSize = $this->yiiparam('pageSize');
	return new CActiveDataProvider($this, array(
	    'pagination' => array('pageSize' => $pageSize,),
	    'criteria' => $criteria,
	));
    }

    /**
     * Get the query used to get the current model information to be used in export to excel action
     * @return CDbCriteria the criteria used to get the current model information
     */
    public function ModelCriteria($invoice_id = null, $type_of_asset, $segment, $status, $date) {
	// @todo Please modify the following code to remove attributes that should not be searched.

	$criteria = new CDbCriteria;


	$criteria->compare('date', $this->date, true);
	$criteria->compare('asset_id', $this->asset_id);
	$criteria->compare('type_of_asset_name', $this->type_of_asset_name, true);
	$criteria->compare('expiry_date', $this->expiry_date, true);
	$criteria->compare('status', $this->status, true);
	$criteria->compare('grace_period', $this->grace_period);
	$criteria->compare('days_count', $this->days_count);
	$criteria->compare('segment_id', $this->segment_id);
	$criteria->compare('segment_name', $this->segment_name, true);
	$criteria->compare('serial_number', $this->serial_number, true);
	$criteria->compare('asset_number', $this->asset_number, true);
	$criteria->compare('part_number', $this->part_number, true);
	$criteria->compare('description', $this->description, true);
	$criteria->compare('asset_status', $this->asset_status, true);
	$criteria->compare('plate_number', $this->plate_number, true);
	$criteria->compare('chassis_number', $this->chassis_number, true);
	$criteria->compare('radioactive_license_number', $this->radioactive_license_number, true);
	$criteria->compare('tid_no', $this->tid_no, true);
	$criteria->compare('invoice_number', $this->invoice_number, true);
	$criteria->compare('po_number', $this->po_number, true);

//	if (($this->vehicle_book_expiry_date != null && $this->vehicle_book_expiry_date != '') || ($this->vehicle_book_status != null && $this->vehicle_book_status != '')) {
//	    $vehicle = Setting::getVehicleTypeOfAsset();
//	    if ($vehicle != '')
//		$criteria->addCondition('type_of_asset_id=' . $vehicle);
//	    $criteria->compare('expiry_date', $this->vehicle_book_expiry_date, true);
//	    $criteria->compare('status', $this->vehicle_book_status, true);
//	}
//
//	if (($this->radioactive_license_expiry_date != null && $this->radioactive_license_expiry_date != '') || ($this->radioactive_license_status != null && $this->radioactive_license_status != '')) {
//	    $radioactive = Setting::getRadioActiveTypeOfAsset();
//	    if ($radioactive != '')
//		$criteria->addCondition('type_of_asset_id=' . $radioactive);
//	    $criteria->compare('expiry_date', $this->radioactive_license_expiry_date, true);
//	    $criteria->compare('status', $this->radioactive_license_status, true);
//	}


	if ($type_of_asset != null)
	    $criteria->compare('type_of_asset_id', $type_of_asset);

	if ($segment != 'Total' && $segment != 'Multi Segment' && $segment != 'Non Segment')
	    $criteria->compare('segment_name', $segment);
	elseif ($segment == 'Multi Segment')
	    $criteria->addCondition("segment_name like '%,%'");
	elseif ($segment == 'Non Segment')
	    $criteria->addCondition("t.segment_name is null");

	if ($status != null) {
	    if ($status != 'Total')
		if ($status == 'Fine' || $status == 'Days Count') {
		    $criteria->compare('status', 'Expired');
		    $criteria->addCondition("asset_status != 'Exported'");
		} else
		if ($status == 'Expired') {
		    $criteria->compare('status', $status);
		    $criteria->addCondition("asset_status != 'Exported'");
		}
		else
		    $criteria->compare('status', $status);
	}

	if ($date != null)
	    $criteria->addCondition("date ='" . $date . "'");

	return $criteria;
    }

    /**
     * Returns the static model of the specified AR class.
     * Please note that you should have this exact method in all your CActiveRecord descendants!
     * @param string $className active record class name.
     * @return VAssetDetailedDashboard the static model class
     */
    public static function model($className=__CLASS__) {
	return parent::model($className);
    }

}
