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

Last change on this file since 544 was 544, checked in by namnd, 11 years ago
File size: 13.5 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                parse_str ( $data );
97               
98                switch (( int ) $status) {
99                        case 0 :
100                                $us_id = $id;
101                                $user ['created_time'] = date ( 'Y-m-d H:i:s' );
102                                $user ['us_id'] = $us_id;
103                                $user ['cellphone'] = $username;
104                                if (! is_null ( $collaborator ) || $collaborator != '') {
105                                        $user ['collaborator'] = $collaborator;
106                                }
107                                $this->db->query ( 'UNLOCK TABLES' );
108                                $this->db->insert ( 'tbluser', $user );
109                                $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.";
110                                $status = 1;
111                                break;
112                        case 2 :
113                        case 4 :
114                                $sms = "So dien thoai cua Qui vi da duoc dang ky!";
115                                $status = 0;
116                                break;
117                        default :
118                                $status = 0;
119                                $sms = $errMsg;
120                                break;
121                }
122               
123                return $status . '|' . $sms;
124        }
125       
126        public function create_random_password() {
127                // $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
128                $alphabet = "0123456789";
129                $pass = array ();
130                $alphaLength = strlen ( $alphabet ) - 1;
131                for($i = 0; $i < 6; $i ++) {
132                        $n = rand ( 0, $alphaLength );
133                        $pass [] = $alphabet [$n];
134                }
135                return implode ( $pass );
136        }
137       
138        public function get_user_by_id($us_id) {
139                $this->db->query ( 'UNLOCK TABLES' );
140                $this->db->select ( '*' )->from ( 'tbluser' )->where ( 'us_id', $us_id );
141                $query = $this->db->get ();
142                if ($query->num_rows () > 0) {
143                        $row = $query->row_array ();
144                        return $row;
145                }
146        }
147       
148        public function get_user_info($src, $token, $us_id) {
149                $data = $this->vservices->actionExecute ( 'getinfo', array (
150                                'src' => $src,
151                                'us_id' => $us_id,
152                                'token' => $token
153                ), 'user' );
154                return $data;
155        }
156       
157        public function update_user($src, $token, $user, $us_id) {
158                $data = $this->vservices->actionExecute ( 'update', array (
159                                'src' => $src,
160                                'token' => $token,
161                                'us_id' => $us_id,
162                                'password' => $user ['password'],
163                                'fullname' => $user ['fullname'],
164                                'school' => $user ['school'],
165                                'province' => $user ['province'],
166                                'oldpass' => $user ['oldpass']
167                ), 'user' );
168                return $data;
169        }
170       
171        public function changeProfile($sentNumber, $username, $password, &$status = '') {
172                $user = array ();
173                $src = 'SBG';
174                $errMsg = '';
175                $sms = '';
176                $checkSentNumber = $this->get_user_by_cellphone ( $sentNumber );
177               
178                if ($checkSentNumber) {
179                        $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.";
180                        $status = 0;
181                        return $status . '|' . $sms;
182                }
183               
184                $result = $this->get_user_by_cellphone ( $username );
185               
186                if ($result) {
187                        $us_id = $result ['us_id'];
188                        $token = md5 ( $us_id . self::TOKENPW );
189                        $data = $this->vservices->actionExecute ( 'update', array (
190                                        'src' => $src,
191                                        'token' => $token,
192                                        'us_id' => $us_id,
193                                        'username' => $sentNumber,
194                                        "password" => $password,
195                                        'oldpass' => $password,
196                                        'phone' => $sentNumber
197                        ), 'user' );
198                        parse_str ( $data );
199                        switch (( int ) $status) {
200                                case 0 :
201                                        $us_id = $id;
202                                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
203                                        $user ['us_id'] = $us_id;
204                                        $user ['cellphone'] = $sentNumber;
205                                        $this->updateUser ( $us_id, $user );
206                                        $sms = "Qui vi da doi so dien thoai tren soanbaigiang.smas.vn sang so dien thoai " . $sentNumber;
207                                        $status = 1;
208                                        break;
209                                case 5 :
210                                        $sms = "So dien thoai cá»§a Qui vi chua duoc dang ky!";
211                                        $status = 0;
212                                        break;
213                                case 6 :
214                                        $sms = "Mat khau cua qui vi khong dung !";
215                                        $status = 0;
216                                        break;
217                                default :
218                                        $status = 0;
219                                        $sms = $errMsg;
220                                        break;
221                        }
222                } else {
223                        $sms = "So dien thoai cá»§a Qui vi chua duoc dang ky!";
224                        $status = 0;
225                }
226                return $status . '|' . $sms;
227        }
228       
229        public function changePassword($username, $password, &$status = '') {
230                $user = array ();
231                $src = 'SBG';
232                $errMsg = '';
233                $sms = '';
234                $isForgotPassword = false;
235                $pass = $password;
236               
237                if (is_null ( $password ) || $password == '') {
238                        $pass = $this->create_random_password ();
239                        $isForgotPassword = true;
240                }
241               
242                $result = $this->get_user_by_cellphone ( $username );
243                if ($result) {
244                        $us_id = $result ['us_id'];
245                        $token = md5 ( $us_id . self::TOKENPW );
246                        $data = $this->vservices->actionExecute ( 'update', array (
247                                        'src' => $src,
248                                        'token' => $token,
249                                        'us_id' => $us_id,
250                                        "password" => $pass
251                        ), 'user' );
252
253                        parse_str ( $data );
254                        switch (( int ) $status) {
255                                case 0 :
256                                        $us_id = $id;
257                                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
258                                        $this->updateUser ( $us_id, $user );
259                                        if ($isForgotPassword) {
260                                                $sms = "Mat khau moi cua quy vi tren soanbaigiang.smas.vn la " . $pass;
261                                        } else {
262                                                $sms = "Qui vi da doi thanh cong mat khau tren soanbaigiang.smas.vn.";
263                                        }
264                                        $status = 1;
265                                        break;
266                                case 5 :
267                                        $sms = "So dien thoai cá»§a Qui vi chua duoc dang ky!";
268                                        $status = 0;
269                                        break;
270                                default :
271                                        $status = 0;
272                                        $sms = $errMsg;
273                                        break;
274                        }
275                } else {
276                        $sms = "So dien thoai cá»§a Qui vi da duoc dang ky!";
277                        $status = 0;
278                }
279                return $status . '|' . $sms;
280        }
281       
282        public function checkLicense($userId) {
283                $isNotExpired = false;
284                $userInfo = array ();
285                $userInfo = $this->get_user_by_id ( $userId );
286               
287                $expireDate = $userInfo ['expire_date'];
288               
289                if ((trim ( $expireDate ) == ''))
290                        return $isNotExpired;
291               
292                $today = mktime ();
293                $expireTime = strtotime ( $expireDate . ' 23:59:59' );
294                $isNotExpired = ($today < $expireTime);
295                return $isNotExpired;
296        }
297       
298        public function registerVip($username, $p_code) {
299                $user = array ();
300                $sms = '';
301               
302                $result = $this->get_user_by_cellphone ( $username );
303                $package = $this->get_package ( ( int ) $p_code );
304                if (!$package)
305                {
306                        $sms = "Goi dich vụ qui vi dang ky khong ton tai";
307                        $status = 0;
308                        return $status . '|' . $sms;
309                }
310                if ($result) {
311                       
312                        if ($result ['acc_balanced'] >= $package ['p_price']) {
313                                $us_id = $result ['us_id'];
314                                $user ['acc_balanced'] = $result ['acc_balanced'] - $package ['p_price'];
315                                if ($this->checkLicense ( $us_id )) {
316                                        $user ['expire_date'] = date ( 'Y-m-d', strtotime ( $result ['expire_date'] . ' + ' . $package ['p_period'] . ' month' ) );
317                                } else {
318                                        $user ['expire_date'] = date ( 'Y-m-d', strtotime ( 'now + ' . $package ['p_period'] . ' month' ) );
319                                }
320                               
321                                $user ['p_id'] = $package ['p_id'];
322                                $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
323                               
324                                $this->updateUser ( $us_id, $user );
325                                $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 24h00 ngay " . date ( 'd/m/Y', strtotime ( $user ['expire_date'] ) );
326                                $status = 1;
327                        } else {
328                                $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!";
329                                $status = 0;
330                        }
331                } else {
332                        $sms = "Tai khoan [" . $username . "] chua dang ki tai khoan tren he thong SBG Online soanbaigiang.smas.vn.";
333                        $status = 0;
334                }
335                return $status . '|' . $sms;
336        }
337       
338        public function rechargeAccount($username, $amount) {
339                $user = array ();
340                $sms = '';
341                $result = $this->get_user_by_cellphone ( $username );
342                if ($result) {
343                        $us_id = $result ['us_id'];
344                        $user ['acc_balanced'] = $result ['acc_balanced'] + $amount;
345                        $user ['updated_time'] = date ( 'Y-m-d H:i:s' );
346                        $this->updateUser ( $us_id, $user );
347                        $sms = "Qui vi da nap thanh cong " . $amount . "VND vao tai khoan " . $username . " tren soanbaigiang.smas.vn";
348                        $status = 1;
349                } else {
350                        $sms = "Tai khoan " . $username . " chua dang ki tai khoan tren he thong SBG Online soanbaigiang.smas.vn.";
351                        $status = 0;
352                }
353                return $status . '|' . $sms;
354        }
355       
356        public function get_user_by_cellphone($cellphone) {
357                $this->db->query ( 'UNLOCK TABLES' );
358                $sql = 'SELECT * FROM tbluser where cellphone = ? LIMIT 0,1';
359                $query = $this->db->query ( $sql, array (
360                                $cellphone
361                ) );
362                $row = $query->row_array ();
363                return $row;
364        }
365       
366        public function isExistcollaborator($collaborator) {
367                $this->db->query ( 'UNLOCK TABLES' );
368                $this->db->select ( '*' )->from ( 'tblcollaborator' )->where ( 'login_name', $collaborator )->limit ( 1 );
369                $result = $this->db->get ()->row_array ();
370                if ($result)
371                        return true;
372                else
373                        return false;
374        }
375       
376        public function updateUser($us_id, $data) {
377                $this->db->query ( 'UNLOCK TABLES' );
378                $this->db->where ( 'us_id', $us_id );
379                $this->db->update ( 'tbluser', $data );
380        }
381       
382        public function get_package($p_code) {
383                $this->db->query ( 'UNLOCK TABLES' );
384                $sql = 'SELECT * FROM tblservicepackage where p_code = ? LIMIT 0,1';
385                $query = $this->db->query ( $sql, array (
386                                $p_code
387                ) );
388                $row = $query->row_array ();
389                return $row;
390        }
391       
392        public function insertSmslog($sentNumber, $serviceID, $commandcode, $info, $receiveTime) {
393                if (preg_match ( '/^(84)([0-9]{9,10})$/', $sentNumber, $aryMatch ) == 1) {
394                        $sentNumber = '0' . $aryMatch [2];
395                }
396               
397                try {
398                        $user = $this->get_user_by_cellphone ( $sentNumber );
399                } catch ( Exception $e ) {
400                }
401               
402                $smslog = array ();
403                $smslog ['sender'] = $sentNumber;
404                $smslog ['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
405                $smslog ['service_id'] = $serviceID;
406                $smslog ['commandcode'] = $commandcode;
407                $smslog ['info'] = $info;
408                $smslog ['created_time'] = $receiveTime;
409                $this->db->query ( 'UNLOCK TABLES' );
410                $sql = 'INSERT INTO tblsmslog(sender, us_id, service_id, commandcode, info, created_time) VALUES(?,?,?,?,?,?)';
411                $query = $this->db->query($sql, $smslog);
412        }
413       
414        public function insertPaidlog($sentNumber, $receiveID, $paidType, $amount, $paidTime) {
415                if (preg_match ( '/^(84)([0-9]{9,10})$/', $sentNumber, $aryMatch ) == 1) {
416                        $sentNumber = '0' . $aryMatch [2];
417                }
418               
419                try {
420                        $user = $this->get_user_by_cellphone ( $sentNumber );
421                } catch ( Exception $e ) {
422                }
423                $paidlog = array ();
424                $paidlog ['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
425                $paidlog ['paidType'] = $paidType;
426                $paidlog ['amount'] = $amount;
427                $paidlog ['paidTime'] = $paidTime;
428                $this->db->query ( 'UNLOCK TABLES' );
429                $sql = 'INSERT INTO tblpaidlog(us_id, paid_type, amount, paid_time) VALUES (?,?,?,?)';
430                $query = $this->db->query ( $sql, $paidlog );
431        }
432       
433        public function insertCardlog($username, $pinCode, $serialNum, $cardValue, $receiveTime)
434        {
435                try {
436                        $user = $this->get_user_by_cellphone ( $username );
437                } catch ( Exception $e ) {
438                }
439               
440                $cardlog = array();
441                $cardlog['sender'] = $username;
442                $cardlog['us_id'] = isset ( $user ['us_id'] ) ? $user ['us_id'] : NULL;
443                $cardlog['pin_code'] = $pinCode;
444                $cardlog['serial_num'] = $serialNum;
445                $cardlog['card_value'] = $cardValue;
446                $cardlog['created_time'] = $receiveTime;
447                $this->db->query ( 'UNLOCK TABLES' );
448                $sql = 'INSERT INTO tblcardlog(sender, us_id, pin_code, serial_num, card_value, created_time) VALUES(?,?,?,?,?,?)';
449                $query = $this->db->query ($sql, $cardlog);
450        }
451}
Note: See TracBrowser for help on using the repository browser.