Esempio n. 1
0
 function adminlistAction()
 {
     $this->_helper->layout->setLayout("layout_admin");
     $request = $this->getRequest();
     if (!$request->isPost()) {
         $plan_id = $request->getParam('plan_id');
     } else {
         //create new plan and execute sql
         $formData = $request->getPost();
         $sql = $formData['sql'];
         if ($sql == '' || $sql == null) {
             return;
         } else {
             $sql = 'select consumer.* ' . $sql;
         }
         $type = $formData['type'];
         $content = $formData['content'];
         //1.get all consumers
         $db = Zend_Registry::get('db');
         $result = $db->query($sql);
         $consumers = $result->fetchAll();
         //2. new a communicate plan
         $telephonePlanModel = new TelephonePlan();
         $row = $telephonePlanModel->createRow();
         $row->sql = $sql;
         $row->type = $type;
         $row->content = $content;
         //$row->total_consumers = count($consumers);
         //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 sms
         $num = 0;
         foreach ($consumers as $consumer) {
             if ($consumer['phone'] == null || $consumer['phone'] == '') {
                 continue;
             }
             if (preg_match('/1[35]\\d{9}/', $consumer['phone'], $rs) && count($rs) > 0) {
                 $phone = $rs[0];
             } else {
                 continue;
             }
             $sms = new ShortMessage();
             $row = $sms->createRow();
             $row->consumer_id = $consumer['id'];
             $row->phone = $phone;
             $row->state = 'New';
             $row->plan_id = $plan_id;
             $row->send_date = date("Y-m-d H:i:s");
             $row->save();
             $num++;
         }
         //4.update plan total number
         $telephonePlanModel = new TelephonePlan();
         $set = array('total_consumers' => $num);
         $where = "id=" . $plan_id;
         $telephonePlanModel->update($set, $where);
     }
     //5.show consumers
     $db = Zend_Registry::get('db');
     $select = $db->select();
     $select->from('short_message', array('phone', 'state', 'send_date', 'plan_id'))->join('consumer', 'consumer.id = short_message.consumer_id', 'name')->where("short_message.plan_id = ?", $plan_id)->order('short_message.state asc')->order('short_message.id');
     $this->view->sms = $db->fetchAll($select);
     $this->view->plan_id = $plan_id;
 }
 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);
     }
 }