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

Last change on this file since 906 was 906, checked in by namnd, 10 years ago
File size: 20.8 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'))) {
[768]179                                        $maxCharging = 50000;
[707]180                                        $amount = $packageData ['p_price'];
[716]181                                        $count = $amount > $maxCharging ? ceil($amount/ _SBG_CHARGING_MAX_VALUE) : 1;
182                                        $value = 0;
183                                        for ($i = 1; $i <= $count; $i++) {
184                                                $value = $amount > _SBG_CHARGING_MAX_VALUE ? _SBG_CHARGING_MAX_VALUE : $amount;
[884]185                                                $amount -= $value;
[716]186                                                $result = $this->chargeRootAccountProcess($sentNumber, $value, $sentNumber.' paid for SBG');
[884]187                                        }
[707]188
189                                        if ($result == _SBG_CHARGING_SUCCESS) {
[716]190                                                $amount = $packageData ['p_price'];
[707]191                                                $this->objUserModel->rechargeAccount($sentNumber, $amount);
192                                                $smsReturn = $this->objUserModel->registerVip($sentNumber, $p_code, $packageData);
193                                                $paidTime = date('Y-m-d H:i:s');
194                                                $this->objUserModel->insertPaidlog($sentNumber, $sentNumber, _SBG_PAIDTYPE_SMS, $amount, $paidTime);
195                                                $result = 1;
196                                        }
197                                }
198
199                                if ((int)$result == 1) $this->objUserModel->insertRegisterVipLog($sentNumber, $p_code, true);
[499]200                                break;
[707]201
[499]202                        case _SBG_MO_PAY_TO_ACCOUNT:
203                        case _SBG_MO_PAY_TO_ACCOUNT_FOR:
[716]204                                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]205
[647]206                                $userName = isset($aryContents[1]) ? $this->formatPhoneNumber($aryContents[1]) : $sentNumber;
[612]207                                if ($case == _SBG_MO_PAY_TO_ACCOUNT_FOR && !preg_match('/^(09\d{8}|01\d{9})$/', $userName)) {
[636]208                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_PHONENUM_WRONG_FORMAT_MSG');
[603]209                                        break;
210                                }
[884]211
[647]212                                $amount = $aryContents[0];
[615]213                                if (!preg_match('/^[0-9]{3,}$/', $amount)) {
[636]214                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_AMOUNT_WRONG_FORMAT_MSG');
[615]215                                        break;
216                                }
[884]217
218                                if ((int)$amount < _SBG_CHARGING_MIN_VALUE) {
219                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_AMOUNT_LESS_THAN_MIN_VALUE_MSG');
220                                        break;
221                                }
222
[598]223                                $result =$this->chargeRootAccountProcess($sentNumber, $amount, $sentNumber.' paid for SBG');
[884]224
[598]225                                if ($result == _SBG_CHARGING_SUCCESS) {
[499]226                                        $smsReturn = $this->objUserModel->rechargeAccount($userName, $amount);
[598]227                                        if ($case == _SBG_MO_PAY_TO_ACCOUNT_FOR) {
[579]228                                                $arySmsReturn = explode ('|', $smsReturn);
[653]229                                                $aryPatterns = array('/:amount:/', '/:sentNumber:/');
230                                                $smsMT = preg_replace($aryPatterns, array($amount, $sentNumber), lang('_SBG_MO_PAY_TO_ACCOUNT_FOR_MSG'));
[768]231                                                $mtBody = $smsMT;
[579]232                                                $sendMT = $this->sendMT($this->formatPhoneNumber($userName, -1), $smsMT);
[707]233                                                $smsReturn = $arySmsReturn[0].'|'.preg_replace(array('/:amount:/','/:username:/'), array($amount, $userName), lang('_SBG_MO_PAY_TO_ACCOUNT_FOR_OTHER_SUCCESS_MSG'));
[556]234                                        }
[598]235                                        //write to paid log
236                                        $paidTime = date('Y-m-d H:i:s');
237                                        $this->objUserModel->insertPaidlog($sentNumber, $userName, _SBG_PAIDTYPE_SMS, $amount, $paidTime);
[499]238                                }
[598]239                                else if ($result == _SBG_CHARGING_FAIL_NOT_ENOUGH) {
[818]240                                        $aryPatterns = array ('/:sentNumber:/');
241                                        $smsReturn = preg_replace($aryPatterns, array($sentNumber), lang('_SBG_MO_CHARGING_FAIL_NOT_ENOUGH_MSG'));
[636]242                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.$smsReturn;
[598]243                                }
244                                else if ($result == _SBG_CHARGING_FAIL_MORETHAN_LIMIT) {
[884]245                                        /* $aryPatterns = array ('/:sendid:/');
[636]246                                        $smsReturn = preg_replace($aryPatterns, array($sentNumber), lang('_SBG_MO_CHARGING_FAIL_MORETHAN_LIMIT_MSG'));
[884]247                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.$smsReturn; */
248
249
250
251
[612]252                                }else if ($result == _SBG_CHARGING_FAIL_NOT_VIETTEL || $result == _SBG_CHARGING_NUMBER_NOT_EXISTED || $result == _SBG_CHARGING_NUMBER_NOT_AVAILABLE) {
[636]253                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_CHARGING_FAIL_NOT_VIETTEL_MSG');
[884]254                                }
[598]255                                else {
[636]256                                        $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_CHARGING_FAIL_MSG');
[598]257                                }
[499]258                                break;
[884]259
[647]260                        case _SBG_MO_SUPPOR_SERVICE:
[818]261                                if ($this->isViettel($sentNumber)){
262                                        $smsReturn = '1|'.lang('_SBG_MO_SUPPORT_VIETTEL_MSG');
263                                }else{
264                                        $smsReturn = '1|'.lang('_SBG_MO_SUPPORT_NOT_VIETTEL_MSG');
265                                }
[647]266                                break;
[906]267                               
268                        case _SBG_MO_PASSWORD_COLLABORATOR_SERVICE:
269                                $smsReturn = $this->objCollaboratorModel->getPassword($sentNumber);
270                                break;
271                       
[529]272                        case _SBG_MO_UNSUBSCRIBE_SERVICE:
[499]273                        case _SBG_MO_SYNTAX_ERR:
274                        default:
[636]275                                $smsReturn = _SBG_MO_PROCCESS_ERR.'|'.lang('_SBG_MO_SYNTAX_ERR_MSG');
[499]276                                break;
277                }
[884]278
[775]279                $aryTmp = explode('|', $smsReturn);
280                $mtBody = $aryTmp[1] . "\n" . $mtBody;
[884]281
[579]282                return $smsReturn.'|'.$case;
[499]283        }
[884]284
285
[647]286        /**
287         * cardPaidProcess
[884]288         *
[647]289         * @todo Call Topup webservice to check and lock prepaid-card
290         * @param Array $aryCardInfo
291         * @param Array $aryTopupResult
292         * @return string
293         */
[884]294        public function cardPaidProcess ($aryCardInfo, &$aryTopupResult = array())
[499]295        {
296                $url = $this->config->item('topup_service_url');
297                $action = 'http://tempuri.org/ITopupService/TopUp';
298                $xml = $this->load->view('topup', $aryCardInfo, true);
[884]299
[499]300                $client = new nusoap_client($url);
301                $client->useHTTPPersistentConnection();
302                $client->soap_defencoding = 'UTF-8';
303                $client->operation = $action;
[884]304
[519]305                $result = $client->send($xml, $action);
[884]306
[499]307                if ($client->fault) {
308                        return _SBG_CARD_PAY_FAIL;
309                }
[884]310
[528]311                $keys = array_keys($result);
[884]312
[528]313                $aryTopupResult = $result[$keys[0]];
[632]314
315                $debugMsg = 'Logged time: '. date('Y-m-d H:i:s') ."\n";
316                $debugMsg .=  'Send:'."\n" .$xml ."\n\n";
317                $debugMsg .= 'Result:'."\n". var_export($result, TRUE);
318                write_file('./log/topup_log', $debugMsg);
319
[499]320                if ($aryTopupResult['Success'] == 'false') {
321                        return _SBG_CARD_PAY_FAIL;
322                }
[884]323
[499]324                return _SBG_CARD_PAY_SUCCESS;
325        }
[884]326
[647]327        /**
328         * chargeRootAccountProcess
[884]329         *
[647]330         * @todo Call charging webservice to charged fee from phone root account
331         * @param String $sentID
332         * @param Integer $amount
333         * @param String $contents
334         * @return string|number
335         */
[884]336        public function chargeRootAccountProcess ($sentID, $amount = 0, $contents = '')
[499]337        {
338                $url = $this->config->item('charging_service_url');
339                $username = $this->config->item('charging_username');
340                $password = $this->config->item('charging_password');
[884]341                $action = 'http://tempuri.org/processCharging';
342
[499]343                $aryParams = array(
344                                'user' => $username,
345                                'pass' => $password,
346                                'MSISDN' => $sentID,
347                                'Charging' => $amount,
348                                'Contents' => $contents
349                );
[707]350
[883]351                $xml = $this->load->view('services/charging', $aryParams, true);
[499]352                $client = new nusoap_client($url);
353                $client->useHTTPPersistentConnection();
354                $client->soap_defencoding = 'UTF-8';
355                $client->operation = $action;
356                $result = $client->send($xml, $action);
357                if ($client->fault) {
358                        return _SBG_CHARGING_FAIL;
359                }
[884]360
361                $aryErrs = array (      _SBG_CHARGING_FAIL_NOT_ENOUGH,
362                                                        _SBG_CHARGING_FAIL_NOT_VIETTEL,
[647]363                                                        _SBG_CHARGING_FAIL_MORETHAN_LIMIT,
364                                                        _SBG_CHARGING_NUMBER_NOT_EXISTED,
365                                                        _SBG_CHARGING_NUMBER_NOT_AVAILABLE,
366                                                        _SBG_CHARGING_NUMBER_CHANGED_OWNER,
367                                                        _SBG_CHARGING_GENERAL_ERROR,
368                                                        _SBG_CHARGING_NUMBER_NOT_REGISTED);
[884]369
370                if (in_array((int)$result['processChargingResult'], $aryErrs))
371                        return (int)$result['processChargingResult'];
372
[499]373                return _SBG_CHARGING_SUCCESS;
374        }
[884]375
[647]376        /**
377         * sendMT
[884]378         *
[647]379         * @todo Calling MT webservice to send a SMS to a phone number
380         * @param String $receiverID
381         * @param String $message
382         * @return string
383         */
[499]384        public function sendMT ($receiverID, $message)
385        {
386                $aryMatch = array();
[884]387
[499]388                if (preg_match('/^(0)([0-9]{9,10})$/', $receiverID, $aryMatch) == 1) {
389                        $receiverID = '84'. $aryMatch[2];
390                }
[884]391
[499]392                $username = $this->config->item('mt_username');
393                $password = $this->config->item('mt_password');
394                $action = 'http://tempuri.org/InsertMT';
[884]395
[499]396                $aryParams = array(
397                                'User' => $username,
398                                'Pass' => $password,
399                                'CPCode' => _SBG_MT_CP_CODE,
400                                'UserID' => _SBG_MT_SEND_NUMBER,
401                                'RequestID' => '4',
402                                'ReceiverID' => $receiverID,
403                                'ServiceID' => _SBG_SERVICE_SERVICEID,
404                                'CommandCode' => _SBG_SERVICE_COMMAND_CODE,
405                                'ContentType' => '0',
406                                'Info' => $message
407                );
[884]408
[883]409                $xml = $this->load->view('services/mt', $aryParams, true);
[513]410                $url = $this->config->item('mt_service_url');
[499]411                $client = new nusoap_client($url);
412                $client->useHTTPPersistentConnection();
413                $client->soap_defencoding = 'UTF-8';
414                $client->operation = $action;
415                $result = $client->send($xml, $action);
[884]416
[499]417                if ($client->fault || (int)$result['InsertMTResult'] != 1) {
418                        return _SBG_SEND_MT_FAIL;
419                }
[884]420
[499]421                return _SBG_SEND_MT_SUCCESS;
422        }
[884]423
[677]424        public function getCollaborator ($type = 2, $page = 10, $displaypage = 1) {
425                $action = 'http://tempuri.org/InsertMT';
426                $url = $this->config->item('bccs_service_url');
427                $username = $this->config->item('bccs_username');
428                $password = $this->config->item('bccs_password');
429                $wscode = 'getListShopAndStaftInfo';
430                $aryParams = array(
431                                'user' => $username,
432                                'pass' => $password,
433                                'wscode' => $wscode,
434                                'type' => $type,
435                                'page' => $page,
436                                'displaypage' => $displaypage
437                );
[884]438
[677]439                $xml = $this->load->view('bscc', $aryParams, true);
[884]440
[677]441                $client = new nusoap_client($url);
442                $client->useHTTPPersistentConnection();
443                $client->soap_defencoding = 'UTF-8';
[822]444                $client->decode_utf8 = false;
[884]445
[677]446                $client->operation = $action;
447                $result = $client->send($xml, $action);
[685]448                if ($client->fault || (int)$result['Result']['error'] != 0) {
449                        return _SBG_GET_COLLABORATOR_FAIL;
450                }
[884]451
[685]452                return $result['Result']['original'];
[677]453        }
[884]454
[647]455        /**
456         * formatPhoneNumber
[884]457         *
[647]458         * @todo format phone number to prefix 0 or 84
459         * @param String $phoneNumber
460         * @param Integer $direction
461         * @return String
462         */
[579]463        public function formatPhoneNumber ($phoneNumber, $direction = 1) {
[838]464                $result = $phoneNumber;
[575]465                $aryMatch = array();
[579]466                if (preg_match('/^(84)([0-9]{9,10})$/', $phoneNumber, $aryMatch) == 1 && $direction == 1) {
[575]467                        $result = '0'. $aryMatch[2];
468                }
[579]469                else if (preg_match('/^(0)([0-9]{9,10})$/', $phoneNumber) == 1 && $direction == 1) {
[575]470                        $result = $phoneNumber;
471                }
[579]472                else if (preg_match('/^(84)([0-9]{9,10})$/', $phoneNumber) == 1 && $direction == -1) {
473                        $result = $phoneNumber;
474                }
475                else if (preg_match('/^(0)([0-9]{9,10})$/', $phoneNumber, $aryMatch) == 1 && $direction == -1) {
476                        $result = '84'. $aryMatch[2];
477                }
[838]478                else if (preg_match('/^[1,9]([0-9]{8,9})$/', $phoneNumber, $aryMatch) == 1 && $direction = 2) {
479                        $result = '0'. $phoneNumber;
480                }
[884]481
[575]482                return $result;
483        }
[884]484
485
[688]486        public function syncCollaborator($data){
487                if ($data){
[884]488                        $sql = $this->db->insert_string('tblcollaborator', $data) . ' ON DUPLICATE KEY UPDATE address = "'.$data['address'].'",
489                                                                                                                                                                                                code = "'.$data['code'].'",
490                                                                                                                                                                                                district = "'.$data['district'].'",
491                                                                                                                                                                                                email = "'.$data['email'].'",
[838]492                                                                                                                                                                                                full_name = "'.$data['full_name'].'",
493                                                                                                                                                                                                passwd = "'.$data['passwd'].'",
[884]494                                                                                                                                                                                                cellphone = "'.$data['cellphone'].'",
495                                                                                                                                                                                                precinct = "'.$data['precinct'].'",
[688]496                                                                                                                                                                                                province = "'.$data['province'].'",
[711]497                                                                                                                                                                                                created_time = "'.$data['created_time'].'",
[688]498                                                                                                                                                                                                updated_time = "'.$data['updated_time'].'"';
499                        $this->db->query($sql);
500                        $id = $this->db->insert_id();
501                        if ($this->db->affected_rows()){
[689]502                                //echo "Collaborator ID: ".$id.". Sync Success !<br/>";
503                                $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Sync Success !\n";
504                                write_file('./log/sync_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
[688]505                        }else{
[689]506                                //echo "Collaborator ID: ".$id.". Sync fail!. Sql = ".$sql."<br/>";
507                                $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Sync fail!. Sql = ".$sql."\n";
508                                write_file('./log/sync_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
[688]509                        }
510                }else {
[689]511                        $logMsg = date('Y-m-d H:i:s') . " Data is null \n";
512                        write_file('./log/sync_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
[688]513                }
514        }
[884]515
[717]516        public function deleteCollaborator($id){
[906]517                $sql = "DELETE FROM tblcollaborator WHERE id = ". $id. " AND author is null";
[717]518                $this->db->query($sql);
519                if ($this->db->affected_rows()){
[721]520                        $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Delete success!\n";
[717]521                        write_file('./log/delete_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
522                }else{
[721]523                        $logMsg = date('Y-m-d H:i:s') . " Collaborator ID: ".$id.". Delete fail!. Sql = ".$sql."\n";
[717]524                        write_file('./log/delete_collaborator.log', $logMsg, FOPEN_WRITE_CREATE);
525                }
526        }
[884]527
[717]528        public function getAllCollaboratorID(){
529                $sql = "Select id from tblcollaborator";
530                $query = $this->db->query($sql);
531                if ($this->db->affected_rows()){
532                        return $query->result();
533                }else
534                {
535                        return array();
536                }
537        }
[884]538
[818]539        public function isViettel($number) {
540                $prefixViettel = array (
541                                        '96', '97', '98',
542                                        '096', '097', '098', '162', '163', '164', '165', '166', '167', '168', '169',
543                                        '8496', '8497', '8498', '0162', '0163', '0164', '0165', '0166', '0167', '0168', '0169',
544                                        '84162', '84163', '84164', '84165', '84166', '84167', '84168', '84169'
545                );
546                foreach ( $prefixViettel as $value ) {
547                        if (strpos ( $number, $value ) === 0) {
548                                return 1;
549                        }
550                }
551                return 0;
552        }
[499]553}
Note: See TracBrowser for help on using the repository browser.