コード例 #1
0
 /**
  * Creates a new model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  */
 public function actionCreate()
 {
     $model = new Donation();
     if (isset($_GET['user'])) {
         $model->user_id = $_GET['user'];
     }
     if (isset($_GET['visit'])) {
         $model->visit_id = $_GET['visit'];
         $model->solicitor_id = Visits::model()->findByPk($model->visit_id)->solicitor_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(BaseModel::getAll('Visits'), 'id', 'visit_code');
     // Uncomment the following line if AJAX validation is needed
     // $this->performAjaxValidation($model);
     if (isset($_POST['Donation'])) {
         $model->attributes = $_POST['Donation'];
         $model->reference_number = getToken(8);
         $model->validate();
         if (!empty($model->user_id)) {
             $user_id = $model->user_id;
             $user_balance = Users::model()->getUserBalance($user_id);
             $user_model = Users::model()->findByPk($user_id);
             $credit_limits = $user_model->credit_limits;
             $donation_amt = $model->amount;
             if ($user_balance >= 0) {
                 if ($user_balance < $donation_amt) {
                     $user_allowable_amount = $user_balance + $credit_limits;
                     if ($donation_amt > $user_allowable_amount) {
                         $model->addError('amount', "Sorry. The user has not the sufficient balance.");
                     }
                 }
             } else {
                 if ($user_balance < 0) {
                     $user_allowable_amount = $credit_limits - abs($user_balance);
                     if ($donation_amt > $user_allowable_amount) {
                         $model->addError('amount', "Sorry. The user has not the sufficient balance.");
                     }
                 }
             }
         }
         if (empty($model->errors)) {
             if ($model->save()) {
                 $trans = new UserTrans();
                 $trans->tran_type = 'DONATION';
                 $trans->user_id = $model->user_id;
                 $trans->debit = $model->amount;
                 $trans->donation_id = $model->id;
                 $trans->save();
                 $this->redirect(array('view', 'id' => $model->id));
             }
         }
     }
     $this->render('create', array('model' => $model, 'users' => $users, 'solicitors' => $solicitors, 'visits' => $visits));
 }