source: pro-violet-viettel/sourcecode/application/modules/frontend/models/user_model.php @ 590

Last change on this file since 590 was 582, checked in by namnd, 10 years ago
File size: 16.1 KB
Line 
1<?php
2
3if (! defined ( 'BASEPATH' ))
4        exit ( 'No direct script access allowed' );
5
6if ( ! defined('_SBG_PAIDTYPE_SMS')) define('_SBG_PAIDTYPE_SMS', 1);
7if ( ! defined('_SBG_PAIDTYPE_CARD')) define('_SBG_PAIDTYPE_CARD', 2);
8
9class User_model extends CI_Model {
10        const TOKENPW = 'violet';
11       
12        public function __construct() {
13                parent::__construct ();
14                $this->vservices->setApiUrl ( $this->config->item ( 'api_url' ) );
15                $this->vservices->setConnection ( $this->curl );
16        }
17       
18        public function checkLogin($src, $token, $username, $password) {
19                $data = $this->vservices->actionExecute ( 'login', array (
20                                'src' => $src,
21                                'token' => $token,
22                                'username' => $username,
23                                'password' => $password
24                ), 'user' );
25               
26                $arr_users = explode ( "&", $data );
27                $str_status = '';
28                $str_fullname = '';
29                $str_usid = '';
30                $usid = '';
31                $fullname = '';
32               
33                for($i = 0; $i < count ( $arr_users ); $i ++) {
34                        if (strpos ( $arr_users [$i], 'status=' ) !== false) {
35                                $str_status = $arr_users [$i];
36                        }
37                       
38                        if (strpos ( $arr_users [$i], 'fullname=' ) !== false) {
39                                $str_fullname = $arr_users [$i];
40                        }
41                       
42                        if (strpos ( $arr_users [$i], 'id=' ) !== false) {
43                                $str_usid = $arr_users [$i];
44                        }
45                }
46                $arr_status = explode ( "=", $str_status );
47                if ($str_fullname != '') {
48                        $arr_fullname = explode ( "=", $str_fullname );
49                        $fullname = $arr_fullname [1];
50                }
51                if ($str_usid !== '') {
52                        $arr_usid = explode ( "=", $str_usid );
53                        $usid = $arr_usid [1];
54                }
55                $status = ( int ) $arr_status [1];
56               
57                if ($status == 0 || $status == 4) {
58                        $us_id = ( int ) $usid;
59                        $query = "SELECT * FROM tbluser WHERE us_id = ?";
60                        $result = $this->db->query ( $query, array (
61                                        $us_id
62                        ) );
63                        if ($result->num_rows () == 1) {
64                                return $data;
65                        } else {
66                                return null;
67                        }
68                } else {
69                        return $data;
70                }
71        }
72       
73        public function register($username, $collaborator, &$collaboratorMsg = '') {
74                $user = array ();
75                $password = $this->create_random_password ();
76                $src = 'SBG';
77                $sms = '';
78                $id = 0;
79                $errMsg = '';
80                $token = md5 ( $username . self::TOKENPW );
81                $phone = $username;
82                $status = 0;
83               
84                if (! is_null ( $collaborator ) || $collaborator != '') {
85                        if (! $this->isExistcollaborator ( $collaborator )) {
86                                $sms = "Khong tim thay cong tac vien nao co so dien thoai [" . $collaborator . "] tren soanbaigiang.smas.vn";
87                                $collaboratorMsg = $status . '|'.$sms;
88                                return $status . '|' . $sms;
89                        }
90                }
91               
92                $data = $this->vservices->actionExecute ( 'update', array (
93                                'src' => $src,
94                                'username' => $username,
95                                'password' => $password,
96                                'fullname' => null,
97                                'phone' => $username,
98                                'token' => $token
99                ), 'user' );
100               
101                if(!($data) || is_null($data))
102                {
103                        $sms = "Tam thoi Qui vi khong the dang ky duoc. Xin thu lai sau. Cam on!";
104                        $collaboratorMsg = $status . '|'.$sms;
105                        return $status . '|' . $sms;
106                }
107               
108                parse_str ( $data );
109
110                switch (( int ) $status) {
111                        case 0 :
112                                $us_id = $id;
113                                $user ['created_time'] = date ( 'Y-m-d H:i:s' );
114                                $user ['us_id'] = $us_id;
115                                $user ['cellphone'] = $username;
116                                if (! is_null ( $collaborator ) || $collaborator != '') {
117                                        $user ['collaborator'] = $collaborator;
118                                }
119                                $this->db->query ( 'UNLOCK TABLES' );
120                                $this->db->insert ( 'tbluser', $user );
121                                $sms = "Chuc mung Qui vi da dang ky thanh cong tai khoan Soan bai giang Online. Hay dang nhap vao soanbaigiang.smas.vn voi ten truy nhap " . $username . ", mat khau " . $password . " de su dung.";
122                                $status = 1;
123                                $collaboratorMsg = $status . '|'. 'So dien thoai '.$username.' da dang ky dich vu';
124                                break;
125                        case 2 :
126                        case 4 :
127                                $sms = "So dien thoai cua Qui vi da duoc dang ky";
128                                $status = 0;
129                                $collaboratorMsg = $status . '|'. 'So dien thoai '.$username.' da duoc dang ky';
130                                break;
131                        default :
132                                $status = 0;
133                                $sms = $errMsg;
134                                $collaboratorMsg = $status . '|'. $sms;
135                                break;
136                }
137               
138                return $status . '|' . $sms;
139        }
140       
141        public function create_random_password() {
142                // $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
143                $alphabet = "0123456789";
144                $pass = array ();
145                $alphaLength = strlen ( $alphabet ) - 1;
146                for($i = 0; $i < 6; $i ++) {
147                        $n = rand ( 0, $alphaLength );
148                        $pass [] = $alphabet [$n];
149                }
150                return implode ( $pass );
151        }
152       
153        public function get_user_by_id($us_id) {
154                $this->db->query ( 'UNLOCK TABLES' );
155                $this->db->select ( '*' )->from ( 'tbluser' )->where ( 'us_id', $us_id );
156                $query = $this->db->get ();
157                if ($query->num_rows () > 0) {
158                        $row = $query->row_array ();
159                        return $row;
160                }
161        }
162       
163        public function get_user_info($src, $token, $us_id) {
164                $data = $this->vservices->actionExecute ( 'getinfo', array (
165                                'src' => $src,
166                                'us_id' => $us_id,
167                                'token' => $token
168                ), 'user' );
169                return $data;
170        }
171       
172        public function update_user($src, $token, $user, $us_id) {
173                $data = $this->vservices->actionExecute ( 'update', array (
174                                'src' => $src,
175                                'token' => $token,
176                                'us_id' => $us_id,
177                                'password' => $user ['password'],
178                                'fullname' => $user ['fullname'],
179                                'school' => $user ['school'],
180                                'province' => $user ['province'],
181                                'oldpass' => $user ['oldpass']
182                ), 'user' );
183                return $data;
184        }
185       
186        public function changeProfile($sentNumber, $username, $password, &$status = '') {
187                $user = array ();
188                $src = 'SBG';
189                $errMsg = '';
190                $sms = '';
191                $checkSentNumber = $this->get_user_by_cellphone ( $sentNumber );
192               
193                if ($checkSentNumber) {
194                        $sms = "So Dien thoai " . $sentNumber . " da dang ky tren he thong SBG Online soanbaigiang.smas.vn nen Qui vi khong the doi sang so dien thoai nay duoc.";
195                        $status = 0;
196                        return $status . '|' . $sms;
197                }
198               
199                $result = $this->get_user_by_cellphone ( $username );
200               
201                if ($result) {
202                       
203                        $us_id = $result ['us_id'];
204                        $token = md5 ( $us_id . self::TOKENPW );
205                        $isCorrectPassword = $this->checkPassword($src, $us_id, $token, $password);
206                        if(!$isCorrectPassword) return '0|Mat khau cua qui vi khong dung';
207
208                        $data = $this->vservices->actionExecute ( 'update', array (
209                                        'src' => $src,
210                                        'token' => $token,
211                                        'us_id' => $us_id,
212                                        'username' => $sentNumber,
213                                        "password" => $password,
214                                        'oldpass' => $password,
215                                        'phone' => $sentNumber
216                        ), 'user' );
217
218                        if(!($data) || is_null($data))
219                        {
220                                $sms = "Tam thoi Qui vi khong the thay doi duoc so dien thoai. Xin thu lai sau. Cam on!";
221                                $status = 0;
222                                return $status . '|' . $sms;
223                        }
224                        parse_str ( $data );
225                        switch (( int ) $status) {
226                                case 0 :
227                                        $us_id = $id;
228                                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
229                                        $user ['us_id'] = $us_id;
230                                        $user ['cellphone'] = $sentNumber;
231                                        $this->updateUser ( $us_id, $user );
232                                        $sms = "Qui vi da doi so dien thoai tren soanbaigiang.smas.vn sang so dien thoai " . $sentNumber;
233                                        $status = 1;
234                                        break;
235                                case 2:
236                                        $sms = "So Dien thoai " . $sentNumber . " da dang ky tren he thong SBG Online soanbaigiang.smas.vn nen Qui vi khong the doi sang so dien thoai nay duoc.";
237                                        $status = 0;
238                                        break;
239                                case 5 :
240                                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
241                                        $status = 0;
242                                        break;
243                                default :
244                                        $status = 0;
245                                        $sms = $errMsg;
246                                        break;
247                        }
248                } else {
249                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
250                        $status = 0;
251                }
252                return $status . '|' . $sms;
253        }
254       
255        public function changePassword($username, $password, &$status = '') {
256                $user = array ();
257                $src = 'SBG';
258                $errMsg = '';
259                $sms = '';
260                $isForgotPassword = false;
261                $pass = $password;
262               
263                if (is_null ( $password ) || $password == '') {
264                        $pass = $this->create_random_password ();
265                        $isForgotPassword = true;
266                }
267               
268                $result = $this->get_user_by_cellphone ( $username );
269               
270                if ($result) {
271                        $us_id = $result ['us_id'];
272                        $token = md5 ( $us_id . self::TOKENPW );
273                        $data = $this->vservices->actionExecute ( 'update', array (
274                                        'src' => $src,
275                                        'token' => $token,
276                                        'us_id' => $us_id,
277                                        "password" => $pass
278                        ), 'user' );
279                       
280                        if(!($data) || is_null($data))
281                        {
282                                $sms = "Tam thoi Qui vi khong the lay lai hoac thay doi mat khau. Xin thu lai sau. Cam on!";
283                                $status = 0;
284                                return $status . '|' . $sms;
285                        }
286                        parse_str ( $data );
287                        switch (( int ) $status) {
288                                case 0 :
289                                        $us_id = $id;
290                                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
291                                        $this->updateUser ( $us_id, $user );
292                                        if ($isForgotPassword) {
293                                                $sms = "Mat khau moi cua quy vi tren soanbaigiang.smas.vn la " . $pass;
294                                        } else {
295                                                $sms = "Qui vi da doi thanh cong mat khau tren soanbaigiang.smas.vn.";
296                                        }
297                                        $status = 1;
298                                        break;
299                                case 5 :
300                                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
301                                        $status = 0;
302                                        break;
303                                default :
304                                        $status = 0;
305                                        $sms = $errMsg;
306                                        break;
307                        }
308                } else {
309                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
310                        $status = 0;
311                }
312                return $status . '|' . $sms;
313        }
314       
315        public function checkLicense($userId) {
316                $isNotExpired = false;
317                $userInfo = array ();
318                $userInfo = $this->get_user_by_id ( $userId );
319               
320                $expireDate = $userInfo ['expire_date'];
321               
322                if ((trim ( $expireDate ) == ''))
323                        return $isNotExpired;
324               
325                $today = mktime ();
326                $expireTime = strtotime ( $expireDate . ' 23:59:59' );
327                $isNotExpired = ($today < $expireTime);
328                return $isNotExpired;
329        }
330       
331        public function registerVip($username, $p_code) {
332                $user = array ();
333                $sms = '';
334               
335                $result = $this->get_user_by_cellphone ( $username );
336                $package = $this->get_package ( ( int ) $p_code );
337                if (!$package)
338                {
339                        $sms = "Goi dich vu qui vi dang ky khong ton tai";
340                        $status = 0;
341                        return $status . '|' . $sms;
342                }
343                if ($result) {
344                       
345                        if ($result ['acc_balanced'] >= $package ['p_price']) {
346                                $us_id = $result ['us_id'];
347                                $user ['acc_balanced'] = $result ['acc_balanced'] - $package ['p_price'];
348                                if ($this->checkLicense ( $us_id )) {
349                                        $user ['expire_date'] = date ( 'Y-m-d', strtotime ( $result ['expire_date'] . ' + ' . $package ['p_period'] . ' month' ) );
350                                } else {
351                                        $user ['expire_date'] = date ( 'Y-m-d', strtotime ( 'now + ' . $package ['p_period'] . ' month' ) );
352                                }
353                               
354                                $user ['p_id'] = $package ['p_id'];
355                                $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
356                               
357                                $this->updateUser ( $us_id, $user );
358                                $sms = "Chuc mung Qui vi da dang ky su dung Soan Bai giang truc tuyen tren soanbaigiang.smas.vn. Qui vi co the su dung dich vu den ngay " . date ( 'd/m/Y', strtotime ( $user ['expire_date'] ) );
359                                $status = 1;
360                        } else {
361                                $sms = "Tai khoan cua qui vi khong du de dang ky su dung dich vu Soan Bai giang truc tuyen tren soanbaigiang.smas.vn. Hay nap tien va dang ky lai. Cam on!";
362                                $status = 0;
363                        }
364                } else {
365                        $sms = "Tai khoan [" . $username . "] chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn.";
366                        $status = 0;
367                }
368                return $status . '|' . $sms;
369        }
370       
371        public function rechargeAccount($username, $amount) {
372                $user = array ();
373                $sms = '';
374                $result = $this->get_user_by_cellphone ( $username );
375                if ($result) {
376                        $us_id = $result ['us_id'];
377                        $user ['acc_balanced'] = $result ['acc_balanced'] + $amount;
378                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
379                        $this->updateUser ( $us_id, $user );
380                        $sms = "Qui vi da nap thanh cong " . $amount . " VND vao tai khoan " . $username . " tren soanbaigiang.smas.vn";
381                        $status = 1;
382                } else {
383                        $sms = "Tai khoan " . $username . " chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn.";
384                        $status = 0;
385                }
386                return $status . '|' . $sms;
387        }
388       
389        public function get_user_by_cellphone($cellphone) {
390                $this->db->query ( 'UNLOCK TABLES' );
391                $sql = 'SELECT * FROM tbluser where cellphone = ? LIMIT 0,1';
392                $query = $this->db->query ( $sql, array (
393                                $cellphone
394                ) );
395                $row = $query->row_array ();
396                return $row;
397        }
398       
399        public function isExistcollaborator($collaborator) {
400                $this->db->query ( 'UNLOCK TABLES' );
401                $this->db->select ( '*' )->from ( 'tblcollaborator' )->where ( 'login_name', $collaborator )->limit ( 1 );
402                $result = $this->db->get ()->row_array ();
403                if ($result)
404                        return true;
405                else
406                        return false;
407        }
408       
409        public function updateUser($us_id, $data) {
410                $this->db->query ( 'UNLOCK TABLES' );
411                $this->db->where ( 'us_id', $us_id );
412                $this->db->update ( 'tbluser', $data );
413        }
414       
415        public function get_package($p_code) {
416                $this->db->query ( 'UNLOCK TABLES' );
417                $sql = 'SELECT * FROM tblservicepackage where p_code = ? LIMIT 0,1';
418                $query = $this->db->query ( $sql, array (
419                                $p_code
420                ) );
421                $row = $query->row_array ();
422                return $row;
423        }
424       
425        public function insertSmslog($sentNumber, $serviceID, $commandcode, $info, $receiveTime) {
426                if (preg_match ( '/^(84)([0-9]{9,10})$/', $sentNumber, $aryMatch ) == 1) {
427                        $sentNumber = '0' . $aryMatch [2];
428                }
429               
430                try {
431                        $user = $this->get_user_by_cellphone ( $sentNumber );
432                } catch ( Exception $e ) {
433                }
434               
435                $smslog = array ();
436                $smslog ['sender'] = $sentNumber;
437                $smslog ['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
438                $smslog ['service_id'] = $serviceID;
439                $smslog ['commandcode'] = $commandcode;
440                $smslog ['info'] = $info;
441                $smslog ['created_time'] = $receiveTime;
442                $this->db->query ( 'UNLOCK TABLES' );
443                $sql = 'INSERT INTO tblsmslog(sender, us_id, service_id, commandcode, info, created_time) VALUES(?,?,?,?,?,?)';
444                $query = $this->db->query($sql, $smslog);
445        }
446       
447        public function insertPaidlog($sentNumber, $receiveID, $paidType, $amount, $paidTime) {
448                if (preg_match ( '/^(84)([0-9]{9,10})$/', $sentNumber, $aryMatch ) == 1) {
449                        $sentNumber = '0' . $aryMatch [2];
450                }
451               
452                try {
453                        $user = $this->get_user_by_cellphone ( $receiveID );
454                } catch ( Exception $e ) {
455                }
456                $paidlog = array ();
457                $paidlog ['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
458                $paidlog ['paidType'] = $paidType;
459                $paidlog ['amount'] = $amount;
460                $paidlog['source'] = "";
461                if ($paidType == 1)
462                {
463                        $paidlog['source'] = $sentNumber;
464                       
465                }else
466                {
467                        $paidlog['source'] = "Thẻ cào";
468                }
469                $paidlog ['paidTime'] = $paidTime;
470                $this->db->query ( 'UNLOCK TABLES' );
471                $sql = 'INSERT INTO tblpaidlog(us_id, paid_type, amount, source, paid_time) VALUES (?,?,?,?,?)';
472                $query = $this->db->query ( $sql, $paidlog );
473        }
474       
475        public function insertCardlog($username, $pinCode, $serialNum, $cardValue, $receiveTime)
476        {
477                try {
478                        $user = $this->get_user_by_cellphone ( $username );
479                } catch ( Exception $e ) {
480                }
481               
482                $cardlog = array();
483                $cardlog['sender'] = $username;
484                $cardlog['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
485                $cardlog['pin_code'] = $pinCode;
486                $cardlog['serial_num'] = $serialNum;
487                $cardlog['card_value'] = $cardValue;
488                $cardlog['created_time'] = $receiveTime;
489                $this->db->query ( 'UNLOCK TABLES' );
490                $sql = 'INSERT INTO tblcardlog(sender, us_id, pin_code, serial_num, card_value, created_time) VALUES(?,?,?,?,?,?)';
491                $query = $this->db->query ($sql, $cardlog);
492        }
493       
494        public function getPaidlog($data)
495        {
496                $us_id = $data['us_id'];
497                $this->db->query ( 'UNLOCK TABLES' );
498                $sql = "SELECT * FROM tblpaidlog where us_id = ? ORDER BY paid_time DESC LIMIT ".$data['start'].", ".$data['perpage']." ";
499                $query = $this->db->query ( $sql, array (
500                                $us_id
501                ) );
502                $row = $query->result_array();
503                return $row;
504        }
505       
506        public function countPaiglogs($us_id)
507        {
508                $this->db->query ( 'UNLOCK TABLES' );
509                $sql="SELECT COUNT(paid_id) AS total FROM tblpaidlog WHERE us_id = ?";
510                $query = $this->db->query ( $sql, array (
511                                $us_id
512                ) );
513                $result = $query->row_array();
514                return $result['total'];
515        }
516       
517        public function checkPassword($src, $us_id, $token, $password)
518        {
519                $data = $this->vservices->actionExecute ( 'getinfo', array (
520                                'src' => $src,
521                                'us_id' => $us_id,
522                                'token' => $token,
523                                'ponly'=>1
524                ), 'user' );
525               
526                parse_str($data);
527                if(md5($password) == $pencrypted) return true; else return false;
528        }
529}
Note: See TracBrowser for help on using the repository browser.