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

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