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

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