<?php

/**
 * This is the model class for table "bill".
 *
 * The followings are the available columns in table 'bill':
 * @property integer $id
 * @property string $code
 * @property integer $mid
 * @property double $lati
 * @property double $longi
 * @property string $pay_date
 * @property string $send_date
 * @property string $status
 * @property integer $idpay
 * @property string $detail
 * @property string $created
 * @property integer $statusAll
 */
class Bill extends CActiveRecord
{
	/**
	 * @return string the associated database table name
	 */
	public function tableName()
	{
		return 'bill';
	}

	/**
	 * @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('mid, created', 'required'),
//			array('mid, idpay, statusAll', 'numerical', 'integerOnly'=>true),
//			array('lati, longi', 'numerical'),
//			array('code', 'length', 'max'=>50),
//			array('status', 'length', 'max'=>4),
//			array('pay_date, send_date, detail', 'safe'),
//			// The following rule is used by search().
//			// @todo Please remove those attributes that should not be searched.
//			array('id, code, mid, lati, longi, pay_date, send_date, status, idpay, detail, created, statusAll', '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(
            'member' => array(self::BELONGS_TO, 'member', 'mid'),
            'bankfood' => array(self::BELONGS_TO, 'bankfood', 'detail'),
            'orders' => array(self::BELONGS_TO, 'orders', 'id'),
             'payment' => array(self::BELONGS_TO, 'payment', 'idpay')
        );
    }

    /**
	 * @return array customized attribute labels (name=>label)
	 */
	public function attributeLabels()
	{
		return array(
			'id' => 'ID',
			'code' => 'Code',
			'mid' => 'Mid',
			'lati' => 'Lati',
			'longi' => 'Longi',
			'pay_date' => 'Pay Date',
			'send_date' => 'Send Date',
			'status' => 'Status',
			'idpay' => 'Idpay',
			'detail' => 'Detail',
			'created' => 'Created',
			'statusAll' => 'Status All',
		);
	}

	/**
	 * 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()
	{
		// @todo Please modify the following code to remove attributes that should not be searched.

		$criteria=new CDbCriteria;

		$criteria->compare('id',$this->id);
		$criteria->compare('code',$this->code,true);
		$criteria->compare('mid',$this->mid);
		$criteria->compare('lati',$this->lati);
		$criteria->compare('longi',$this->longi);
		$criteria->compare('pay_date',$this->pay_date,true);
		$criteria->compare('send_date',$this->send_date,true);
		$criteria->compare('status',$this->status,true);
		$criteria->compare('idpay',$this->idpay);
		$criteria->compare('detail',$this->detail,true);
		$criteria->compare('created',$this->created,true);
		$criteria->compare('statusAll',$this->statusAll);

		return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
		));
	}
        
        
        static function getStatus($data) {
        if ($data == 'wait') {
            return 'รอ';
        } else if ($data == 'pay') {
            return 'จ่าย';
        } else {
            return 'ส่ง';
        }
    }
    
      static function getStatusPay($data) {
        if ($data != 'pay') {
            return "รอชำระเงิน";//CHtml::link("ยังไม่จ่ายเงิน",array("Site/payForm","id"=>$data->id,"idbank"=>$data->detail));
       
        } else {
            return 'ชำระเงินแล้ว';
        } 
    }
static function getStatusPayAdmin($data) {
        if ($data == null) {
            return "";//CHtml::link("ยังไม่จ่ายเงิน",array("Site/payForm","id"=>$data->id,"idbank"=>$data->detail));
       
        } else {
            return "ชำระเงินแล้ว";
        } 
    }
    
     static function getStatusAll($data) {
        if ($data == '0') {
            return 'รอ';
        } else if ($data == '1') {
            return 'กำลังทำอหาร';
        } else if ($data == '2') {
            return 'กำลังส่ง';
        }else{
            return 'เสร็จสิ้น';
        }
    }
    
    static function getStatusimg($data) {
        if ($data == '0') {
            return "<br><b>รอรับรายการ".CHtml::image('images/icon/cheff.png',"",array("width"=>80));
        } else if ($data == '1') {
            return "<br><b>กำลังทำอาหาร".CHtml::image('images/icon/cooking3.png',"",array("width"=>80));
        } else {
            return "<br><b>กำลังจัดส่ง".CHtml::image('images/icon/delivery_food.png',"",array("width"=>80));
        }
    }
    
    //ค้นหารายการซ่อมกรองตาม วัน เดือน ปี ได้
    public function searchFood($year,$month){
        $year-543;
        $criteria=new CDbCriteria();
        $criteria->addCondition("YEAR(created) = $year");
         $criteria->addCondition("MONTH(created) = $month");
         return new CActiveDataProvider($this,array(
             "criteria"=>$criteria,
             "pagination"=>false
             
             ));
    }

    public function countPay($month, $year) {
        $criteria = new CDbCriteria();
        $criteria->addCondition("YEAR(created) = $year");
        $criteria->addCondition("MONTH(created) = $month");
        $criteria->addCondition("status IN ('pay')");
        
        return $this->count($criteria);
    }
    
     public function countComplete($month, $year) {
        $criteria = new CDbCriteria();
        $criteria->addCondition("YEAR(created) = $year");
        $criteria->addCondition("MONTH(created) = $month");
        $criteria->addCondition("statusAll IN ('3')");
        
        return $this->count($criteria);
    }
    
     public function countWait($month, $year) {
        $criteria = new CDbCriteria();
        $criteria->addCondition("YEAR(created) = $year");
        $criteria->addCondition("MONTH(created) = $month");
        $criteria->addCondition("statusAll NOT IN ('3','2','1')");
        
        return $this->count($criteria);
    }
    
      public function countMoney($month, $year) {
        $sum=  Yii::app()->db->createCommand()
                ->select('SUM( food.price * orders.qty ) AS my_sum')
                ->from('orders')
                ->join('bill','orders.bill_id=bill.id')
                ->join('food','orders.food_id=food.id')
                        
                ->where('YEAR( bill.created )='.$year.' AND MONTH(bill.created)='.$month)
                ->queryRow();
        return $sum['my_sum'];
    }
    
    ///******************** ค้นหาตามช่วง เวลา วันเริมต้นถึงวันที่สิ้นสุด ******/////
    public function countCompleteDate($dateStart, $dateEnd) {
       $criteria = new CDbCriteria();
        $criteria->addCondition("created >= '$dateStart'");
        $criteria->addCondition("created <= '$dateEnd'");
        $criteria->addCondition("statusAll  IN ('3')");
        
        return $this->count($criteria);
    }
    
