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

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