source: pro-violet-viettel/sourcecode/application/modules/services/models/services_model.php

Last change on this file was 909, checked in by dungnv, 10 years ago
File size: 20.7 KB
RevLine 
[499]1<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2
[906]3if ( ! defined('_SBG_MO_REGISTER'))                                             define('_SBG_MO_REGISTER',                                              'SUBSCR');
4if ( ! defined('_SBG_MO_REGISTER_FOR'))                                         define('_SBG_MO_REGISTER_FOR',                                  'SUBSCR_FOR');
5if ( ! defined('_SBG_MO_PHONENUM_CHANGE'))                                      define('_SBG_MO_PHONENUM_CHANGE',                               'PHONE_CHANGE');
6if ( ! defined('_SBG_MO_PASSWORD_RECOVERY'))                            define('_SBG_MO_PASSWORD_RECOVERY',                     'PWD_RECOVER');
7if ( ! defined('_SBG_MO_VIP_REGISTER'))                                         define('_SBG_MO_VIP_REGISTER',                                  'REG_VIP');
8if ( ! defined('_SBG_MO_PAY_TO_ACCOUNT'))                                       define('_SBG_MO_PAY_TO_ACCOUNT',                                'PAY');
9if ( ! defined('_SBG_MO_PAY_TO_ACCOUNT_FOR'))                           define('_SBG_MO_PAY_TO_ACCOUNT_FOR',                    'PAY_FOR');
10if ( ! defined('_SBG_MO_UNSUBSCRIBE_SERVICE'))                          define('_SBG_MO_UNSUBSCRIBE_SERVICE',                   'UNSUBSCR');
11if ( ! defined('_SBG_MO_SUPPOR_SERVICE'))                                       define('_SBG_MO_SUPPOR_SERVICE',                                'SUPPORT');
12if ( ! defined('_SBG_MO_SYNTAX_ERR'))                                           define('_SBG_MO_SYNTAX_ERR',                                    'SYNTAX_ERR');
13if ( ! defined('_SBG_MO_PASSWORD_COLLABORATOR_SERVICE'))        define('_SBG_MO_PASSWORD_COLLABORATOR_SERVICE', 'PWD_COLLABORATOR');
[499]14
[906]15if ( ! defined('_SBG_CARD_PAY_FAIL'))                                           define('_SBG_CARD_PAY_FAIL',                    -1);
16if ( ! defined('_SBG_CARD_PAY_SUCCESS'))                                        define('_SBG_CARD_PAY_SUCCESS',                 1);
[499]17
[906]18if ( ! defined('_SBG_CHARGING_FAIL'))                                           define('_SBG_CHARGING_FAIL', -1);
19if ( ! defined('_SBG_CHARGING_SUCCESS'))                                        define('_SBG_CHARGING_SUCCESS', 1);
20if ( ! defined('_SBG_CHARGING_FAIL_NOT_ENOUGH'))                        define('_SBG_CHARGING_FAIL_NOT_ENOUGH', 401);
21if ( ! defined('_SBG_CHARGING_FAIL_NOT_VIETTEL'))                       define('_SBG_CHARGING_FAIL_NOT_VIETTEL', 402);
22if ( ! defined('_SBG_CHARGING_NUMBER_NOT_EXISTED'))             define('_SBG_CHARGING_NUMBER_NOT_EXISTED', 403);
23if ( ! defined('_SBG_CHARGING_NUMBER_NOT_AVAILABLE'))           define('_SBG_CHARGING_NUMBER_NOT_AVAILABLE', 404);
24if ( ! defined('_SBG_CHARGING_NUMBER_CHANGED_OWNER'))           define('_SBG_CHARGING_NUMBER_CHANGED_OWNER', 405);
25if ( ! defined('_SBG_CHARGING_FAIL_MORETHAN_LIMIT'))            define('_SBG_CHARGING_FAIL_MORETHAN_LIMIT', 406);
26if ( ! defined('_SBG_CHARGING_GENERAL_ERROR'))                          define('_SBG_CHARGING_GENERAL_ERROR', 440);
27if ( ! defined('_SBG_CHARGING_NUMBER_NOT_REGISTED'))            define('_SBG_CHARGING_NUMBER_NOT_REGISTED', 501);
28if ( ! defined('_SBG_CHARGING_MAX_VALUE'))                                      define('_SBG_CHARGING_MAX_VALUE', 50000);
29if ( ! defined('_SBG_CHARGING_MIN_VALUE'))                                      define('_SBG_CHARGING_MIN_VALUE', 5000);
[499]30
[716]31
[906]32if ( ! defined('_SBG_SEND_MT_FAIL'))                                            define('_SBG_SEND_MT_FAIL', -1);
33if ( ! defined('_SBG_SEND_MT_SUCCESS'))                                         define('_SBG_SEND_MT_SUCCESS', 1);
34if ( ! defined('_SBG_MT_SEND_NUMBER'))                                          define('_SBG_MT_SEND_NUMBER', '841662860000');
35if ( ! defined('_SBG_MT_CP_CODE'))                                                      define('_SBG_MT_CP_CODE', '601');
[499]36
[906]37if ( ! defined('_SBG_SERVICE_COMMAND_CODE'))                            define('_SBG_SERVICE_COMMAND_CODE', 'SBG');
38if ( ! defined('_SBG_SERVICE_SERVICEID'))                                       define('_SBG_SERVICE_SERVICEID', '8062');
[598]39
[906]40if ( ! defined('_SBG_MO_PROCCESS_ERR'))                                         define('_SBG_MO_PROCCESS_ERR', 0);
[598]41
[906]42if ( ! defined('_SBG_GET_COLLABORATOR_FAIL'))                           define('_SBG_GET_COLLABORATOR_FAIL', -1);
[685]43
[884]44Class Services_model extends CI_Model
[499]45{
46        private $_arySmsMO = array(
[906]47                _SBG_MO_REGISTER                                                => array('pattern' => '/^(SBG)([[:blank:]])(DK)$/'),
48                _SBG_MO_REGISTER_FOR                                    => array('pattern' => '/^(SBG)([[:blank:]])(DK)([[:blank:]])([0-9]{10,11})$/'),
49                //_SBG_MO_PHONENUM_CHANGE                               => array('pattern' => '/^(SBG)([[:blank:]])(DDT)([[:blank:]])([0-9]{10,11})([[:blank:]])([a-zA-Z0-9]{1,})$/'),
50                _SBG_MO_PASSWORD_RECOVERY                               => array('pattern' => '/^(SBG)([[:blank:]])(MK)$/'),
51                _SBG_MO_VIP_REGISTER                                    => array('pattern' => '/^(SBG)([[:blank:]])(VIP)([[:blank:]])([a-zA-Z0-9]{1,})$/'),
52                _SBG_MO_PAY_TO_ACCOUNT                                  => array('pattern' => '/^(SBG)([[:blank:]])(NAP)([[:blank:]])([0-9]{3,})$/'),
53                _SBG_MO_PAY_TO_ACCOUNT_FOR                              => array('pattern' => '/^(SBG)([[:blank:]])(NAP)([[:blank:]])([0-9]{3,})([[:blank:]])([0-9]{10,11})$/'),
54                _SBG_MO_SUPPOR_SERVICE                                  => array('pattern' => '/^(SBG)([[:blank:]])(HD)$/'),
55                _SBG_MO_UNSUBSCRIBE_SERVICE                     => array('pattern' => '/^(SBG)([[:blank:]])(HUY)$/'),
56                _SBG_MO_PASSWORD_COLLABORATOR_SERVICE   => array('pattern' => '/^(SBG)([[:blank:]])(CTV)$/')
[884]57        );
58
[499]59        public function __construct(){
60                parent::__construct();
[636]61                $this->load->helper('language');
62                $this->lang->load('messages', 'message');
[499]63        }
[884]64
[647]65        /**
66         * messageAnalys
[884]67         *
[647]68         * @todo Analysis content of incoming message
[884]69         *
[647]70         * @param String $message - coming SMS
71         * @return multitype:Ambigous <string, multitype> multitype:multitype
72         */
[579]73        public function messageAnalys ($message)
[499]74        {
[884]75                $aryMatched = array();
[579]76                $aryContent = array();
[647]77                $result = FALSE;
[884]78
[647]79                foreach ($this->_arySmsMO as $case => $pattern)
[499]80                {
[647]81                        $result = preg_match($pattern['pattern'], strtoupper(trim($message)));
82                        if ((bool)$result) {
83                                $aryMatched = explode(' ', trim($message));
84                                break;
85                        }
[499]86                }
[884]87
[647]88                $case = (bool)$result ? $case:_SBG_MO_SYNTAX_ERR;
[884]89
[647]90                foreach($aryMatched as $k => $val) {
[884]91                        if ($k > 1) $aryContent[] = $val;
[579]92                }
[884]93
[707]94                return array('case' => $case, 'content' => $aryContent);
[499]95        }
[884]96
[647]97        /**
98         * processMORequest
[884]99         *
[647]100         * @todo process action analysed from messageAnalys
[884]101         *
[647]102         * @param unknown $sentNumber
103         * @param unknown $message
104         * @return string
105         */
[884]106        public function processMORequest ($sentNumber, $message, &$mtBody = null)
[499]107        {
[513]108                $debugMsg = $message."\n";
[884]109
[575]110                $sentNumber = $this->formatPhoneNumber($sentNumber);
[884]111
[499]112                $smsReturn = '';
[884]113                $aryMOAnalys = $this->messageAnalys($message);
[499]114                $case = $aryMOAnalys['case'];
115                $aryContents = isset($aryMOAnalys['content']) ? $aryMOAnalys['content']: null;
116                $this->load->model('frontend/user_model', 'objUserModel');
[906]117                $this->load->model('collaborator/collaborator_model', 'objCollaboratorModel');
[513]118                $debugMsg .= $case;
[884]119
[499]120                switch ($case) {
121                        case _SBG_MO_REGISTER:
122                        case _SBG_MO_REGISTER_FOR:
[583]123                                if ($case == _SBG_MO_REGISTER_FOR) {
[647]124                                        if (!preg_match('/^([0-9]{10,11}$)$/', $aryContents[0])) {
[636]125                                                $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_PHONENUM_WRONG_FORMAT_MSG');
[583]126                                                break;
127                                        }
128                                }
[884]129
130                                $userName = isset($aryContents[0]) ? $this->formatPhoneNumber($aryContents[0]) : $sentNumber;
[647]131                                $collaborator = isset($aryContents[0]) ? $sentNumber:null;
[579]132                                $collaboratorMsg = '';
[884]133
[579]134                                $sms = $this->objUserModel->register($userName, $collaborator, $collaboratorMsg);
[884]135
[528]136                                if ($case == _SBG_MO_REGISTER_FOR) {
[579]137                                        $smsReturn = $collaboratorMsg;
[528]138                                        $arySMS = explode ('|', $sms);
[768]139                                        if ((int)$arySMS[0] == 1 ) {
140                                                $mtBody = $arySMS[1];
141                                                $sendMT = $this->sendMT($this->formatPhoneNumber($userName, -1), $mtBody);
142                                        }
[884]143
[528]144                                }
145                                else {
146                                        $smsReturn = $sms;
147                                }
[707]148
[499]149                                break;
[768]150                        /* case _SBG_MO_PHONENUM_CHANGE:
[647]151                                if (!preg_match('/^(09\d{8}|01\d{9})$/', $aryContents[0])) {
[636]152                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_PHONENUM_WRONG_FORMAT_MSG');
[583]153                                        break;
154                                }
[884]155
[647]156                                $oldPhoneNumber = $this->formatPhoneNumber($aryContents[0]);
157                                $password = $aryContents[1];
[499]158                                $smsReturn = $this->objUserModel->changeProfile($sentNumber, $oldPhoneNumber, $password);
[884]159
[615]160                                $arySMS = explode('|', $smsReturn);
161                                $changeResult = (int)$arySMS[0];
[884]162
[636]163                                $aryPatterns = array('/:sentNumber:/');
164                                $sms = preg_replace($aryPatterns, array($sentNumber), lang('_SBG_MO_USER_OLD_PHONENUM_CHANGE_SUCCESS_MSG'));
[615]165                                $sendMT = $changeResult == 1 ? $this->sendMT($this->formatPhoneNumber($oldPhoneNumber, -1), $sms) : '';
[768]166                                break; */
[499]167                        case _SBG_MO_PASSWORD_RECOVERY:
[647]168                                $smsReturn = $this->objUserModel->changePassword($sentNumber);
169                                break;
[499]170                        case _SBG_MO_VIP_REGISTER:
[707]171                                $packageData = array();
[647]172                                $p_code = $aryContents[0];
[707]173                                $smsReturn = $this->objUserModel->registerVip($sentNumber, $p_code, $packageData);
[884]174
[707]175                                $arySmsReturn = explode('|', $smsReturn);
176                                $result = $arySmsReturn[0];
177
178                                if (trim($arySmsReturn[1]) == trim(lang('_SBG_MO_USER_REGISTER_VIP_FAIL_NOT_ENOUGH_MSG'))) {
179                                        $amount = $packageData ['p_price'];
[909]180                                        $result = $this->chargeRootAccountProcess($sentNumber, $amount, $sentNumber.' paid for SBG');
[707]181
182                                        if ($result == _SBG_CHARGING_SUCCESS) {
[716]183                                                $amount = $packageData ['p_price'];
[707]184                                                $this->objUserModel->rechargeAccount($sentNumber, $amount);
185                                                $smsReturn = $this->objUserModel->registerVip($sentNumber, $p_code, $packageData);
186                                                $paidTime = date('Y-m-d H:i:s');
187                                                $this->objUserModel->insertPaidlog($sentNumber, $sentNumber, _SBG_PAIDTYPE_SMS, $amount, $paidTime);
188                                                $result = 1;
189                                        }
190                                }
191
192                                if ((int)$result == 1) $this->objUserModel->insertRegisterVipLog($sentNumber, $p_code, true);
[499]193                                break;
[707]194
[499]195                        case _SBG_MO_PAY_TO_ACCOUNT:
196                        case _SBG_MO_PAY_TO_ACCOUNT_FOR:
[716]197                                error_log(date('Y-m-d H:i:s').' -- DATA: '. var_export($aryContents, TRUE).' -- CASE: '. $case . "\n", 3, '/srv/www/sbg/log/pay.log');
[884]198
[647]199                                $userName = isset($aryContents[1]) ? $this->formatPhoneNumber($aryContents[1]) : $sentNumber;
[612]200                                if ($case == _SBG_MO_PAY_TO_ACCOUNT_FOR && !preg_match('/^(09\d{8}|01\d{9})$/', $userName)) {
[636]201                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_PHONENUM_WRONG_FORMAT_MSG');
[603]202                                        break;
203                                }
[884]204
[647]205                                $amount = $aryContents[0];
[615]206                                if (!preg_match('/^[0-9]{3,}$/', $amount)) {
[636]207                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_AMOUNT_WRONG_FORMAT_MSG');
[615]208                                        break;
209                                }
[884]210
211                                if ((int)$amount < _SBG_CHARGING_MIN_VALUE) {
212                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_AMOUNT_LESS_THAN_MIN_VALUE_MSG');
213                                        break;
214                                }
215
[598]216                                $result =$this->chargeRootAccountProcess($sentNumber, $amount, $sentNumber.' paid for SBG');
[884]217
[598]218                                if ($result == _SBG_CHARGING_SUCCESS) {
[499]219                                        $smsReturn = $this->objUserModel->rechargeAccount($userName, $amount);
[598]220                                        if ($case == _SBG_MO_PAY_TO_ACCOUNT_FOR) {
[579]221                                                $arySmsReturn = explode ('|', $smsReturn);
[653]222                                                $aryPatterns = array('/:amount:/', '/:sentNumber:/');
223                                                $smsMT = preg_replace($aryPatterns, array($amount, $sentNumber), lang('_SBG_MO_PAY_TO_ACCOUNT_FOR_MSG'));
[768]224                                                $mtBody = $smsMT;
[579]225                                                $sendMT = $this->sendMT($this->formatPhoneNumber($userName, -1), $smsMT);
[707]226                                                $smsReturn = $arySmsReturn[0].'|'.preg_replace(array('/:amount:/','/:username:/'), array($amount, $userName), lang('_SBG_MO_PAY_TO_ACCOUNT_FOR_OTHER_SUCCESS_MSG'));
[556]227                                        }
[598]228                                        //write to paid log
229                                        $paidTime = date('Y-m-d H:i:s');
230                                        $this->objUserModel->insertPaidlog($sentNumber, $userName, _SBG_PAIDTYPE_SMS, $amount, $paidTime);
[499]231                                }
[598]232                                else if ($result == _SBG_CHARGING_FAIL_NOT_ENOUGH) {
[818]233                                        $aryPatterns = array ('/:sentNumber:/');
234                                        $smsReturn = preg_replace($aryPatterns, array($sentNumber), lang('_SBG_MO_CHARGING_FAIL_NOT_ENOUGH_MSG'));
[636]235                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.$smsReturn;
[598]236                                }
237                                else if ($result == _SBG_CHARGING_FAIL_MORETHAN_LIMIT) {
[909]238                                        $aryPatterns = array ('/:sendid:/');
[636]239                                        $smsReturn = preg_replace($aryPatterns, array($sentNumber), lang('_SBG_MO_CHARGING_FAIL_MORETHAN_LIMIT_MSG'));
[909]240                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.$smsReturn;
[612]241                                }else if ($result == _SBG_CHARGING_FAIL_NOT_VIETTEL || $result == _SBG_CHARGING_NUMBER_NOT_EXISTED || $result == _SBG_CHARGING_NUMBER_NOT_AVAILABLE) {
[636]242                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_CHARGING_FAIL_NOT_VIETTEL_MSG');
[884]243                                }
[598]244                                else {
[636]245                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_CHARGING_FAIL_MSG');
[598]246                                }
[499]247                                break;
[884]248
[647]249                        case _SBG_MO_SUPPOR_SERVICE:
[818]250                                if ($this->isViettel($sentNumber)){
251                                        $smsReturn = '1|'.lang('_SBG_MO_SUPPORT_VIETTEL_MSG');
252                                }else{
253                                        $smsReturn = '1|'.lang('_SBG_MO_SUPPORT_NOT_VIETTEL_MSG');
254                                }
[647]255                                break;
[909]256
[906]257                        case _SBG_MO_PASSWORD_COLLABORATOR_SERVICE:
258                                $smsReturn = $this->objCollaboratorModel->getPassword($sentNumber);
259                                break;
[909]260
[529]261                        case _SBG_MO_UNSUBSCRIBE_SERVICE:
[499]262                        case _SBG_MO_SYNTAX_ERR:
263                        default:
[636]264                                $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_SYNTAX_ERR_MSG');
[499]265                                break;
266                }
[884]267
[775]268                $aryTmp = explode('|', $smsReturn);
269                $mtBody = $aryTmp[1] . "\n" . $mtBody;
[884]270
[579]271                return $smsReturn.'|'.$case;
[499]272        }
[884]273
274
[647]275        /**
276         * cardPaidProcess
[884]277         *
[647]278         * @todo Call Topup webservice to check and lock prepaid-card
279         * @param Array $aryCardInfo
280         * @param Array $aryTopupResult
281         * @return string
282         */
[884]283        public function cardPaidProcess ($aryCardInfo, &$aryTopupResult = array())
[499]284        {
285                $url = $this->config->item('topup_service_url');
286                $action = 'http://tempuri.org/ITopupService/TopUp';
287                $xml = $this->load->view('topup', $aryCardInfo, true);
[884]288
[499]289                $client = new nusoap_client($url);
290                $client->useHTTPPersistentConnection();
291                $client->soap_defencoding = 'UTF-8';
292                $client->operation = $action;
[884]293
[519]294                $result = $client->send($xml, $action);
[884]295
[499]296                if ($client->fault) {
297                        return _SBG_CARD_PAY_FAIL;
298                }
[884]299
[528]300                $keys = array_keys($result);
[884]301
[528]302                $aryTopupResult = $result[$keys[0]];
[632]303
304                $debugMsg = 'Logged time: '. date('Y-m-d H:i:s') ."\n";
305                $debugMsg .=  'Send:'."\n" .$xml ."\n\n";
306                $debugMsg .= 'Result:'."\n". var_export($result, TRUE);
307                write_file('./log/topup_log', $debugMsg);
308
[499]309                if ($aryTopupResult['Success'] == 'false') {
310                        return _SBG_CARD_PAY_FAIL;
311                }
[884]312
[499]313                return _SBG_CARD_PAY_SUCCESS;
314        }
[884]315
[647]316        /**
317         * chargeRootAccountProcess
[884]318         *
[647]319         * @todo Call charging webservice to charged fee from phone root account
320         * @param String $sentID
321         * @param Integer $amount
322         * @param String $contents
323         * @return string|number
324         */
[884]325        public function chargeRootAccountProcess ($sentID, $amount = 0, $contents = '')
[499]326        {
327                $url = $this->config->item('charging_service_url');
328                $username = $this->config->item('charging_username');
329                $password = $this->config->item('charging_password');
[909]330                $action = 'http://tempuri.org/Charge';
[884]331
[499]332                $aryParams = array(
333                                'user' => $username,
334                                'pass' => $password,
335                                'MSISDN' => $sentID,
336                                'Charging' => $amount,
337                                'Contents' => $contents
338                );
[707]339
[883]340                $xml = $this->load->view('services/charging', $aryParams, true);
[499]341                $client = new nusoap_client($url);
342                $client->useHTTPPersistentConnection();
343                $client->soap_defencoding = 'UTF-8';
344                $client->operation = $action;
345                $result = $client->send($xml, $action);
[909]346
347                error_log(date('Y-m-d H:i:s').' -- DATA: '. var_export($xml, TRUE).' -- CASE: '. $case . "\n", 3, '/srv/www/sbg/log/chargeresult.log');
348                error_log(date('Y-m-d H:i:s').' -- DATA: '. var_export($result, TRUE).' -- CASE: '. $case . "\n", 3, '/srv/www/sbg/log/chargeresult.log');
349
[499]350                if ($client->fault) {
351                        return _SBG_CHARGING_FAIL;
352                }
[884]353
354                $aryErrs = array (      _SBG_CHARGING_FAIL_NOT_ENOUGH,
355                                                        _SBG_CHARGING_FAIL_NOT_VIETTEL,
[647]356                                                        _SBG_CHARGING_FAIL_MORETHAN_LIMIT,
357                                                        _SBG_CHARGING_NUMBER_NOT_EXISTED,
358                                                        _SBG_CHARGING_NUMBER_NOT_AVAILABLE,
359                                                        _SBG_CHARGING_NUMBER_CHANGED_OWNER,
360                                                        _SBG_CHARGING_GENERAL_ERROR,
361                                                        _SBG_CHARGING_NUMBER_NOT_REGISTED);
[884]362
363                if (in_array((int)$result['processChargingResult'], $aryErrs))
364                        return (int)$result['processChargingResult'];
365
[499]366                return _SBG_CHARGING_SUCCESS;
367        }
[884]368
[647]369        /**
370         * sendMT
[884]371         *
[647]372         * @todo Calling MT webservice to send a SMS to a phone number
373         * @param String $receiverID
374         * @param String $message
375         * @return string
376         */
[499]377        public function sendMT ($receiverID, $message)
378        {
379                $aryMatch = array();
[884]380
[499]381                if (preg_match('/^(0)([0-9]{9,10})$/', $receiverID, $aryMatch) == 1) {
382                        $receiverID = '84'. $aryMatch[2];
383                }
[884]384
[499]385                $username = $this->config->item('mt_username');
386                $password = $this->config->item('mt_password');
387                $action = 'http://tempuri.org/InsertMT';
[884]388
[499]389                $aryParams = array(
390                                'User' => $username,
391                                'Pass' => $password,
392                                'CPCode' => _SBG_MT_CP_CODE,
393                                'UserID' => _SBG_MT_SEND_NUMBER,
394                                'RequestID' => '4',
395                                'ReceiverID' => $receiverID,
396                                'ServiceID' => _SBG_SERVICE_SERVICEID,
397                                'CommandCode' => _SBG_SERVICE_COMMAND_CODE,
398                                'ContentType' => '0',
399                                'Info' => $message
400                );
[884]401
[883]402                $xml = $this->load->view('services/mt', $aryParams, true);
[513]403                $url = $this->config->item('mt_service_url');
[499]404                $client = new nusoap_client($url);
405                $client->useHTTPPersistentConnection();
406                $client->soap_defencoding = 'UTF-8';
407                $client->operation = $action;
408                $result = $client->send($xml, $action);
[884]409
[499]410                if ($client->fault || (int)$result['InsertMTResult'] != 1) {
411                        return _SBG_SEND_MT_FAIL;
412                }
[884]413
[499]414                return _SBG_SEND_MT_SUCCESS;
415        }
[884]416
[677]417        public function getCollaborator ($type = 2, $page = 10, $displaypage = 1) {
418                $action = 'http://tempuri.org/InsertMT';
419                $url = $this->config->item('bccs_service_url');
420                $username = $this->config->item('bccs_username');
421                $password = $this->config->item('bccs_password');
422                $wscode = 'getListShopAndStaftInfo';
423                $aryParams = array(
424                                'user' => $username,
425                                'pass' => $password,
426                                'wscode' => $wscode,
427                                'type' => $type,
428                                'page' => $page,
429                                'displaypage' => $displaypage
430                );
[884]431
[677]432                $xml = $this->load->view('bscc', $aryParams, true);
[884]433
[677]434                $client = new nusoap_client($url);
435                $client->useHTTPPersistentConnection();
436                $client->soap_defencoding = 'UTF-8';
[822]437                $client->decode_utf8 = false;
[884]438
[677]439                $client->operation = $action;
440                $result = $client->send($xml, $action);
[685]441                if ($client->fault || (int)$result['Result']['error'] != 0) {
442                        return _SBG_GET_COLLABORATOR_FAIL;
443                }
[884]444
[685]445                return $result['Result']['original'];
[677]446        }
[884]447
[647]448        /**
449         * formatPhoneNumber
[884]450         *
[647]451         * @todo format phone number to prefix 0 or 84
452         * @param String $phoneNumber
453         * @param Integer $direction
454         * @return String
455         */
[579]456        public function formatPhoneNumber ($phoneNumber, $direction = 1) {
[838]457                $result = $phoneNumber;
[575]458                $aryMatch = array();
[579]459                if (preg_match('/^(84)([0-9]{9,10})$/', $phoneNumber, $aryMatch) == 1 && $direction == 1) {
[575]460                        $result = '0'. $aryMatch[2];
461                }
[579]462                else if (preg_match('/^(0)([0-9]{9,10})$/', $phoneNumber) == 1 && $direction == 1) {
[575]463                        $result = $phoneNumber;
464                }
[579]465                else if (preg_match('/^(84)([0-9]{9,10})$/', $phoneNumber) == 1 && $direction == -1) {
466                        $result = $phoneNumber;
467                }
468                else if (preg_match('/^(0)([0-9]{9,10})$/', $phoneNumber, $aryMatch) == 1 && $direction == -1) {
469                        $result = '84'. $aryMatch[2];
470                }
[838]471                else if (preg_match('/^[1,9]([0-9]{8,9})$/', $phoneNumber, $aryMatch) == 1 && $direction = 2) {
472                        $result = '0'. $phoneNumber;
473                }
[884]474
[575]475                return $result;
476        }
[884]477
478
[688]479        public function syncCollaborator($data){
480                if ($data){
[884]481                        $sql = $this->db->insert_string('tblcollaborator', $data) . ' ON DUPLICATE KEY UPDATE address = "'.$data['address'].'",
482                                                                                                                                                                                                code = "'.$data['code'].'",
483                                                                                                                                                                                                district = "'.$data['district'].'",
484                                                                                                                                                                                                email = "'.$data['email'].'",
[838]485                                                                                                                                                                                                full_name = "'.$data['full_name'].'",
486                                                                                                                                                                                                passwd = "'.$data['passwd'].'",
[884]487                                                                                                                                                                                                cellphone = "'.$data['cellphone'].'",
488                                                                                                                                                                                                precinct = "'.$data['precinct'].'",
[688]489                                                                                                                                                                                                province = "'.$data['province'].'",
[711]490                                                                                                                                                                                                created_time = "'.$data['created_time'].'",
[688]491                                                                                                                                                                                                updated_time = "'.$data['updated_time'].'"';
492                        $this->db->query($sql);
493                        $id = $this->db->insert_id();
494                        if ($this->db->affected_rows()){
[689]495                                //echo "Collaborator ID: ".$id.". Sync Success !<br/>";
496                                $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Sync Success !\n";
497                                write_file('./log/sync_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
[688]498                        }else{
[689]499                                //echo "Collaborator ID: ".$id.". Sync fail!. Sql = ".$sql."<br/>";
500                                $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Sync fail!. Sql = ".$sql."\n";
501                                write_file('./log/sync_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
[688]502                        }
503                }else {
[689]504                        $logMsg = date('Y-m-d H:i:s') . " Data is null \n";
505                        write_file('./log/sync_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
[688]506                }
507        }
[884]508
[717]509        public function deleteCollaborator($id){
[906]510                $sql = "DELETE FROM tblcollaborator WHERE id = ". $id. " AND author is null";
[717]511                $this->db->query($sql);
512                if ($this->db->affected_rows()){
[721]513                        $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Delete success!\n";
[717]514                        write_file('./log/delete_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
515                }else{
[721]516                        $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Delete fail!. Sql = ".$sql."\n";
[717]517                        write_file('./log/delete_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
518                }
519        }
[884]520
[717]521        public function getAllCollaboratorID(){
522                $sql = "Select id from tblcollaborator";
523                $query = $this->db->query($sql);
524                if ($this->db->affected_rows()){
525                        return $query->result();
526                }else
527                {
528                        return array();
529                }
530        }
[884]531
[818]532        public function isViettel($number) {
533                $prefixViettel = array (
534                                        '96', '97', '98',
535                                        '096', '097', '098', '162', '163', '164', '165', '166', '167', '168', '169',
536                                        '8496', '8497', '8498', '0162', '0163', '0164', '0165', '0166', '0167', '0168', '0169',
537                                        '84162', '84163', '84164', '84165', '84166', '84167', '84168', '84169'
538                );
539                foreach ( $prefixViettel as $value ) {
540                        if (strpos ( $number, $value ) === 0) {
541                                return 1;
542                        }
543                }
544                return 0;
545        }
[499]546}
Note: See TracBrowser for help on using the repository browser.