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

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