示例#1
0
 function changeConsumerRank($uid)
 {
     //consumer information
     if (!isset($this->consumer)) {
         $this->consumer = new Consumer();
     }
     $this->consumerData = $this->consumer->fetchRow('id = ' . $uid);
     //total points
     $this->rewardPointTransactionRecord = new RewardPointTransactionRecord();
     $rewardData = $this->rewardPointTransactionRecord->fetchAll('consumer_id=' . $uid . ' and transaction_id !=4');
     $rewardDataArray = $rewardData->toArray();
     $total = 0;
     if (count($rewardDataArray)) {
         foreach ($rewardDataArray as $val) {
             $total += $val['point_amount'];
         }
     }
     //participated campaigns
     $campaign = new CampaignInvitation();
     $campaignData = $campaign->fetchAll('state = "ACCEPTED" and consumer_id =' . $uid);
     $campaginNum = count($campaignData);
     //rank information
     $rank = $this->fetchRow('campaign_number<=' . $campaginNum . ' and point_total<=' . $total, 'point_total desc');
     if (count($rank)) {
         if ($this->consumerData->rank == $rank->id) {
             return;
         } else {
             $this->consumerData->rank = $rank->id;
             $this->consumerData->save();
             // add notification
             $notificationModel = new Notification();
             $notificationModel->createRecord("RANK_UPGRADE", $uid);
             $row = $this->rewardPointTransactionRecord->createRow();
             $row->consumer_id = $uid;
             $row->date = date("Y-m-d H:i:s");
             $row->transaction_id = 7;
             $row->point_amount = $rank->point_bonus;
             $row->save();
             $this->changeConsumerRank($uid);
         }
     } else {
         return;
     }
 }
 function profileAction()
 {
     $this->_helper->layout->setLayout("layout_admin");
     $uid = $this->_request->getParam('uid');
     $campainId = $this->_request->getParam('campaign');
     if ($campainId != '') {
         $campaignInvitationModel = new CampaignInvitation();
         $data = $campaignInvitationModel->fetchAll('consumer_id = ' . $uid . ' and campaign_id =' . $campainId);
         if (count($data) == 0) {
             $row = $campaignInvitationModel->createRow();
             $row->campaign_id = $campainId;
             $row->consumer_id = $uid;
             $row->create_date = date("Y-m-d H:i:s");
             $row->state = "NEW";
             $row->save();
         }
         $this->_helper->redirector('profile', 'consumer', '', array('uid' => $uid));
     }
     $search = $this->_request->getParam('search');
     $this->view->search = $search;
     $campaignInfo = array();
     $reportsInfo = array();
     $userModel = new Consumer();
     if ($this->_request->getParam('resetpassword')) {
         $userModel->update(array('password' => md5('111111')), 'id =' . $uid);
         $this->_helper->redirector('profile', 'consumer', null, array('uid' => $uid));
     }
     $profile = $userModel->fetchRow('id =' . $uid);
     $userExtraInfo = new ConsumerExtraInfo();
     $extra_profile = $userExtraInfo->fetchRow(' consumer_id = ' . $uid);
     $this->view->profile = $profile;
     $this->view->extra_profile = $extra_profile;
     //		var_dump($extra_profile);die;
     $db = Zend_Registry::get('db');
     $select = $db->select();
     $select->from("campaign", array('campaign.*', 'campaign_participation.state', 'campaign_invitation.state as cstate', 'campaign_invitation.id as ciid'));
     $select->joinLeft("campaign_invitation", "campaign.id=campaign_invitation.campaign_id and campaign_invitation.consumer_id = " . $uid, null);
     $select->joinLeft("campaign_participation", "campaign_invitation.id=campaign_participation.campaign_invitation_id", "campaign_participation.accept_date");
     //$select->where ( "campaign_invitation.state = 'ACCEPTED'" );
     //$select->where ( " campaign_invitation.consumer_id = ?", $uid );
     $select->order('campaign_participation.accept_date desc');
     $campaignsAll = $db->fetchAll($select);
     $this->view->campaigns = $campaignsAll;
     //survey
     $db = Zend_Registry::get('db');
     $select_survey = $db->select();
     $select_survey->from('profile_survey', array('name', 'english_name', 'state'));
     $select_survey->join('poll_participation', 'poll_participation.poll_id = profile_survey.id', 'poll_participation.date');
     $select_survey->join('reward_point_transaction_record', 'reward_point_transaction_record.date = poll_participation.date and reward_point_transaction_record.consumer_id = poll_participation.consumer_id', 'point_amount');
     $select_survey->where('reward_point_transaction_record.transaction_id =3');
     $select_survey->where('poll_participation.consumer_id = ?', $uid);
     $select_survey->order('poll_participation.date desc');
     $surveysAll = $db->fetchAll($select_survey);
     $this->view->surveysall = $surveysAll;
     // point detail
     /*$db = Zend_Registry::get('db');
     		$select_pointdetail = $db->select();
     		$select_pointdetail->from();
     		$select_pointdetail->join();
     		$select_pointdetail->join();
     		$select_pointdetail->where();
     		$select_pointdetail->where();
     		$select_pointdetail->order();
     		$surveysAll = $db->fetchAll($select_pointdetail);*/
     //var_dump($campaignsAll);die;
     $selectTotal = $db->select();
     $selectTotal->from("report", array('count(id) as num', 'campaign_id'));
     $selectTotal->where("consumer_id =" . $uid);
     $selectTotal->group('campaign_id');
     $totalData = $db->fetchAll($selectTotal);
     if (count($totalData)) {
         foreach ($totalData as $val) {
             $reportsInfo[$val['campaign_id']] = $val['num'];
         }
     }
     $this->view->totalreports = $reportsInfo;
     // total points
     $this->view->totalPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE transaction_id!=4 and consumer_id = :temp", array('temp' => $uid));
     if (empty($this->view->totalPoints)) {
         $this->view->totalPoints = 0;
     }
     //redeem points
     $this->view->redeemPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE consumer_id = :temp", array('temp' => $uid));
     if (empty($this->view->redeemPoints)) {
         $this->view->redeemPoints = 0;
     }
     //usable points
     $today = date("Y-m-d", time());
     $this->view->usablePoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE (consumer_id = :temp and date <:temp2) or (consumer_id = :temp and date >=:temp2 and transaction_id=4) ", array('temp' => $uid, 'temp2' => date("Y-m-d", strtotime("{$today}   -30   day"))));
     if (empty($this->view->usablePoints)) {
         $this->view->usablePoints = 0;
     }
     $redeemSelect = $db->select();
     $redeemSelect->from('product_order', array('product_order.amount as amount', 'product_order.create_date', 'product_order.state as pstate', 'product_order.id as pid', 'product.name', 'reward_point_transaction_record.point_amount'));
     $redeemSelect->join('product', 'product_order.product_id=product.id');
     $redeemSelect->join('reward_point_transaction_record', 'product_order.reward_point_transaction_record_id=reward_point_transaction_record.id');
     $redeemSelect->where('product_order.consumer_id=?', $uid);
     $this->view->redeem = $db->fetchAll($redeemSelect);
     $translate = new Zend_Translate('array', array("Value is required and can't be empty" => $this->view->translate('validation_null')));
     $form = new ConsumerSearchForm();
     $form->setTranslator($translate);
     if ($this->_request->getParam('search') != null) {
         $search = $this->_request->getParam('search');
         $form->search->setValue($search);
     }
     $this->view->form = $form;
 }