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