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

Last change on this file since 581 was 581, checked in by namnd, 11 years ago
File size: 15.7 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                        $us_id = $result ['us_id'];
203                        $token = md5 ( $us_id . self::TOKENPW );
204                        $data = $this->vservices->actionExecute ( 'update', array (
205                                        'src' => $src,
206                                        'token' => $token,
207                                        'us_id' => $us_id,
208                                        'username' => $sentNumber,
209                                        "password" => $password,
210                                        'oldpass' => $password,
211                                        'phone' => $sentNumber
212                        ), 'user' );
213                        if(!($data) || is_null($data))
214                        {
215                                $sms = "Tam thoi Qui vi khong the thay doi duoc so dien thoai. Xin thu lai sau. Cam on!";
216                                $status = 0;
217                                return $status . '|' . $sms;
218                        }
219                        parse_str ( $data );
220                        switch (( int ) $status) {
221                                case 0 :
222                                        $us_id = $id;
223                                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
224                                        $user ['us_id'] = $us_id;
225                                        $user ['cellphone'] = $sentNumber;
226                                        $this->updateUser ( $us_id, $user );
227                                        $sms = "Qui vi da doi so dien thoai tren soanbaigiang.smas.vn sang so dien thoai " . $sentNumber;
228                                        $status = 1;
229                                        break;
230                                case 2:
231                                        $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.";
232                                        $status = 0;
233                                        break;
234                                case 5 :
235                                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
236                                        $status = 0;
237                                        break;
238                                case 6 :
239                                        $sms = "Mat khau cua qui vi khong dung";
240                                        $status = 0;
241                                        break;
242                                default :
243                                        $status = 0;
244                                        $sms = $errMsg;
245                                        break;
246                        }
247                } else {
248                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
249                        $status = 0;
250                }
251                return $status . '|' . $sms;
252        }
253       
254        public function changePassword($username, $password, &$status = '') {
255                $user = array ();
256                $src = 'SBG';
257                $errMsg = '';
258                $sms = '';
259                $isForgotPassword = false;
260                $pass = $password;
261               
262                if (is_null ( $password ) || $password == '') {
263                        $pass = $this->create_random_password ();
264                        $isForgotPassword = true;
265                }
266               
267                $result = $this->get_user_by_cellphone ( $username );
268               
269                if ($result) {
270                        $us_id = $result ['us_id'];
271                        $token = md5 ( $us_id . self::TOKENPW );
272                        $data = $this->vservices->actionExecute ( 'update', array (
273                                        'src' => $src,
274                                        'token' => $token,
275                                        'us_id' => $us_id,
276                                        "password" => $pass
277                        ), 'user' );
278                       
279                        if(!($data) || is_null($data))
280                        {
281                                $sms = "Tam thoi Qui vi khong the lay lai hoac thay doi mat khau. Xin thu lai sau. Cam on!";
282                                $status = 0;
283                                return $status . '|' . $sms;
284                        }
285                        parse_str ( $data );
286                        switch (( int ) $status) {
287                                case 0 :
288                                        $us_id = $id;
289                                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
290                                        $this->updateUser ( $us_id, $user );
291                                        if ($isForgotPassword) {
292                                                $sms = "Mat khau moi cua quy vi tren soanbaigiang.smas.vn la " . $pass;
293                                        } else {
294                                                $sms = "Qui vi da doi thanh cong mat khau tren soanbaigiang.smas.vn.";
295                                        }
296                                        $status = 1;
297                                        break;
298                                case 5 :
299                                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
300                                        $status = 0;
301                                        break;
302                                default :
303                                        $status = 0;
304                                        $sms = $errMsg;
305                                        break;
306                        }
307                } else {
308                        $sms = "Tai khoan ".$username." chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn";
309                        $status = 0;
310                }
311                return $status . '|' . $sms;
312        }
313       
314        public function checkLicense($userId) {
315                $isNotExpired = false;
316                $userInfo = array ();
317                $userInfo = $this->get_user_by_id ( $userId );
318               
319                $expireDate = $userInfo ['expire_date'];
320               
321                if ((trim ( $expireDate ) == ''))
322                        return $isNotExpired;
323               
324                $today = mktime ();
325                $expireTime = strtotime ( $expireDate . ' 23:59:59' );
326                $isNotExpired = ($today < $expireTime);
327                return $isNotExpired;
328        }
329       
330        public function registerVip($username, $p_code) {
331                $user = array ();
332                $sms = '';
333               
334                $result = $this->get_user_by_cellphone ( $username );
335                $package = $this->get_package ( ( int ) $p_code );
336                if (!$package)
337                {
338                        $sms = "Goi dich vu qui vi dang ky khong ton tai";
339                        $status = 0;
340                        return $status . '|' . $sms;
341                }
342                if ($result) {
343                       
344                        if ($result ['acc_balanced'] >= $package ['p_price']) {
345                                $us_id = $result ['us_id'];
346                                $user ['acc_balanced'] = $result ['acc_balanced'] - $package ['p_price'];
347                                if ($this->checkLicense ( $us_id )) {
348                                        $user ['expire_date'] = date ( 'Y-m-d', strtotime ( $result ['expire_date'] . ' + ' . $package ['p_period'] . ' month' ) );
349                                } else {
350                                        $user ['expire_date'] = date ( 'Y-m-d', strtotime ( 'now + ' . $package ['p_period'] . ' month' ) );
351                                }
352                               
353                                $user ['p_id'] = $package ['p_id'];
354                                $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
355                               
356                                $this->updateUser ( $us_id, $user );
357                                $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'] ) );
358                                $status = 1;
359                        } else {
360                                $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!";
361                                $status = 0;
362                        }
363                } else {
364                        $sms = "Tai khoan [" . $username . "] chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn.";
365                        $status = 0;
366                }
367                return $status . '|' . $sms;
368        }
369       
370        public function rechargeAccount($username, $amount) {
371                $user = array ();
372                $sms = '';
373                $result = $this->get_user_by_cellphone ( $username );
374                if ($result) {
375                        $us_id = $result ['us_id'];
376                        $user ['acc_balanced'] = $result ['acc_balanced'] + $amount;
377                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
378                        $this->updateUser ( $us_id, $user );
379                        $sms = "Qui vi da nap thanh cong " . $amount . " VND vao tai khoan " . $username . " tren soanbaigiang.smas.vn";
380                        $status = 1;
381                } else {
382                        $sms = "Tai khoan " . $username . " chua dang ky tai khoan tren he thong SBG Online soanbaigiang.smas.vn.";
383                        $status = 0;
384                }
385                return $status . '|' . $sms;
386        }
387       
388        public function get_user_by_cellphone($cellphone) {
389                $this->db->query ( 'UNLOCK TABLES' );
390                $sql = 'SELECT * FROM tbluser where cellphone = ? LIMIT 0,1';
391                $query = $this->db->query ( $sql, array (
392                                $cellphone
393                ) );
394                $row = $query->row_array ();
395                return $row;
396        }
397       
398        public function isExistcollaborator($collaborator) {
399                $this->db->query ( 'UNLOCK TABLES' );
400                $this->db->select ( '*' )->from ( 'tblcollaborator' )->where ( 'login_name', $collaborator )->limit ( 1 );
401                $result = $this->db->get ()->row_array ();
402                if ($result)
403                        return true;
404                else
405                        return false;
406        }
407       
408        public function updateUser($us_id, $data) {
409                $this->db->query ( 'UNLOCK TABLES' );
410                $this->db->where ( 'us_id', $us_id );
411                $this->db->update ( 'tbluser', $data );
412        }
413       
414        public function get_package($p_code) {
415                $this->db->query ( 'UNLOCK TABLES' );
416                $sql = 'SELECT * FROM tblservicepackage where p_code = ? LIMIT 0,1';
417                $query = $this->db->query ( $sql, array (
418                                $p_code
419                ) );
420                $row = $query->row_array ();
421                return $row;
422        }
423       
424        public function insertSmslog($sentNumber, $serviceID, $commandcode, $info, $receiveTime) {
425                if (preg_match ( '/^(84)([0-9]{9,10})$/', $sentNumber, $aryMatch ) == 1) {
426                        $sentNumber = '0' . $aryMatch [2];
427                }
428               
429                try {
430                        $user = $this->get_user_by_cellphone ( $sentNumber );
431                } catch ( Exception $e ) {
432                }
433               
434                $smslog = array ();
435                $smslog ['sender'] = $sentNumber;
436                $smslog ['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
437                $smslog ['service_id'] = $serviceID;
438                $smslog ['commandcode'] = $commandcode;
439                $smslog ['info'] = $info;
440                $smslog ['created_time'] = $receiveTime;
441                $this->db->query ( 'UNLOCK TABLES' );
442                $sql = 'INSERT INTO tblsmslog(sender, us_id, service_id, commandcode, info, created_time) VALUES(?,?,?,?,?,?)';
443                $query = $this->db->query($sql, $smslog);
444        }
445       
446        public function insertPaidlog($sentNumber, $receiveID, $paidType, $amount, $paidTime) {
447                if (preg_match ( '/^(84)([0-9]{9,10})$/', $sentNumber, $aryMatch ) == 1) {
448                        $sentNumber = '0' . $aryMatch [2];
449                }
450               
451                try {
452                        $user = $this->get_user_by_cellphone ( $receiveID );
453                } catch ( Exception $e ) {
454                }
455                $paidlog = array ();
456                $paidlog ['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
457                $paidlog ['paidType'] = $paidType;
458                $paidlog ['amount'] = $amount;
459                $paidlog['source'] = "";
460                if ($paidType == 1)
461                {
462                        $paidlog['source'] = $sentNumber;
463                       
464                }else
465                {
466                        $paidlog['source'] = "Thẻ cào";
467                }
468                $paidlog ['paidTime'] = $paidTime;
469                $this->db->query ( 'UNLOCK TABLES' );
470                $sql = 'INSERT INTO tblpaidlog(us_id, paid_type, amount, source, paid_time) VALUES (?,?,?,?,?)';
471                $query = $this->db->query ( $sql, $paidlog );
472        }
473       
474        public function insertCardlog($username, $pinCode, $serialNum, $cardValue, $receiveTime)
475        {
476                try {
477                        $user = $this->get_user_by_cellphone ( $username );
478                } catch ( Exception $e ) {
479                }
480               
481                $cardlog = array();
482                $cardlog['sender'] = $username;
483                $cardlog['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
484                $cardlog['pin_code'] = $pinCode;
485                $cardlog['serial_num'] = $serialNum;
486                $cardlog['card_value'] = $cardValue;
487                $cardlog['created_time'] = $receiveTime;
488                $this->db->query ( 'UNLOCK TABLES' );
489                $sql = 'INSERT INTO tblcardlog(sender, us_id, pin_code, serial_num, card_value, created_time) VALUES(?,?,?,?,?,?)';
490                $query = $this->db->query ($sql, $cardlog);
491        }
492       
493        public function getPaidlog($data)
494        {
495                $us_id = $data['us_id'];
496                $this->db->query ( 'UNLOCK TABLES' );
497                $sql = "SELECT * FROM tblpaidlog where us_id = ? ORDER BY paid_time DESC LIMIT ".$data['start'].", ".$data['perpage']." ";
498                $query = $this->db->query ( $sql, array (
499                                $us_id
500                ) );
501                $row = $query->result_array();
502                return $row;
503        }
504       
505        public function countPaiglogs($us_id)
506        {
507                $this->db->query ( 'UNLOCK TABLES' );
508                $sql="SELECT COUNT(paid_id) AS total FROM tblpaidlog WHERE us_id = ?";
509                $query = $this->db->query ( $sql, array (
510                                $us_id
511                ) );
512                $result = $query->row_array();
513                return $result['total'];
514        }
515}
Note: See TracBrowser for help on using the repository browser.