public function indexAction()
 {
     $lang = $this->_request->getParam('lang');
     $langNamespace = new Zend_Session_Namespace('Lang');
     $langNamespace->lang = $lang;
     //		Zend_Debug::dump($_SERVER["HTTP_REFERER"]);
     if (isset($this->_currentUser->id)) {
         $consumerModel = new Consumer();
         $consumer = $consumerModel->fetchRow('id = ' . $this->_currentUser->id);
         if ($consumer != null) {
             $consumer->language_pref = $lang;
             $consumer->save();
         } else {
             $adminModel = new Admin();
             $admin = $adminModel->fetchRow('id = ' . $this->_currentUser->id);
             if ($admin != null) {
                 $admin->language_pref = $lang;
                 $admin->save();
             }
         }
     }
     $messageArray = $this->_flashMessenger->getMessages();
     if ($messageArray != null) {
         foreach ($messageArray as $message) {
             $this->_flashMessenger->addMessage($message);
         }
     }
     $this->_helper->redirector->gotoUrl($_SERVER["HTTP_REFERER"]);
 }
 function adminaddAction()
 {
     $this->_helper->layout->setLayout("layout_admin");
     $translate = new Zend_Translate('array', array("Value is required and can't be empty" => $this->view->translate('validation_null')));
     $form = new PhoneConversationForm();
     $form->setTranslator($translate);
     if ($this->_request->getParam('id')) {
         $consumer = new Consumer();
         $consumerData = $consumer->fetchRow('id=' . $this->_request->getParam('id'));
         $form->setDefault('phoneNum', $consumerData->phone);
         $form->setDefault('consumerName', $consumerData->name);
     }
     $this->view->form = $form;
     $currentTime = date("Y-m-d H:i:s");
     if ($this->_request->isPost()) {
         $formData = $this->_request->getPost();
         if ($form->isValid($formData)) {
             $phoneNum = $form->getValue('phoneNum');
             $consumerName = $form->getValue('consumerName');
             $content = $form->getValue('content');
             $evaluation = $form->getValue('evaluation');
             $duration = $form->getValue('duration');
             $image = $form->getValue('image');
             $time = $currentTime;
             //2011-04-08 ham.bao separate the sessions with admin
             $adminId = $this->_currentAdmin->id;
             $db = Zend_Registry::get('db');
             $select = $db->select();
             $select->from('consumer', 'id');
             $select->where('name=?', $consumerName);
             $consumerId = $db->fetchOne($select);
             $this->view->adminid = $adminId;
             $this->view->consumerid = $consumerId;
             $this->view->consumername = $consumerName;
             $this->view->phonenum = $phoneNum;
             $this->view->content = $content;
             $this->view->evaluation = $evaluation;
             $this->view->duration = $duration;
             $this->view->time = $time;
             $phoneConversationModel = new PhoneConversation();
             $phoneConversation = $phoneConversationModel->createRow();
             $phoneConversation->admin_id = $adminId;
             $phoneConversation->consumer_id = $consumerId;
             $phoneConversation->consumer_name = $consumerName;
             $phoneConversation->consumer_phone = $phoneNum;
             $phoneConversation->content = $content;
             $phoneConversation->evaluation = $evaluation;
             $phoneConversation->duration = $duration;
             $phoneConversation->time = $currentTime;
             $phoneConversation->image = $image;
             $phoneConversation->save();
         }
     }
 }
 function registerAction()
 {
     $this->view->title = "Register New Account";
     $this->view->messages = $this->_flashMessenger->getMessages();
     $this->_helper->layout->disableLayout();
     $lang = $this->_request->getParam('lang');
     if (isset($lang)) {
         $langNamespace = new Zend_Session_Namespace('Lang');
         $langNamespace->lang = $lang;
         $this->_helper->redirector->gotoSimple('register', 'register', null, array('a' => $this->_request->getParam('a'), 'i' => $this->_request->getParam('i')));
     }
     $db = Zend_Registry::get('db');
     $currentTime = date("Y-m-d H:i:s");
     $loginform = new LoginForm();
     $this->view->form = $loginform;
     $form = new RegisterForm();
     $this->view->registerForm = $form;
     $signupAuthCodeModel = new SignupAuthCode();
     $auth_code = $this->_request->getParam('a');
     if ($auth_code) {
         $form->auth_code->setValue($auth_code);
         $code = $signupAuthCodeModel->fetchRow("use_date is null and auth_code = '" . $auth_code . "'");
     }
     // auto-fill code and email address
     if (isset($code) && $code->id) {
         $this->view->codeId = $code->id;
         $select1 = $db->select();
         $select1->from("invitation_email", "to");
         $select1->where("invitation_email.signup_auth_code_id = ?", $code->id);
         $toEmail = $db->fetchOne($select1);
         $form->registerEmail->setValue($toEmail);
         $code->view_date = $currentTime;
         $code->save();
     }
     //public link
     $invite_code = $this->_request->getParam('i');
     if ($invite_code) {
         $code2 = $signupAuthCodeModel->fetchRow("public_signup_link = true and auth_code = '" . $invite_code . "'");
         $publicLinkValid = false;
         if (isset($code2)) {
             $select2 = $db->select();
             $select2->from('signup_auth_code', 'count(*)')->where('use_date>date_sub(now(),interval 1 day)')->where('sender =' . $code2->sender)->where('source = "PUBLIC_LINK"')->where('receiver is not null');
             $registered = $db->fetchOne($select2);
             if (intval($registered) < 100) {
                 $publicLinkValid = true;
             }
         }
     }
     if (isset($code2)) {
         if ($publicLinkValid) {
             $codePattern = '1234567890ABCDEFGHIJKLOMNOPQRSTUVWXYZ';
             $generatedCode = '';
             for ($codeCount = 0; $codeCount < 12; $codeCount++) {
                 $generatedCode = $generatedCode . $codePattern[mt_rand(0, 35)];
             }
             $signupAuthCode = $signupAuthCodeModel->createRow();
             $signupAuthCode->auth_code = $generatedCode;
             $signupAuthCode->create_date = $currentTime;
             $signupAuthCode->sender = $code2->sender;
             $signupAuthCode->source = 'PUBLIC_LINK';
             $signupAuthCode->auto_invitation = $code2->auto_invitation;
             $signupAuthCode->save();
             $form->auth_code->setValue($generatedCode);
         } else {
             $this->_flashMessenger->addMessage($this->view->translate('Sorry_This_register_link_has_been_overused'));
             $this->_helper->redirector('register', 'register');
         }
     }
     if ($this->_request->isPost()) {
         $formData = $this->_request->getPost();
         if ($form->isValid($formData)) {
             $db = Zend_Registry::get('db');
             if ($form->getValue('registerPassword') == $form->getValue('repeat')) {
                 // verify auth code
                 $codeModel = new SignupAuthCode();
                 $code = $codeModel->fetchRow("auth_code='" . $form->getValue('auth_code') . "' and use_date is null");
                 if ($code) {
                     //check pest
                     if ($code->sender != null) {
                         $consumerModel = new Consumer();
                         $consumer = $consumerModel->fetchRow("id = " . $code->sender);
                         if ($consumer != null && $consumer->pest == '1') {
                             return;
                         }
                     }
                     //check duplicated email
                     $result = $db->fetchOne("SELECT COUNT(*) FROM consumer WHERE email = :temp", array('temp' => $form->getValue('registerEmail')));
                     //check duplicated phone
                     $phone_result = $db->fetchOne("SELECT COUNT(*) FROM consumer WHERE login_phone = :temp", array('temp' => $form->getValue('loginPhone')));
                     if ($result > 0) {
                         $this->view->errMessage = $this->view->translate('Register_err') . $form->getValue('registerEmail') . $this->view->translate('Register_email_is_invalid');
                     } else {
                         if ($phone_result > 0) {
                             $this->view->errMessage = $this->view->translate('Register_err') . $form->getValue('loginPhone') . $this->view->translate('Register_phone_is_invalid');
                         } else {
                             $currentTime = date("Y-m-d H:i:s");
                             // save new consumer
                             $consumerModel = new Consumer();
                             $row = $consumerModel->createRow();
                             $row->name = $form->getValue('name');
                             $row->email = $form->getValue('registerEmail');
                             $row->login_phone = $form->getValue('loginPhone');
                             $row->password = md5($form->getValue('registerPassword'));
                             $row->save();
                             //expire the auth_code
                             $code->receiver = $row->id;
                             $code->use_date = $currentTime;
                             $code->save();
                             //add points for code sender
                             //		    				if (!empty($code->sender)&& $code->sender!=""){
                             //			    				$pointRecordModel = new RewardPointTransactionRecord();
                             //			    				$point = $pointRecordModel->createRow();
                             //			    				$point->consumer_id = $code->sender;
                             //			    				$point->transaction_id = 2;
                             //			    				$point->date = $currentTime;
                             //			    				$point->point_amount = 5;
                             //			    				$point->save();
                             //		    				}
                             // send auto intivitaion
                             if (!empty($code->auto_invitation) && $code->auto_invitation != 0) {
                                 $campaignInvitationModel = new CampaignInvitation();
                                 $ci = $campaignInvitationModel->createRow();
                                 $ci->consumer_id = $row->id;
                                 $ci->campaign_id = $code->auto_invitation;
                                 $ci->create_date = $currentTime;
                                 $ci->state = "NEW";
                                 $ci->save();
                             }
                             // Login Automatically
                             $authAdapter = new Zend_Auth_Adapter_DbTable($db);
                             $authAdapter->setTableName('consumer');
                             $authAdapter->setIdentityColumn('email');
                             $authAdapter->setCredentialColumn('password');
                             $authAdapter->setIdentity($form->getValue('registerEmail'));
                             $authAdapter->setCredential(md5($form->getValue('registerPassword')));
                             $auth = Zend_Auth::getInstance();
                             $auth->authenticate($authAdapter);
                             $authNamespace = new Zend_Session_Namespace('Zend_Auth');
                             $authNamespace->user = $row;
                             $this->_flashMessenger->addMessage('Welcome!');
                             $this->_helper->redirector('index', 'home');
                         }
                     }
                 } else {
                     $this->view->errMessage = $this->view->translate('Register_err') . $this->view->translate('Register_authcode_is_invalid');
                 }
             } else {
                 $this->view->errMessage = $this->view->translate('Register_err') . $this->view->translate('Register_password_is_invalid');
             }
         } else {
             $form->populate($formData);
         }
     }
 }
 function activateAction()
 {
     $this->_helper->layout->disableLayout();
     $activateCode = $this->_request->getParam('p');
     $message = '';
     $activeLink = $this->view->home . '/public/register/activate/p/' . $activateCode;
     $temporaryLink = new TemporaryLink();
     $temporaryLinkData = $temporaryLink->fetchRow('link like "%' . $activeLink . '%"');
     $conumserModel = new Consumer();
     $consumerData = $conumserModel->fetchRow('email like "%' . $temporaryLinkData->email . '%"');
     if ($consumerData->state == 'ACTIVE') {
         $message = $this->view->translate('Has_actived');
     } elseif ($temporaryLinkData->expire_date < date("Y-m-d H:i:s")) {
         $message = $this->view->translate('OutOfDate_register');
     } else {
         $consumerData->state = 'ACTIVE';
         $consumerData->save();
     }
     $this->view->message = $message;
 }
 function adminaddreportAction()
 {
     $this->_helper->layout->setLayout("layout_admin");
     $consumer = $this->_request->getParam('uid');
     if ($this->_request->getParam('file')) {
         $file = explode('&', $this->_request->getParam('file'));
         $file = $file[0];
         $this->view->file = "./surveys/" . $file . ".phtml";
         $this->_helper->layout->setLayout("layout_questionnaire");
     }
     $campaignModel = new Campaign();
     $campaignData = $campaignModel->fetchAll();
     $this->view->campaigns = $campaignData;
     $this->view->sources = array('application', 'phone', 'email', 'sms');
     $postData = $this->_request->getPost();
     if (count($postData)) {
         $this->view->campaign = $postData['campaign'];
         $this->view->source = $postData['source'];
         $adminAddSession = new Zend_Session_Namespace('adminAddSession');
         $adminAddSession->consumer = $consumer;
         $adminAddSession->source = $postData['source'];
         $adminAddSession->campaign = $postData['campaign'];
         foreach ($campaignData as $campaign) {
             if ($campaign->id == $postData['campaign']) {
                 $this->view->link = $campaign->i2_survey_id;
                 $this->view->surveyId = $campaign->i2_survey_id;
             }
         }
     }
     if ($this->_request->getParam('survey')) {
         $this->view->surveyId = $this->_request->getParam('survey');
     }
     $consumerModel = new Consumer();
     $this->view->consumer = $consumerModel->fetchRow('id=' . $consumer);
     $this->view->uid = $consumer;
 }
 function adminreportAction()
 {
     $this->_helper->layout->setLayout("layout_admin");
     $sms_id = (int) $this->_request->getParam('sms_id');
     $smsSql = "select b.* from spark_sms as a, spark_sms as b where a.id=" . $sms_id . " and b.consumer_id=a.consumer_id and b.id-a.id>-5 and b.id-a.id<5 order by b.id";
     $db = Zend_Registry::get('db');
     $rs = $db->fetchAll($smsSql);
     $sms = '';
     $consumer_id = 0;
     $smsIds = array();
     foreach ($rs as $row) {
         array_push($smsIds, $row['id']);
         $sms .= $row['text'];
         $consumer_id = $row['consumer_id'];
     }
     //update sms state
     $ids = implode(",", $smsIds);
     //Zend_Debug::dump($ids);
     $updateSql = $db->prepare("update spark_sms set state='Reported' where id in (" . $ids . ")");
     $updateSql->execute();
     $campaign_id = (int) $this->_request->getParam('cam_id');
     //whether participate in the campaign
     $campaigninvitationModel = new CampaignInvitation();
     $campaigninvitation = $campaigninvitationModel->fetchRow('campaign_id = ' . $campaign_id . ' and consumer_id' . ' =' . $consumer_id);
     if ($campaigninvitation == null) {
         $this->_helper->redirector('index', 'home');
     }
     //get lang
     $consumerModel = new Consumer();
     $consumer = $consumerModel->fetchRow("id=" . $consumer_id);
     //get i2_survey_id
     $campaignModel = new Campaign();
     $campaign = $campaignModel->fetchRow("id=" . $campaign_id);
     $langNamespace = new Zend_Session_Namespace('Lang');
     $lang = $langNamespace->lang;
     if ($consumer->language_pref == 'en') {
         $surveyId = $campaign->i2_survey_id_en;
     } else {
         $surveyId = $campaign->i2_survey_id;
     }
     $this->view->campaing_name = $campaign->name;
     $indicate2Connect = new Indicate2_Connect();
     $accesscode = $indicate2Connect->createParticipation($consumer->email, $surveyId);
     //save list in session
     $reportNamespace = new Zend_Session_Namespace('AgentReports');
     $reportNamespace->{$accesscode} = $consumer_id;
     $source = $accesscode . "_source";
     $reportNamespace->{$source} = "sms";
     $config = Zend_Registry::get('config');
     $this->view->filloutPage = $config->indicate2->home . "/c/" . $accesscode . "/theme/wildfire";
     $this->view->id = $consumer->id;
     $this->view->name = $consumer->name;
     $this->view->sms = $sms;
     $this->view->includeCrystalCss = true;
 }
 function adminsaveimagereportpointAction()
 {
     $type = $this->_request->getParam('type');
     $db = Zend_Registry::get('db');
     if ($type == 'reportPoint') {
         $idStr = $this->_request->getParam('reportids');
         $idStrArray = explode(',', $idStr);
         $reportIdArray = array();
         $i = 0;
         $config = Zend_Registry::get('config');
         $smtpSender = new Zend_Mail_Transport_Smtp($config->smtp->report->mail->server, array('username' => $config->smtp->report->mail->username, 'password' => $config->smtp->report->mail->password, 'auth' => $config->smtp->report->mail->auth, 'ssl' => $config->smtp->report->mail->ssl, 'port' => $config->smtp->report->mail->port));
         //			$smtpSender = new Zend_Mail_Transport_Smtp(
         //						'smtp.163.com',array(
         //						'username'=>'*****@*****.**',
         //						'password'=>'19990402',
         //						'auth'=>'login'));
         Zend_Mail::setDefaultTransport($smtpSender);
         foreach ($idStrArray as $idAndState) {
             if ($idAndState == '') {
                 continue;
             }
             $idAndStateArray = explode('@', $idAndState);
             if ($idAndStateArray[4] == '' || $idAndStateArray[4] == '0') {
                 $imagereportModel = new ImageReport();
                 $row = $imagereportModel->fetchRow('id = ' . $idAndStateArray[0]);
                 if ($row == null) {
                     continue;
                 }
                 if ($row->reward_point_transaction_record_id != null && $row->reward_point_transaction_record_id != '') {
                     $rewardModel = new RewardPointTransactionRecord();
                     $reward = $rewardModel->fetchRow('id = ' . $row->reward_point_transaction_record_id);
                     if ($reward != null) {
                         $reward->point_amount = $idAndStateArray[4];
                         $reward->save();
                     }
                 }
                 $row->state = $idAndStateArray[1];
                 $row->save();
             } else {
                 $imagereportModel = new ImageReport();
                 $row = $imagereportModel->fetchRow('id = ' . $idAndStateArray[0]);
                 $row->state = $idAndStateArray[1];
                 if ($row->reward_point_transaction_record_id == null || $row->reward_point_transaction_record_id == '') {
                     $rewardModel = new RewardPointTransactionRecord();
                     $reward = $rewardModel->createRow();
                     $reward->consumer_id = $idAndStateArray[2];
                     $reward->date = date("Y-m-d H:i:s");
                     $reward->transaction_id = 9;
                     $reward->point_amount = $idAndStateArray[4];
                     $row->reward_point_transaction_record_id = $reward->save();
                 } else {
                     $rewardModel = new RewardPointTransactionRecord();
                     $reward = $rewardModel->fetchRow('id = ' . $row->reward_point_transaction_record_id);
                     if ($reward != null) {
                         $reward->date = date("Y-m-d H:i:s");
                         $reward->point_amount = $idAndStateArray[4];
                         $reward->save();
                     }
                 }
                 $row->save();
                 //2011-05-13 change the rank of consumer
                 $rankModel = new Rank();
                 $rankModel->changeConsumerRank($idAndStateArray[2]);
             }
             $consumerModel = new Consumer();
             $consumer = $consumerModel->fetchRow('id = ' . $idAndStateArray[2]);
             //send mail...
             $mail = new Zend_Mail('utf-8');
             if ($consumer->language_pref != null && $consumer->language_pref == 'en') {
                 $emailSubject = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Subject_en');
                 $emailBody = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Body_en');
             } else {
                 $emailSubject = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Subject_zh');
                 $emailBody = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Body_zh');
             }
             $campaignModel = new Campaign();
             $campaign = $campaignModel->fetchRow('id = ' . $row->campaign_id);
             $stringChange = array('?USERNAME?' => $consumer->name, '?CAMPAIGN?' => $campaign->name, '?MYRESPONSE?' => $idAndStateArray[3]);
             $emailBody = strtr($emailBody, $stringChange);
             $langNamespace = new Zend_Session_Namespace('Lang');
             if ($langNamespace->lang == 'en' || $langNamespace->lang == 'EN') {
                 $mail->setSubject($emailSubject);
             } else {
                 $mail->setSubject("=?UTF-8?B?" . base64_encode($emailSubject) . "?=");
             }
             $mail->setBodyText($emailBody);
             $mail->addTo($consumer->email);
             $mail->setFrom($config->smtp->report->mail->username, $this->view->translate('Wildfire'));
             //				$mail->setFrom('*****@*****.**',$this->view->translate('Wildfire'));
             $mail->send();
             // save email
             $imagereportreplyModel = new ImageReportReply();
             $imagereportreply = $imagereportreplyModel->createRow();
             $imagereportreply->date = date("Y-m-d H:i:s");
             $imagereportreply->subject = $emailSubject;
             $imagereportreply->content = $idAndStateArray[3];
             $imagereportreply->from = $config->smtp->report->mail->username;
             $imagereportreply->to = $consumer->email;
             $imagereportreply->image_report_id = $row->id;
             //2011-04-08 ham.bao separate the sessions with admin
             $imagereportreply->admin_id = $this->_currentAdmin->id;
             $imagereportreply->save();
         }
     }
 }
 function adminconverttoreportAction()
 {
     $this->_helper->layout->disableLayout();
     $idValue = explode('&', $this->_request->getParam('id'));
     $id = $idValue[0];
     $emailModel = new IncomingEmail();
     $emailData = $emailModel->fetchRow('id=' . $id);
     $consumerModel = new Consumer();
     $consumerData = $consumerModel->fetchRow('email like "%' . $emailData->email . '%"');
     if ($consumerData != NULL) {
         $this->view->consumer = true;
     } else {
         $this->view->consumer = false;
     }
     $campaignModel = new Campaign();
     $campaignData = $campaignModel->fetchRow('create_date < "' . date('Y-m-d H:i:s') . '" and "' . date('Y-m-d H:i:s') . '"<expire_date');
     if ($this->view->consumer) {
         $campaigninvitationModel = new CampaignInvitation();
         $campaigninvitationData = $campaigninvitationModel->fetchRow('campaign_id = ' . $campaignData->id . ' and consumer_id=' . $consumerData->id);
         if ($campaigninvitationData) {
             $this->view->invitation = true;
         } else {
             $this->view->invitation = false;
         }
     }
     if ($this->view->consumer && $this->view->invitation) {
         $emailSession = new Zend_Session_Namespace('IncomingEmail');
         $emailSession->email = $emailData->email;
         $langNamespace = new Zend_Session_Namespace('Lang');
         $lang = $langNamespace->lang;
         if ($lang == 'en') {
             $surveyId = $campaignData->i2_survey_id_en;
         } else {
             $surveyId = $campaignData->i2_survey_id;
         }
         $this->view->file = "./surveys/" . $surveyId . ".phtml";
     }
     $this->_helper->layout->setLayout("layout_questionnaire");
 }
 function resetpasswordAction()
 {
     $this->_helper->layout->disableLayout();
     $p = $this->_request->getParam("p");
     $this->view->p = $p;
     if ($this->_request->isPost()) {
         $newpassword = $this->_request->getParam("newpassword");
         $confirm = $this->_request->getParam("confirm");
         if ($newpassword != $confirm || strlen($newpassword) < 6 || strlen($confirm) < 6) {
             $this->view->errMessage = $this->view->translate('Fail_New_password_is_incorrect!');
             $this->view->p = $p;
         } else {
             $temporaryLinkModel = new TemporaryLink();
             $currentTime = date("Y-m-d H:i:s");
             $temporaryLink = $temporaryLinkModel->fetchRow("link like '%" . $p . "%' and expire_date >= '" . $currentTime . "'");
             $email = $temporaryLink->email;
             $login_phone = $temporaryLink->login_phone;
             //not delete $temporaryLink in DB
             if ($email != null) {
                 $consumerModel = new Consumer();
                 $consumer = $consumerModel->fetchRow("email = '" . $email . "'");
                 $consumer->password = md5($newpassword);
                 $consumer->save();
                 $this->view->showMessage = $this->view->translate('You_have_reset_the_password!');
             } else {
                 if ($login_phone != null) {
                     $consumerModel = new Consumer();
                     $consumer = $consumerModel->fetchRow("login_phone = '" . $login_phone . "'");
                     $consumer->password = md5($newpassword);
                     $consumer->save();
                     $this->view->showMessage = $this->view->translate('You_have_reset_the_password!');
                 } else {
                     $this->view->errMessage = $this->view->translate('Your_reset_passwrod_link');
                 }
             }
         }
     }
     //		Zend_Debug::dump($p);
 }
 function indexAction()
 {
     $this->view->title = $this->view->translate("Wildfire") . " - " . $this->view->translate("Index_HOME");
     $this->view->activeTab = 'Home';
     $consumer = $this->_currentUser;
     $this->view->currentUser = $consumer;
     $langNamespace = new Zend_Session_Namespace('Lang');
     $this->view->lang = $langNamespace->lang;
     $currentTime = date("Y-m-d H:i:s");
     // save language pref
     $consumerModel = new Consumer();
     $consumer = $consumerModel->fetchRow('id = ' . $this->_currentUser->id);
     $consumer->language_pref = $langNamespace->lang;
     $consumer->save();
     $db = Zend_Registry::get('db');
     //get badges of consumer
     $badgeModel = new ConsumerBadge();
     $badges = $badgeModel->fetchAll("consumer = " . $consumer->id);
     $this->view->badges = $badges;
     // active campaigns
     $select = $db->select();
     $select->from('campaign', '*');
     $select->join('campaign_invitation', 'campaign.id = campaign_invitation.campaign_id');
     $select->join('campaign_participation', 'campaign_invitation.id = campaign_participation.campaign_invitation_id', 'accept_date');
     //$select->joinLeft('url_report','url_report.campaign_id = campaign.id and url_report.consumer_id = campaign_invitation.consumer_id ',array('url', 'state as url_state'));
     $select->where('campaign_invitation.consumer_id = ?', $consumer->id);
     $select->where('campaign.expire_date > ?', $currentTime);
     $select->where('campaign_participation.state != "COMPLETED" ');
     //$select->where('campaign.type = "campaign"');
     //url report
     $url_report = new UrlReport();
     $url_reportData = $url_report->fetchAll('consumer_id=' . $consumer->id, 'create_date desc');
     $this->view->urlreport = $url_reportData->toArray();
     //print_r($this->view->urlreport);die;
     $select->order('campaign.create_date desc');
     $this->view->activeCampaigns = $db->fetchAll($select);
     // active mission
     $select = $db->select();
     $select->from('campaign', 'campaign.*');
     $select->join('campaign_invitation', 'campaign.id = campaign_invitation.campaign_id' . ' and campaign_invitation.consumer_id = ' . $consumer->id, 'campaign_id');
     $select->joinLeft('campaign_participation', 'campaign_invitation.id = campaign_participation.campaign_invitation_id', 'accept_date');
     $select->where('campaign.expire_date > ?', $currentTime);
     $select->where('campaign.type = "mission"  and campaign.public = "0"');
     $select->order('campaign.create_date desc');
     $this->view->activeMissions = $db->fetchAll($select);
     //var_dump($this->view->activeMissions);die;
     //public missions
     $select = $db->select();
     $select->from('campaign', 'campaign.*');
     $select->where('campaign.expire_date > ?', $currentTime);
     $select->where('campaign.type = "mission"  and campaign.public = "1"');
     $select->order('campaign.create_date desc');
     $this->view->publicMissions = $db->fetchAll($select);
     //var_dump($this->view->activeMissions);die;
     $selectImageReportsForCampaign = $db->select();
     $selectImageReportsForCampaign->from('image_report', array('image_report.id', 'campaign_id', 'thumb_width', 'thumb_height', 'create_date', 'state'));
     $selectImageReportsForCampaign->joinLeft('reward_point_transaction_record', 'image_report.reward_point_transaction_record_id = reward_point_transaction_record.id', 'point_amount');
     $selectImageReportsForCampaign->where('image_report.consumer_id = ?', $this->_currentUser->id);
     $selectImageReportsForCampaign->order('image_report.create_date desc');
     //      $this->view->activeImageReportsForCampaign = $db->fetchAll($selectImageReportsForCampaign);
     //      Zend_Debug::Dump($this->view->activeImageReportsForCampaign);
     $campaignId = 0;
     $activeImageReportsForCampaign = array();
     foreach ($db->fetchAll($selectImageReportsForCampaign) as $imageReport) {
         $campaignId = $imageReport['campaign_id'];
         if (array_key_exists($campaignId, $activeImageReportsForCampaign)) {
             array_push($activeImageReportsForCampaign[$campaignId], $imageReport);
         } else {
             $activeImageReportsForCampaign[$campaignId] = array($imageReport);
         }
     }
     $this->view->activeImageReportsForCampaign = $activeImageReportsForCampaign;
     $selectAllCampaignReports = $db->select();
     $selectAllCampaignReports->from('report', "*")->joinLeft('reward_point_transaction_record', 'reward_point_transaction_record.id = report.reward_point_transaction_record_id', 'point_amount')->where('reward_point_transaction_record.point_amount > 0 or report.state="NEW"')->where('report.consumer_id = ?', $consumer->id);
     $selectApprovedCampaignReports = $db->select();
     $selectApprovedCampaignReports->from('report', "id")->where('report.consumer_id = ?', $consumer->id)->where('report.reward_point_transaction_record_id is not null')->where('reward_point_transaction_record.point_amount > 0')->join('reward_point_transaction_record', 'reward_point_transaction_record.id = report.reward_point_transaction_record_id', 'point_amount');
     if (count($this->view->activeCampaigns) > 0) {
         // get all reports of the first active campaigns
         // create where clause
         $activeCampaignId = "(";
         foreach ($this->view->activeCampaigns as $campaign) {
             $activeCampaignId .= $campaign['campaign_id'] . ",";
         }
         $activeCampaignId = substr($activeCampaignId, 0, strlen($activeCampaignId) - 1);
         $activeCampaignId .= ")";
         $selectAllCampaignReports->where('report.campaign_id in ' . $activeCampaignId);
         $selectApprovedCampaignReports->where('report.campaign_id in ' . $activeCampaignId);
     }
     $this->view->allCampaignReports = $db->fetchAll($selectAllCampaignReports);
     $approvedCampaignReports = $db->fetchAll($selectApprovedCampaignReports);
     $this->view->approvedCampaignReportPoint = array();
     foreach ($approvedCampaignReports as $approvedCampaignReport) {
         $this->view->approvedCampaignReportPoint[$approvedCampaignReport['id']] = $approvedCampaignReport['point_amount'];
     }
     // 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' => $consumer->id));
     if (empty($this->view->totalPoints)) {
         $this->view->totalPoints = 0;
     }
     //redeem points 在本日之前的30天内的积分不可用,
     $today = date("Y-m-d", time());
     $this->view->redeemPoints = $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' => $consumer->id, 'temp2' => date("Y-m-d", strtotime("{$today}   -30   day"))));
     if (empty($this->view->redeemPoints)) {
         $this->view->redeemPoints = 0;
     }
     // new points 30天以内的积分
     $this->view->newPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE (consumer_id = :temp and date >=:temp2 and transaction_id!=4) ", array('temp' => $consumer->id, 'temp2' => date("Y-m-d", strtotime("{$today}   -30   day"))));
     if (empty($this->view->newPoints)) {
         $this->view->newPoints = 0;
     }
     //get polls
     //		$profileSurveyModel = new ProfileSurvey();
     //		$this->view->surveys = $profileSurveyModel->fetchAll('state = "ACTIVE"', 'id DESC', null, null);
     $select_profilesurvey = $db->select();
     $select_profilesurvey->from('profile_survey', '*');
     $select_profilesurvey->joinLeft('profilesurvey_invitation', 'profilesurvey_invitation.profile_id = profile_survey.id and profilesurvey_invitation.consumer_id=' . $consumer->id, array('id as invitaitonId', 'consumer_id'));
     $select_profilesurvey->where('profile_survey.state = "ACTIVE"');
     $this->view->surveys = $db->fetchAll($select_profilesurvey);
     //var_dump($this->view->surveys);die;
     $select2 = $db->select();
     $select2->from('poll_participation', 'poll_id');
     $select2->where('poll_participation.consumer_id = ?', $consumer->id)->order('poll_participation.date DESC');
     $this->view->completedPolls = $db->fetchAll($select2);
     // get invitation
     // add expire_date by Bruce.Liu
     $select3 = $db->select();
     $select3->from('campaign_invitation', '*');
     $select3->join('campaign', 'campaign.id = campaign_invitation.campaign_id ', array('campaign.id', 'pre_campaign_survey', 'name', 'type', 'product_name', 'simple_description', 'invitation_description', 'invitation_description2', 'campaign.total'));
     $select3->where('campaign_invitation.consumer_id = ?', $this->_currentUser->id);
     $select3->where('campaign_invitation.state = ?', 'NEW');
     $select3->where('campaign.expire_date > ?', $currentTime);
     $select3->order('campaign_invitation.create_date DESC');
     $recentInvitationTotalArray = $db->fetchAll($select3);
     // add logic campare total and campaign_partation number  2013-09-16
     // 取到当前被邀请的活动 比较 当前活动的参与人数和当前活动的最高参加人数
     $recentInvitationTotalArrayNew = array();
     $select_participation_sql_rs = array();
     foreach ($recentInvitationTotalArray as $recentInvitationTotal) {
         $select_participation_sql = $db->select();
         $select_participation_sql->from('campaign_invitation', '*');
         $select_participation_sql->join('campaign_participation', 'campaign_invitation.id = campaign_participation.campaign_invitation_id');
         $select_participation_sql->where('campaign_invitation.state = "ACCEPTED" ');
         $select_participation_sql->where('campaign_invitation.campaign_id = ' . $recentInvitationTotal['id']);
         $select_participation_sql_rs = $db->fetchAll($select_participation_sql);
         if (intval($recentInvitationTotal['total']) > count($select_participation_sql_rs)) {
             array_push($recentInvitationTotalArrayNew, $recentInvitationTotal);
         }
     }
     $this->view->recentInvitation = $recentInvitationTotalArrayNew;
     $this->view->allInvitations = $this->view->recentInvitation;
     // $this->view->recentInvitation = $db->fetchRow($select3);
     // $this->view->allInvitations = $db->fetchAll($select3);
     //print_r($this->view->allInvitations);die;
     //		Zend_Debug::dump($this->view->allInvitations);die();
     //post-campaign survey popup
     // add expire_date by Bruce.Liu
     $select4 = $db->select();
     $select4->from('campaign_participation', '*');
     $select4->join('campaign_invitation', 'campaign_participation.campaign_invitation_id = campaign_invitation.id');
     $select4->join('campaign', 'campaign.id = campaign_invitation.campaign_id');
     $select4->where('campaign_invitation.consumer_id = ?', $this->_currentUser->id);
     $select4->where('campaign.expire_date > ?', $currentTime);
     $select4->where('campaign_participation.state = ?', 'FINISHING');
     $select4->order('campaign_invitation.create_date DESC');
     $this->view->postCampaignNotification = $db->fetchRow($select4);
     // shut down pop-up
     $appspace = new Zend_Session_Namespace('application');
     if (!isset($appspace->popup) || $appspace->popup) {
         $this->view->popup = true;
         $appspace->popup = false;
     }
     // consumer info bar session
     $consumerExtraInfo = new Zend_Session_Namespace('consumerExtraInfo');
     if (!isset($consumerExtraInfo->data)) {
         // The username and email are 20 points
         $count = 20;
         $consumerinfoArray = $consumer->toArray();
         for ($i = 0; $i < count($consumerinfoArray); $i++) {
             $temp = each($consumerinfoArray);
             // Address1, phone, city and recipients_name is 5 points each
             if ($temp['key'] == 'address1' || $temp['key'] == 'phone' || $temp['key'] == 'city' || $temp['key'] == 'recipients_name') {
                 if ($temp['value'] != null && $temp['value'] != '') {
                     $count += 5;
                 }
             } else {
                 continue;
             }
         }
         $consumerextraModel = new ConsumerExtraInfo();
         $consumerextra = $consumerextraModel->fetchRow('consumer_id = ' . $this->_currentUser->id);
         if ($consumerextra != null) {
             $extrainfoArray = $consumerextra->toArray();
             $inc = round(60 / (count($extrainfoArray) - 3), 1);
             for ($i = 0; $i < count($extrainfoArray); $i++) {
                 $temp = each($extrainfoArray);
                 // Ignore birth year of children
                 if ($temp['key'] == 'id' || $temp['key'] == 'consumer_id' || $temp['key'] == 'children_birth_year') {
                     continue;
                 } else {
                     if ($temp['value'] != null && $temp['value'] != '') {
                         $count += $inc;
                     }
                 }
             }
             $count = floor($count);
             $count = $count + ($count % 5 == 0 ? 0 : 5 - $count % 5) > 100 ? 100 : $count + ($count % 5 == 0 ? 0 : 5 - $count % 5);
         }
         $consumerExtraInfo->data = $count;
     }
     $this->view->consumerextrainfo = $consumerExtraInfo->data;
     //consumer information
     $select = $db->select();
     $select->from('consumer', '*');
     $select->joinLeft('rank', 'consumer.rank = rank.id', array('name as rname'));
     $select->where('consumer.id = ?', $this->_currentUser->id);
     $this->view->consumer = $db->fetchAll($select);
     //var_dump($this->view->consumer);die;
 }
 function clientmessageAction()
 {
     $this->view->activeTab = 'clientmessage';
     if (!$this->clientdashboardfilter()) {
         return;
     }
     $campaign_id = $this->_request->getParam('id');
     $this->_helper->layout->setLayout($this->getCampaignTemplate($campaign_id));
     // get current page(default page = 1)
     if ($this->_request->getParam('page')) {
         $this->_curPage = $this->_request->getParam('page');
     }
     $clientMessageModel = new ClientMessage();
     $where = "client_message.to=" . $this->_currentClient->id . " or client_message.from=" . $this->_currentClient->id;
     $order = "client_message.id desc";
     $messageList = $clientMessageModel->fetchAll($where, $order);
     $msgMap = array();
     foreach ($messageList as $message) {
         if ($message->parent_id != null) {
             //reply
             $key = $message->parent_id;
             if (!array_key_exists($key, $msgMap)) {
                 $msgMap[$key] = array();
             }
             if (!isset($msgMap[$key]['LASTTIME'])) {
                 //save last time
                 $msgMap[$key]['LASTTIME'] = $message->create_date;
             }
             if (!isset($msgMap[$key]['REPLY'])) {
                 $msgMap[$key]['REPLY'] = array();
             }
             array_push($msgMap[$key]['REPLY'], $message);
         } else {
             //message
             $key = $message->id;
             if (!array_key_exists($key, $msgMap)) {
                 $msgMap[$key] = array();
             }
             $msgMap[$key]['MESSAGE'] = $message;
         }
         //get from name depending on from_type
         if ($message->from_type == "Wildfire") {
             $adminModel = new Admin();
             $admin = $adminModel->fetchRow('id = ' . $message->from);
             $msgMap[$key]['FROM_NAME'] = $admin->name;
         } else {
             if ($message->from_type == "Spark") {
                 $consumerModel = new Consumer();
                 $consumer = $consumerModel->fetchRow('id = ' . $message->from);
                 $msgMap[$key]['FROM_NAME'] = $consumer->recipients_name;
             }
         }
     }
     $this->view->msgMap = $msgMap;
     //Zend_Debug::dump($msgMap);
     //paging
     $this->view->controller = $this->_request->getControllerName();
     $this->view->action = $this->_request->getActionName();
     $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array(array_values($msgMap)));
     $paginator->setCurrentPageNumber($this->_curPage)->setItemCountPerPage($this->_rowsPerPage);
     $this->view->paginator = $paginator;
     //update client message count in session.
     $clientMessageNamespace = new Zend_Session_Namespace('ClientMessage');
     $db = Zend_Registry::get('db');
     $messageCount = $db->fetchOne("SELECT count(*) FROM client_message cm WHERE cm.to_type='Client' and cm.to=:clientId and state='NEW'", array('clientId' => $this->_currentClient->id));
     if ($messageCount > 0) {
         $attrName = "count_" . $this->_currentClient->id;
         $clientMessageNamespace->{$attrName} = $messageCount;
         $this->view->client_message_count = "(" . $messageCount . ")";
     }
     //get current message for client reply save
     $request = $this->getRequest();
     if (!$request->isPost()) {
         $message_id = $request->getParam('message_id');
         if (isset($message_id)) {
             $this->view->current_message_id = $message_id;
         }
     }
     $this->view->campaign_id = $request->getParam('id');
     $clientCampaignListNamespace = new Zend_Session_Namespace('ClientCampaignList');
 }
 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;
 }
 function redeemAction()
 {
     $this->view->title = $this->view->translate("Wildfire") . " - " . $this->view->translate("GIFT_REDEEM");
     if ($this->_request->isPost()) {
         $formData = $this->_request->getPost();
         $cartNamespace = new Zend_Session_Namespace('Cart');
         if ($cartNamespace->list == null) {
             $this->_redirect('gift/list');
             return;
         }
         // validate consumer info
         $consumerModel = new Consumer();
         $consumer = $consumerModel->fetchRow("email = '" . $this->_currentUser->email . "' and password = MD5('" . $formData['password'] . "')");
         if ($consumer == null) {
             $this->_flashMessenger->addMessage($this->view->translate("Gift_consumer_info_incorrect"));
             $this->_flashMessenger->addMessage(true);
             $this->_redirect('gift/confirmcart');
             return;
         }
         // check redeem condition
         $db = Zend_Registry::get('db');
         $selectTotalCompletedCampaign = $db->select();
         $selectTotalCompletedCampaign->from('campaign_participation', 'count(*)')->join('campaign_invitation', 'campaign_participation.campaign_invitation_id = campaign_invitation.id', null)->where('campaign_invitation.consumer_id = ?', $this->_currentUser->id);
         $this->view->completedCampaignAmount = $db->fetchOne($selectTotalCompletedCampaign);
         //			$selectTotalSubmittedReport = $db->select();
         //			$selectTotalSubmittedReport->from('report', 'count(*)')
         //			->where('state = "APPROVED"')
         //			->where('consumer_id = ?', $this->_currentUser->id);
         //			$this->view->submittedReportAmount = $db->fetchOne($selectTotalSubmittedReport);
         if ($this->view->completedCampaignAmount < 1 || $this->_currentUser->pest != null && $this->_currentUser->pest == 1) {
             $this->_flashMessenger->addMessage($this->view->translate("Gift_can_not_redeem_gift"));
             $this->_flashMessenger->addMessage(true);
             $this->_redirect('gift/confirmcart');
             return;
         }
         // check the point
         $selectUsablePoints = $db->select();
         $selectUsablePoints->from('reward_point_transaction_record', 'SUM(point_amount)')->where("consumer_id = ?", $this->_currentUser->id);
         $usablePoints = (int) $db->fetchOne($selectUsablePoints);
         $amountSelectedProductPoint = 0;
         foreach ($cartNamespace->list as $product) {
             $selectSelectedProductPoint = $db->select();
             $selectSelectedProductPoint->from('product', 'point')->where("id = " . $product['id']);
             $selectedProductPoint = (int) $db->fetchOne($selectSelectedProductPoint);
             $amountSelectedProductPoint += $product['amount'] * $selectedProductPoint;
         }
         if ($amountSelectedProductPoint > $usablePoints) {
             $this->_flashMessenger->addMessage($this->view->translate("Gift_have_no_enough_point"));
             $this->_flashMessenger->addMessage(true);
             $this->_redirect('gift/confirmcart');
             return;
         }
         // save shipping info
         $consumerModel = new Consumer();
         $id = $this->_currentUser->id;
         $consumer = $consumerModel->find($id)->current();
         $consumer->recipients_name = $formData['recipients_name'];
         $consumer->phone = $formData['phone'];
         $consumer->address1 = $formData['address1'];
         $consumer->postalcode = $formData['postalcode'];
         if ($formData['city'] != null && $formData['province'] != null) {
             $consumer->city = $formData['city'];
             $consumer->province = $formData['province'];
         }
         if ($formData['englishcity'] != null) {
             $consumer->city = $formData['englishcity'];
             $consumer->province = null;
         }
         if ($formData['province'] == '' && $formData['englishcity'] == null) {
             $consumer->city = null;
             $consumer->province = null;
         }
         $consumer->save();
         // save exchange records
         $currentTime = date("Y-m-d H:i:s");
         $rewardPointTransactionRecordModel = new RewardPointTransactionRecord();
         $prodcutOrderModel = new ProductOrder();
         $notificationModel = new Notification();
         $total_redeem_point = 0;
         foreach ($cartNamespace->list as $product) {
             // add records to reward_point_transaction_record table
             $rewardPointTransactionRecord = array("consumer_id" => $this->_currentUser->id, "DATE" => $currentTime, "transaction_id" => '4', "point_amount" => -$product['amount'] * $product['point']);
             $transactionRecordId = $rewardPointTransactionRecordModel->insert($rewardPointTransactionRecord);
             // add records to product_order table
             $prodcutOrder = array('consumer_id' => $this->_currentUser->id, 'product_id' => $product['id'], 'create_date' => $currentTime, 'state' => 'NEW', 'reward_point_transaction_record_id' => $transactionRecordId, 'amount' => $product['amount']);
             $prodcutOrderId = $prodcutOrderModel->insert($prodcutOrder);
             // roll back if an exception occurred
             // ...
             $total_redeem_point += $product['amount'] * $product['point'];
         }
         // add notification
         $notificationModel->createRecord("REDEEM_POINT", $this->_currentUser->id, $total_redeem_point);
         $this->paidGifts = $cartNamespace->list;
         $cartNamespace->list = null;
         // show redeem.phtml with "... Successfully"
         $this->_flashMessenger->addMessage("Gift_submit_orders_successfully");
         $this->_flashMessenger->addMessage(false);
         $this->_flashMessenger->addMessage($this->paidGifts);
         $this->_redirect('gift/thankyou');
     } else {
         $this->_redirect('gift/list');
     }
 }
 function admincheckemailAction()
 {
     $emailCategory = $this->_request->getParam('emailCategory');
     $emails = array_unique(preg_split('/[;\\s]+[\\n\\r\\t]*/', $this->_request->getParam('emails')));
     $emailsSparts = '';
     $emailsNotSparts = '';
     foreach ($emails as $email) {
         $consumerModel = new Consumer();
         $consumer = $consumerModel->fetchRow("email = '" . $email . "'");
         if ($consumer != null) {
             $emailsSparts .= $email . "; ";
         } else {
             $emailsNotSparts .= $email . "; ";
         }
     }
     print_r($emailsSparts . "|" . $emailsNotSparts);
     die;
 }
 function adminlistAction()
 {
     $this->_helper->layout->setLayout("layout_admin");
     $request = $this->getRequest();
     $db = Zend_Registry::get('db');
     // get: show current plan
     if (!$request->isPost()) {
         $plan_id = $request->getParam('plan_id');
         // get spark's telephone log
         $telephoneLogModel = new TelephoneLog();
         $messageArray = $this->_flashMessenger->getMessages();
         if ($messageArray != null) {
             // show pre page
             if ($messageArray[0][0] == 'preView') {
                 $telephoneLog = $telephoneLogModel->fetchRow("id < " . $messageArray[0][1] . "  and plan_id = " . $plan_id, 'id desc');
             }
             // show first call back page
             if ($messageArray[0][0] == 'firstcallbackView') {
                 $telephoneLog = $telephoneLogModel->fetchRow("busy = 1  and plan_id = " . $plan_id);
             }
             // show pre call back page
             if ($messageArray[0][0] == 'precallbackView') {
                 $telephoneLog = $telephoneLogModel->fetchRow("id < " . $messageArray[0][1] . " and busy = 1  and plan_id = " . $plan_id, 'id desc');
             }
             //show next call back page
             if ($messageArray[0][0] == 'nextcallbackView') {
                 $telephoneLog = $telephoneLogModel->fetchRow("id > " . $messageArray[0][1] . " and busy = 1  and plan_id = " . $plan_id);
             }
         }
         if (!isset($telephoneLog)) {
             //show the next unhandled page
             $telephoneLog = $telephoneLogModel->fetchRow("state = 'NEW'  and plan_id = " . $plan_id);
         }
         if (!isset($telephoneLog)) {
             //if plan is finished, show the first page
             $telephoneLog = $telephoneLogModel->fetchRow("plan_id = " . $plan_id);
         }
         if (isset($telephoneLog)) {
             $selectTag = $db->select();
             $selectTag->from('telephone_log_tag', 'tag_id')->where('telephone_log_id = ?', $telephoneLog->id);
             $selectedTags = $db->fetchAll($selectTag);
             $this->view->selectedTagsArray = array();
             foreach ($selectedTags as $tag) {
                 $this->view->selectedTagsArray[$tag['tag_id']] = '1';
             }
         }
         $consumer_id = $telephoneLog->consumer_id;
         $campaign = new Campaign();
         $order = "expire_date desc";
         $this->view->campaigns = $campaign->fetchAll(null, $order, null, null);
         $this->view->plan_id = $plan_id;
         $this->view->telephoneLog_id = $telephoneLog->id;
         $this->view->telephoneLog = $telephoneLog;
         // post: create new plan
     } else {
         $formData = $request->getPost();
         $sql = $formData['sql'];
         if ($sql == '' || $sql == null) {
             return;
         } else {
             $sql = 'select consumer.* ' . $sql;
         }
         $type = $formData['type'];
         $content = $formData['content'];
         //1.execute sql
         $db = Zend_Registry::get('db');
         $result = $db->query($sql);
         $consumers = $result->fetchAll();
         //2.create new telephone plan
         $telephonePlanModel = new TelephonePlan();
         $row = $telephonePlanModel->createRow();
         $row->sql = $sql;
         $row->type = $type;
         $row->total_consumers = count($consumers);
         $row->content = $content;
         //2011-04-08 ham.bao separate the sessions with admin
         $row->admin_id = $this->_currentAdmin->id;
         $row->edit_time = date("Y-m-d H:i:s");
         $plan_id = $row->save();
         //3.create new telephone logs
         $db = Zend_Registry::get('db');
         $result = $db->query($sql);
         $consumers = $result->fetchAll();
         $telephoneLogModel = new TelephoneLog();
         $temp = 1;
         foreach ($consumers as $row) {
             $newlog = $telephoneLogModel->createRow();
             $newlog->consumer_id = $row['id'];
             //2011-04-08 ham.bao separate the sessions with admin
             $newlog->admin_id = $this->_currentAdmin->id;
             $newlog->state = 'New';
             $newlog->plan_id = $plan_id;
             $newlog->edit_time = date("Y-m-d H:i:s");
             if ($temp == 1) {
                 $telephoneLog_id = $newlog->save();
                 $temp = 0;
             } else {
                 $newlog->save();
             }
         }
         $consumer_id = $consumers[0]['id'];
         $this->view->plan_id = $plan_id;
         $this->view->telephoneLog_id = $telephoneLog_id;
         $this->view->offset = 0;
     }
     // get spark's info
     $consumerModel = new Consumer();
     $this->view->consumerBaseInfo = $consumerModel->fetchRow('id = ' . $consumer_id);
     $consumerExtraInfoModel = new ConsumerExtraInfo();
     $this->view->consumerExtraInfo = $consumerExtraInfoModel->fetchRow('consumer_id = ' . $consumer_id);
     $this->view->gender = isset($this->consumerExtraInfo) && isset($this->consumerExtraInfo->gender) ? $this->consumerExtraInfo->gender : "";
     $consumerLogModel = new Log();
     $this->view->consumerLog = $consumerLogModel->fetchRow('consumer_id = ' . $consumer_id, 'date desc');
     $selectTotalReport = $db->select();
     $selectTotalReport->from('report', 'count(*)')->where('consumer_id = ?', $consumer_id);
     $this->view->totalReport = $db->fetchOne($selectTotalReport);
     $selectTotalCampaign = $db->select();
     $selectTotalCampaign->from('campaign_invitation', null)->join('campaign', 'campaign.id = campaign_invitation.campaign_id', 'name')->where('consumer_id = ?', $consumer_id)->where("state = 'ACCEPTED'");
     $this->view->totalCampaigns = $db->fetchAll($selectTotalCampaign);
     //tag for telephone
     $select = $db->select();
     $select->from('tags', array('name as key', 'id as tag_id'))->where("module = 'TELEPHONE'")->order('sort');
     $this->view->tags = $db->fetchAll($select);
     // show page number
     $selectTotalPage = $db->select();
     $selectTotalPage->from('communicate_plan', 'total_consumers')->where('id = ?', $this->view->plan_id);
     $this->view->totalPage = $db->fetchOne($selectTotalPage);
     $selectCurrentPage = $db->select();
     $selectCurrentPage->from('telephone_log', 'count(*)')->where('plan_id = ?', $this->view->plan_id)->where('id <= ?', $this->view->telephoneLog_id);
     $this->view->currentPage = $db->fetchOne($selectCurrentPage);
     // show call back page number
     $selectTotalCallbackPage = $db->select();
     $selectTotalCallbackPage->from('telephone_log', 'count(*)')->where('plan_id = ?', $this->view->plan_id)->where('busy = 1');
     $this->view->totalCallbackPage = $db->fetchOne($selectTotalCallbackPage);
     if (isset($messageArray) && isset($messageArray[0][0]) && ($messageArray[0][0] == 'nextcallbackView' || $messageArray[0][0] == 'precallbackView' || $messageArray[0][0] == 'firstcallbackView' || $messageArray[0][0] == 'finishcallbackView')) {
         if ($messageArray[0][0] == 'finishcallbackView') {
             $this->view->currentCallbackPage = 0;
         } else {
             $selectCurrentCallbackPage = $db->select();
             $selectCurrentCallbackPage->from('telephone_log', 'count(*)')->where('plan_id = ?', $this->view->plan_id)->where('id <= ?', $this->view->telephoneLog_id)->where('busy = 1');
             $this->view->currentCallbackPage = $db->fetchOne($selectCurrentCallbackPage);
             $this->view->callbackPageTitle = 'Call Back ';
         }
     } else {
         $this->view->currentCallbackPage = 0;
     }
     // show old telephone log
     $selectOldTelephoneLog = $db->select();
     $selectOldTelephoneLog->from('telephone_log', '*')->where('consumer_id = ?', $consumer_id)->where("state != 'NEW'")->where('plan_id != ?', $this->view->plan_id);
     $this->view->oldTelephoneLogs = $db->fetchAll($selectOldTelephoneLog);
     $this->view->oldTelephoneLogTagArray = array();
     foreach ($this->view->oldTelephoneLogs as $oldTelephoneLog) {
         $selectOldTelephoneLogTag = $db->select();
         $selectOldTelephoneLogTag->from('tags', 'name')->join('telephone_log_tag', 'tags.id = telephone_log_tag.tag_id', null)->where('telephone_log_tag.telephone_log_id = ?', $oldTelephoneLog['id']);
         $this->view->oldTelephoneLogTagArray[$oldTelephoneLog['id']] = $db->fetchAll($selectOldTelephoneLogTag);
     }
 }