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; }