public function actionStep3()
 {
     if (isFrontUserLoggedIn()) {
         $visit_code = Yii::app()->session['visit_code'];
         $visit_model = Visits::model()->find(array('condition' => 'visit_code = "' . $visit_code . '" '));
         $step3_model = new Step3();
         if (isset($_POST['Step3'])) {
             $step3_model->attributes = $_POST['Step3'];
             if ($step3_model->validate()) {
                 $donation_model = new Donation();
                 $donation_model->user_id = Yii::app()->session['user_id'];
                 $donation_model->visit_id = $visit_model->id;
                 $donation_model->mobile = '123456789';
                 $donation_model->solicitor_id = $visit_model->solicitor->id;
                 $donation_model->amount = $step3_model->amount;
                 $donation_model->mode = 'web';
                 $donation_model->short_note = $step3_model->message;
                 $donation_model->payment_status = 'pending';
                 $donation_model->reference_number = getToken(8);
                 $donation_model->validate();
                 $donation_model->save();
                 // calculating the debit amount to be inserted in the user_trans table
                 $user_id = Yii::app()->session['user_id'];
                 $user_balance = Users::model()->getUserBalance($user_id);
                 $user_model = Users::model()->findByPk($user_id);
                 $credit_limits = $user_model->credit_limits;
                 $actual_don_amt = $step3_model->amount;
                 //                    if ($actual_don_amt > $user_balance) {
                 //                        // deducting the user credit
                 //                        if ($user_balance > 0) {
                 //                            $from_user_credit = $actual_don_amt - $user_balance;
                 //                        } else {
                 //                            $from_user_credit = $actual_don_amt;
                 //                        }
                 //                        $final_user_credit = $credit_limits - $from_user_credit;
                 //                        $user_model->credit_limits = $final_user_credit;
                 //                        $user_model->validate();
                 //                        $user_model->save();
                 //                    }
                 // for storing in the user_trans table
                 $trans_model = new UserTrans();
                 $trans_model->tran_type = 'DONATION';
                 $trans_model->user_id = $donation_model->user_id;
                 $trans_model->debit = $actual_don_amt;
                 $trans_model->donation_id = $donation_model->id;
                 $trans_model->save();
                 unset(Yii::app()->session['visit_code']);
                 $this->redirect(array("/user/default/accountSummary"));
             }
         }
         $this->render('step3', array('visit_model' => $visit_model, 'step3_model' => $step3_model));
     } else {
         $this->redirect(array("/user"));
     }
 }
    public function actionExport() {
        $from_date = Yii::app()->session['form_date'];
        $to_date = Yii::app()->session['to_date'];
        $activity_type = Yii::app()->session['activity_type'];
        $user_id = Yii::app()->session['user_id'];
        if (!empty($from_date)) {
            $criteria = new CDbCriteria;
            if ($activity_type == 'ALL') {
                $criteria->condition = "user_id= '$user_id' AND DATE(date_entered) >= '$from_date' AND  DATE(date_entered)<= '$to_date' ";
            } else {
                $criteria->condition = "user_id= '$user_id' AND DATE(date_entered) >= '$from_date' AND  DATE(date_entered)<= '$to_date' AND tran_type = '$activity_type' ";
            }
            $criteria->order = 'date_entered DESC';
            $user_trans = UserTrans::model()->findAll($criteria);
        } else {
            $user_id = Yii::app()->session['user_id'];
            $criteria = new CDbCriteria;
            $criteria->condition = "user_id= '$user_id' ";
            $criteria->order = 'date_entered DESC';
            $user_trans = UserTrans::model()->findAll($criteria);
        }

        $mPDF1 = Yii::app()->ePdf->mpdf();
        $mPDF1->WriteHTML($this->renderPartial('export_activity', array('user_trans' => $user_trans), true));
        $mPDF1->Output('activity.pdf', 'D');
    }
 public function actionAccountSummary() {
     $user_id = Yii::app()->session['user_id'];
     $user_balance = Users::model()->getUserBalance($user_id);
     $user_model = Users::model()->findByPk($user_id);
     $criteria = new CDbCriteria;
     $criteria->condition = 'user_id=:user_id';
     $criteria->order = 'date_entered DESC';
     $criteria->params = array(':user_id' => $user_id);
     $user_trans = UserTrans::model()->findAll($criteria);
     $this->render('account_summary', array('user_trans' => $user_trans, 'user_model' => $user_model, 'user_balance' => $user_balance));
 }
 /**
  * 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);
     $users_lists = BaseModel::getAll('Users');
     $users = array();
     foreach ($users_lists as $user) {
         $users[$user->id] = $user->first_name . ' ' . $user->last_name . '(' . $user->username . ')';
     }
     // $users = CHtml::listData(BaseModel::getAll('Users'),'id','username');
     $lists = BaseModel::getAll('Solicitor');
     $solicitors = array();
     foreach ($lists as $list) {
         $solicitors[$list->id] = $list->first_name . ' ' . $list->last_name . '(' . $list->solicitor_code . ')';
     }
     $visits = CHtml::listData(Visits::model()->findAll(), 'id', 'visit_code');
     $trans = UserTrans::model()->find(array("condition" => "donation_id = '" . $id . "'"));
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Donation'])) {
         $model->attributes = $_POST['Donation'];
         if ($trans->debit != $model->amount) {
             $user_balance = Users::model()->getUserBalance($model->user_id);
             $user_model = Users::model()->findByPk($model->user_id);
             $credit_limits = $user_model->credit_limits;
             $donation_amount = $model->amount;
             // current donation amount
             $current_amount = $trans->debit;
             // previous donation amount
             if ($donation_amount > $current_amount) {
                 $credit_limits = $user_model->credit_limits;
                 $donation_amt = $donation_amount - $current_amount;
                 if ($user_balance >= 0) {
                     $user_allowable_amount = $user_balance + $credit_limits;
                 } else {
                     if ($user_balance < 0) {
                         $user_allowable_amount = $credit_limits - abs($user_balance);
                     }
                 }
                 if ($user_allowable_amount < $donation_amt) {
                     $model->addError('amount', 'Sorry. The user has not the sufficient balance.');
                 } else {
                     $model->save();
                     $trans->debit = $donation_amount;
                     $trans->save();
                     $this->redirect(array('view', 'id' => $model->id));
                 }
             } else {
                 if ($donation_amount < $current_amount) {
                     $trans->debit = $donation_amount;
                     $model->save();
                     $trans->save();
                     $this->redirect(array('view', 'id' => $model->id));
                 }
             }
         }
     }
     $this->render('create', array('model' => $model, 'users' => $users, 'solicitors' => $solicitors, 'visits' => $visits));
 }
	/**
	 * 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);
		$users_lists = BaseModel::getAll('Users');
		$users = array();
		foreach($users_lists as $user){
			$users[$user->id] = $user->first_name.' '.$user->last_name.'('.$user->username.')';
		}
		// $users = CHtml::listData(BaseModel::getAll('Users'),'id','username');
		$lists = BaseModel::getAll('Solicitor');
		$solicitors = array();
		foreach($lists as $list){
			$solicitors[$list->id] = $list->first_name.' '.$list->last_name.'('.$list->solicitor_code.')';
		}
		$visits = CHtml::listData(Visits::model()->findAll(),'id','visit_code');
		$trans = UserTrans::model()->find(array("condition" => "donation_id = '".$id."'"));
		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Donation']))
		{
			$model->attributes=$_POST['Donation'];
			if($model->save()){
				if($trans->debit != $model->amount){
					$user_balance = Users::model()->getUserBalance($model->user_id);
	                $user_model = Users::model()->findByPk($model->user_id);
	                $credit_limits = $user_model->credit_limits;
	                // $from_user_credit = ($user_balance + $trans->debit) - $model->amount;
	                $user_balance = $user_balance + $trans->debit;
	                
	                if ($model->amount > $user_balance) {
	                    // deducting the user credit
	                    if ($user_balance > 0) {
	                        $from_user_credit = $model->amount - $user_balance;
	                    } else {
	                        $from_user_credit = $model->amount;
	                    }
	                    $final_user_credit = $credit_limits - $from_user_credit;
	                    $user_model->credit_limits = $final_user_credit;
	                    $user_model->save();
	                }

	                // for storing in the user_trans table
	                $trans->debit = $model->amount;
					$trans->save();
					$this->redirect(array('view','id'=>$model->id));
				}
				$this->redirect(array('view','id'=>$model->id));
			}
		}

		$this->render('create',array(
			'model'=>$model,
			'users'=>$users,
			'solicitors'=>$solicitors,
			'visits'=>$visits
		));
	}
    /**
     * 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);
        $users = CHtml::listData(BaseModel::getAll('Users', array("condition" => "is_admin = 0 ")), 'id', 'username');
        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if (isset($_POST['UserCredit'])) {
            $model->attributes = $_POST['UserCredit'];
            if ($model->save()){
                $trans = UserTrans::model()->find(array("condition" => "credit_id = '$model->id'"));
                if($trans === null && $model->payment_status == 'a'){
                    $trans_model = new UserTrans;
                    $trans_model->tran_type = 'PAYMENT_RECEIVED';
                    $trans_model->user_id = $model->user_id;
                    $trans_model->credit = $model->amount;
                    $trans_model->credit_id = $model->id;
                    $trans_model->save();
                } else {
                    $trans->credit = $model->amount;
                    $trans->save();
                }
                $this->redirect(array('view', 'id' => $model->id));
            }
        }

        $this->render('update', array(
            'model' => $model,
            'users' => $users
        ));
    }