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

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