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

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