    public function searchFoodDate($dateStart,$dateEnd){
       $criteria = new CDbCriteria();
        $criteria->condition = 'created >= :dateStart and created <= :dateEnd';
        $criteria->params = array(
            'dateStart' => $dateStart,'dateEnd'=>$dateEnd);
         return new CActiveDataProvider($this,array(
             "criteria"=>$criteria,
             "pagination"=>false
             
             ));
    }
    
     public function countPayDate($dateStart, $dateEnd) {
        $criteria = new CDbCriteria();
        $criteria->addCondition("created >= '$dateStart'");
        $criteria->addCondition("created <= '$dateEnd'");
        $criteria->addCondition("status IN ('pay')");
        
        return $this->count($criteria);
    }
    public function countWaitDate($dateStart, $dateEnd) {
        $criteria = new CDbCriteria();
        $criteria->addCondition("created >= '$dateStart'");
        $criteria->addCondition("created <= '$dateEnd'");
        $criteria->addCondition("statusAll IN ('0')");
        
        return $this->count($criteria);
    }
    
     public function countWaitDate2($dateStart, $dateEnd) {
        $criteria = new CDbCriteria();
        $criteria->addCondition("created >= '$dateStart'");
        $criteria->addCondition("created <= '$dateEnd'");
        $criteria->addCondition("statusAll IN ('1')");
        
        return $this->count($criteria);
    }
    
     public function countMoneyDate($dateStart, $dateEnd) {
        $sum=  Yii::app()->db->createCommand()
                ->select('SUM( food.price * orders.qty ) AS my_sum')
                ->from('orders')
                ->join('bill','orders.bill_id=bill.id')
                ->join('food','orders.food_id=food.id')
                        
                ->where(' bill.created >='."'$dateStart'".' AND bill.created <='."'$dateEnd'")
                ->queryRow();
        return $sum['my_sum'];
    }
    
     public function countSumAll() {
        $sum=  Yii::app()->db->createCommand()
                ->select('SUM( food.price * orders.qty ) AS my_sum')
                ->from('orders')
                ->join('bill','orders.bill_id=bill.id')
                ->join('food','orders.food_id=food.id')
                        
                ->where('statusAll=3')
                ->queryRow();
        return $sum['my_sum'];
    }
    
    public function countSumWait() {
        $criteria = new CDbCriteria();
        $criteria->addCondition("statusAll IN ('0','1','2','3')");
        
        return $this->count($criteria);
    }
    
    public function countSumMemberWait() {
        $criteria = new CDbCriteria();
        $criteria->addCondition("statusAll IN ('0')");
        
        return $this->count($criteria);
    }
  
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}
}