source: pro-violet-viettel/sourcecode/application/modules/frontend/controllers/user.php

Last change on this file was 906, checked in by namnd, 10 years ago
File size: 21.6 KB
Line 
1<?php
2if (!defined('BASEPATH'))
3    exit('No direct script access allowed');
4
5/**
6 * Class User
7 * @todo Execute actions of user
8 *
9 * @see function profile
10 * @see function packageRegister
11 * @see function finishRegisterPackage
12 * @see function regpackage
13 * @see function update_info
14 * @see function update_user
15 * @see function change_password
16 * @see function trade_history
17 * @see function getUserInfor
18 * @see function adminUpdateUser
19 * @see function regis_history
20 * 
21 * @author dungnv02
22 *
23 */
24class User extends MX_Controller {
25
26    const TOKENPW = 'violet';
27
28    public function __construct() {
29        parent::__construct();
30        $this->load->helper('cookie');
31                $this->load->helper('language');
32                $this->lang->load('messages', 'message');
33    }
34
35    public function profile() {
36        $user_info = $this->session->userdata('userInfo');
37
38        if ($user_info) {
39            $this->load->model('User_model');
40            $this->load->model('Servicepackage_model');
41            $user = $user_info['user'];
42            $us_id = $user_info['us_id'];
43            $src = "SBG";
44            $token = md5($us_id . self::TOKENPW);
45            $data = $this->get_data($src, $token, $us_id);
46                        $data['can_edit'] = 0;
47            $u = $this->User_model->get_user_by_id($us_id);
48                        if ($u['p_id'] < 1) {
49                $data['can_edit'] = 1;
50            }
51            if ($data['fullname']=="")
52            {
53                $data['can_edit'] = 1;
54            }
55            $data['current_tab'] = $this->uri->segment(4, 'edit-basic');
56            $data['packages'] = $this->Servicepackage_model->getAllPackages();
57            $data['is_viettel'] = isset($user_info['is_viettel']) ? $user_info['is_viettel']:FALSE;
58            $data['provinces'] = lang('_PROVINCES_');
59                       
60            $data = (is_array($u)) ? array_merge($data, $u) : $data;
61            $data = (is_array($user_info)) ? array_merge($data, $user_info):$data;
62                       
63            $this->load->view('frontend/user_profile', $data);
64        } else {
65            redirect('frontend/home');
66        }
67    }
68
69    public function packageRegister() {
70        $result = array();
71        $input = $this->input->post();
72        $this->load->model('user_model');
73        $user_info = $this->session->userdata('userInfo');
74        if ($user_info) {
75            parse_str($user_info['user'], $info);
76            $this->load->model('servicepackage_model');
77
78            $package = $this->servicepackage_model->getPackage($input['p_id']);
79            $user = $user_info['user'];
80            $us_id = $user_info['us_id'];
81            $user = $this->user_model->get_user_by_id($us_id);
82                        //$us = array();
83                        $user['district'] = $this->user_model->getDistrictByIdAndProvince($user['district'], $user['province']);
84                       
85            $result['can_buy'] = 1;
86            $result['can_edit'] = 0;
87           
88            if ($user['acc_balanced'] < $package['p_price']) {
89                $result['can_buy'] = 0;
90            }
91           
92                        if(strtotime($user['expire_date'])<strtotime(date('Y-m-d'))){
93                                $result['can_edit'] = 1;
94                        }
95            if ($user['p_id'] < 1) {
96                $result['can_edit'] = 1;
97            }
98            if ($info['fullname']=="")
99            {
100                $result['can_edit'] = 1;
101            }
102            $result['info'] = $info;
103            $result['user'] = $user;
104            $result['package'] = $package;
105            $result['modal'] = $this->load->view('frontend/package_register_modal', $result, true);
106        } else {
107           
108        }
109        echo json_encode($result);
110    }
111
112    public function finishRegisterPackage() {
113        $result = array();
114        $result['success'] = 0;
115        $this->load->model('user_model');
116        $input = $this->input->post();
117                //print_r($input);
118        $user_info = $this->session->userdata('userInfo');
119        parse_str($user_info['user'], $info);
120        if (isset($input['fullname'])) {
121            if (strlen($input['fullname']) < 1) {
122                $result['errors'][] = lang('_SBG_REGISTER_VIP_FULLNAME_REQUIRED_MSG');
123            }
124            if (strlen($input['school']) < 1) {
125                $result['errors'][] = lang('_SBG_REGISTER_VIP_SCHOOL_REQUIRED_MSG');
126            }
127            if (!isset($result['errors'])) {
128                $user_info = $this->session->userdata('userInfo');
129                if ($user_info) {
130
131                    $src = "SBG";
132                    $us_id = $user_info['us_id'];
133                    $input['password'] = '';
134                    $input['oldpass'] = '';
135                    $input['gender'] = '';
136                    $input['email'] = '';
137                    //$input['province'] = '';
138                    $info['fullname'] = $input['fullname'];
139                    $info['school'] = $input['school'];
140                    $token = md5($us_id . self::TOKENPW);
141                    $user = $this->get_data($src, $token, $us_id);
142                                        //$input['district'] = '';
143                    if ($input) {
144                        $this->load->model('user_model');
145                        $update = $this->user_model->update_user($src, $token, $input, $us_id);
146                        $info = urldecode(http_build_query($info));
147                        $userdata = array('username' => $user_info['username'], 'user' => $info, 'us_id' => $user_info['us_id'], 'logined_in' => TRUE, 'is_viettel' => $user_info['is_viettel']);
148                        $this->session->set_userdata('userInfo', $userdata);
149                    }
150                }
151            }
152        }
153       
154        if (isset($result['errors'])) {
155            echo json_encode($result);
156            exit();
157        }
158       
159        $this->load->model('servicepackage_model');
160        $us_id = $user_info['us_id'];
161        //$user = $this->user_model->get_user_by_id($us_id);
162                $user = $this->user_model->getUserById($us_id);
163                //$user['district'] = $this->user_model->getDistrictByIdAndProvince($user['district'], $user['province']);
164        $package = $this->servicepackage_model->getPackage($input['p_id']);
165        $user['acc_balanced'] = $user['acc_balanced'] - $package['p_price'];
166       
167        $today_dt = new DateTime(date('Y-m-d 00:00:00'));
168        $expire_dt = new DateTime($user['expire_date']);
169       
170        $currentExpireDate = $user['expire_date'] == NULL || trim($user['expire_date']) == '' || $today_dt > $expire_dt  ? date('Y-m-d 00:00:00') : $user['expire_date'];
171        $user['expire_date'] = date('Y-m-d', strtotime("+" . $package['p_period'] . " ".$package['p_unit'], strtotime($currentExpireDate)));
172        $user['p_id'] = $package['p_id'];
173                $user['province'] = $input['province'];
174                $user['district'] = $input['district'];
175        $this->user_model->updateUser($us_id, $user);
176        $user['expire_date'] = date("d-m-Y", (strtotime($user['expire_date'])));
177        $result['expire_date'] = $user['expire_date'];
178        $result['success'] = 1;
179        $message = str_replace(':period:', date("d/m/Y", (strtotime($user['expire_date']))), lang('_SBG_REGISTER_VIP_SUCCESS_MSG'));
180        $result['message'] = $message;
181
182                $toDate = date("Y-m-d", (strtotime($result['expire_date'])));
183                $this->user_model->insertRegisterVipLog($user['cellphone'],$package['p_code'], false);
184        echo json_encode($result);
185    }
186
187    public function regpackage() {
188        $user_info = $this->session->userdata('userInfo');
189        parse_str($user_info['user'], $info);
190        $p_id = $this->input->post('p_id', TRUE);
191
192        $us_id = (int) $info['id'];
193        $this->load->model('servicepackage_model');
194        $this->load->model('user_model');
195
196        $user = $this->user_model->get_user_by_id($us_id);
197                $user['district'] = $this->user_model->getDistrictByIdAndProvince($user['district'], $user['province']);
198        $package = $this->servicepackage_model->getPackage($p_id);
199
200        if ($user['acc_balanced'] < $package['p_price']) {
201                        $aryPatterns = array('/:acc_balanced:/');
202                        $message = preg_replace($aryPatterns, array(number_format($user['acc_balanced'], 0)), lang('_SBG_ACC_BALANCE_LESS_PACKAGE_PRICE_MSG'));
203        } else {
204            $user['acc_balanced'] = $user['acc_balanced'] - $package['p_price'];
205           
206            $today_dt = new DateTime(date('Y-m-d 00:00:00'));
207            $expire_dt = new DateTime($user['expire_date']);
208           
209            $currentExpireDate = $user['expire_date'] == NULL || trim($user['expire_date']) == ''  || $today_dt > $expire_dt ? date('Y-m-d 00:00:00') : $user['expire_date'];
210
211            $user['expire_date'] = date('Y-m-d', strtotime("+" . $package['p_period'] . " " . $package['p_unit'], strtotime($currentExpireDate)));
212            //$user['expire_date'] = date("Y-m-d", (strtotime($user['expire_date']) - 1));
213
214            $user['p_id'] = $package['p_id'];
215
216            $this->user_model->updateUser($us_id, $user);
217                        $aryPatterns = array('/:period:/');
218                        $message = preg_replace($aryPatterns, array(date('d-m-Y', strtotime($user['expire_date']))), lang('_SBG_REGISTER_VIP_SUCCESS_MS'));
219                        $this->user_model->insertRegisterVipLog($user['cellphone'], $package['p_code'], false);
220        }
221
222        $this->session->set_flashdata('message', $message);
223        redirect('frontend/user/profile#services-register');
224    }
225
226    private function get_data($src, $token, $us_id) {
227        $this->load->model('user_model');
228        $user = $this->user_model->get_user_info($src, $token, $us_id);
229
230        if (strpos($user, '&')) {
231            parse_str($user);
232            $us = $this->user_model->get_user_by_id($us_id);
233                        $us['district'] = $this->user_model->getDistrictByIdAndProvince($us['district'], $province);
234            $data = array('us_id' => $us_id, 'username' => $username, 'fullname' => $fullname,
235                'gender' => $gender, 'email' => $email, 'phone' => $phone, 'school' => $school, 'province' => $province, 'district' => $us['district'],
236                'acc_balanced' => $us['acc_balanced'], 'expire_date' => $us['expire_date'], 'date_diff' => $this->dateDiff($us['expire_date'])
237            );
238            return $data;
239        } else {
240            return "";
241        }
242    }
243
244    private function dateDiff($expire_date) {
245        $date1 = date("Y-m-d");
246        if ((strtotime($expire_date) - strtotime($date1)) < 0)
247            return "0 ngày còn lại";
248        $diff = strtotime($expire_date) - strtotime($date1);
249        $years = floor($diff / (365 * 60 * 60 * 24));
250        $months = floor(($diff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
251        $days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
252        if ($years > 0) {
253            return $years . " năm, " . $months . " tháng, " . $days . " ngày còn lại";
254        } else {
255            if ($months > 0) {
256                return $months . " tháng, " . $days . " ngày còn lại";
257            } else {
258                return $days . " ngày còn lại";
259            }
260        }
261    }
262   
263        public function update_info() {
264        $result['success'] = 0;
265        $user_info = $this->session->userdata('userInfo');
266        if ($user_info) {
267            $us_id = $user_info['us_id'];
268            $result = array();
269            $result['success'] = 0;
270            $src = "SBG";
271            $token = md5($us_id . self::TOKENPW);
272            $user = $this->get_data($src, $token, $us_id);
273            $input = $this->input->post();
274            parse_str($user_info['user'], $info);
275            if ($input) {
276                                if (array_key_exists('fullname', $input)) {
277                                        if (strlen($input['fullname']) == 0) {
278                                                $result['errors'][] = array("content"=>lang('_SBG_FULLNAME_REQUIRED_MSG'),"field"=>"fullname");
279                                        }
280                                }else{
281                                        $input['fullname'] = $user['fullname'];
282                                }
283                if (strlen($input['school']) == 0) {
284                    $result['errors'][] = array("content"=>lang('_SBG_REGISTER_VIP_SCHOOL_REQUIRED_MSG'),"field"=>"school");
285                }
286                                if (strlen($input['province']) == 0) {
287                    $result['errors'][] = array("content"=>lang('_SBG_PROVINCE_REQUIRED_MSG'),"field"=>"province");
288                }
289                                if (strlen($input['district']) == 0) {
290                    $result['errors'][] = array("content"=>lang('_SBG_DISTRICT_REQUIRED_MSG'),"field"=>"district");
291                }
292                $input['password'] = '';
293                $input['oldpass'] = '';
294                $this->load->model('user_model');
295                if (!isset($result['errors'])) {
296                    $result['data'] = $this->user_model->update_user($src, $token, $input, $us_id);
297                    $result['success'] = 1;
298                    $info['fullname'] = $input['fullname'];
299                    $info['school'] = $input['school'];
300                    $info = urldecode(http_build_query($info));
301                    $userdata = array('username' => $user_info['username'], 'user' => $info, 'us_id' => $user_info['us_id'], 'logined_in' => TRUE, 'is_viettel' => $user_info['is_viettel']);
302                    $this->session->set_userdata('userInfo', $userdata);
303                }
304                echo json_encode($result);
305            }
306        } else {
307            redirect('frontend/home');
308        }
309    }
310   
311    public function update_user() {
312        $us_id = $this->uri->segment(4);
313        $user_info = $this->session->userdata('userInfo');
314        if ($user_info) {
315            $result = array();
316            $result['success'] = 0;
317            $src = "SBG";
318            $token = md5($us_id . self::TOKENPW);
319            $user = $this->get_data($src, $token, $us_id);
320            $input = $this->input->post();
321            if ($input) {
322                $input['username'] = $user['username'];
323                if (array_key_exists('fullname', $input)) {
324                    if (strlen($input['fullname']) == 0) {
325                        $result['errors']['fullname_err'] = lang('_SBG_FULLNAME_REQUIRED_MSG');
326                    }
327                } else {
328                    $input['fullname'] = $user['fullname'];
329                }
330
331                $input['password'] = '';
332                $input['oldpass'] = '';
333                $this->load->model('user_model');
334                if (!isset($result['errors'])) {
335                    $result['data'] = $this->user_model->update_user($src, $token, $input, $us_id);
336                    $result['success'] = 1;
337                }
338                echo json_encode($result);
339            }
340        } else {
341            redirect('frontend/home');
342        }
343    }
344
345    public function change_password() {
346        $us_id = $this->uri->segment(4);
347        $user_info = $this->session->userdata('userInfo');
348        if ($user_info) {
349            $this->load->model('user_model');
350            $us_id = $user_info['us_id'];
351            $src = "SBG";
352            $token = md5($us_id . self::TOKENPW);
353            $input = $this->input->post();
354
355            if (strlen($input['passwd']) == 0) {
356                $result['errors']['passwd_old_err'] = lang('_SBG_PASSWORD_REQUIRED_MSG');
357            }
358                       
359            if (strlen($input['passwd_new']) == 0) {
360                $result['errors']['passwd_new_err'] = lang('_SBG_PASSWORD_REQUIRED_MSG');
361            } else if (strcmp($input['passwd'], $input['passwd_new']) == 0) {
362                $result['errors']['passwd_new_err'] = lang('_SBG_PASSWORD_DUPLICATE_MSG');
363            }else
364                        {
365                                if (!preg_match('/^([0-9a-zA-Z]{6,65})*$/', $input['passwd_new']))
366                                {
367                                        $result['errors']['passwd_new_err'] = lang('_SBG_USER_PASSWORD_CHANGE_REQUIRED_MSG');
368                                }
369                        }
370                       
371            if ($input['passwd_new'] != $input['confirm_passwd_new']) {
372                $result['errors']['confirm_passwd_new_err'] = lang('_SBG_PASSWORD_CONFIRM_MSG');
373            }
374
375            if (!isset($result['errors'])) {
376                $user = array('username' => $user_info['username'], 'fullname' => null, 'gender' => null, 'email' => null, 'school' => null, 'province' => null, 'password' => $input['passwd_new'], 'oldpass' => $input['passwd']);
377                $data = $this->user_model->update_user($src, $token, $user, $us_id);
378                parse_str($data);
379                                error_log('API return ---- Data: '. var_export($data, TRUE). "\n", 3, '/srv/www/sbg/log/changepass.log');
380                switch ((int)$status) {
381                    case 0:
382                        $result['success'] = 1;
383                        break;
384                    case 6:
385                        $result['errors']['passwd_old_err'] = lang('_SBG_OLD_PASSWORD_FAIL_MSG');
386                        break;
387                    default:
388                        break;
389                }
390            }
391
392            echo json_encode($result);
393        } else {
394            redirect('frontend/home');
395        }
396    }
397       
398        public function trade_history()
399        {
400                $this->load->helper('pagging');
401                $us_id = $this->uri->segment(4);
402
403        $user_info = $this->session->userdata('userInfo');
404                $admin_info = $this->session->userdata('adminInfo');
405
406        if ($user_info || $admin_info)
407                {
408                        $data['us_id'] = $us_id;
409                        $data['perpage'] = 10;
410                        $data['current_page'] = $this->uri->segment(6, 1);
411                        $data['start'] = ($data['current_page'] - 1) * $data['perpage'];
412                        $this->load->model('user_model');
413                        $result = $this->user_model->getPaidlog($data);
414                        $data['total'] = $this->user_model->countPaiglogs($us_id);
415                        $data['num_links'] = 2;
416                        $data['paging_url'] = base_url() . "frontend/user/trade_history/".$us_id."/page/";
417                        $data['paging'] = pagging($data);
418                        $paidlogs = array();
419                        foreach ($result as $paidlog):
420                                $paidlog['amount'] = number_format($paidlog['amount'], 0);
421                                $paidlog['paid_time'] = date('d/m/Y H:i:s', strtotime($paidlog['paid_time']));
422                                array_push($paidlogs, $paidlog);
423                        endforeach;
424                        $data['paidlogs'] = $paidlogs;
425                        echo json_encode($data);
426                }else {
427            redirect('frontend/home');
428        }
429        }
430        public function getUserInfor()
431        {
432            $this->load->model('User_model');
433            $data=array();
434            $us_id = $this->uri->segment(4);
435            $src = "SBG";
436            $token = md5($us_id . self::TOKENPW);
437            $user = $this->User_model->get_user_info($src, $token, $us_id);
438            parse_str($user,$user);
439            $local=$this->User_model->get_user_by_id($us_id);
440            $data['user']=  array_merge($user,$local);       
441            $this->lang->load('messages', 'message');
442            $admin=$this->session->userdata('adminInfo');
443            $roles=array();
444            foreach ($admin['roles'] as $role)
445            {
446                $roles[]=$role['role_name'];
447            }
448            $data['roles']=$roles;
449            $data['provinces'] = lang('_PROVINCES_');
450            $result['modal']=$this->load->view('frontend/user_infor', $data, TRUE);               
451            echo json_encode($result);
452                   
453        }
454        public function adminUpdateUser()
455        {
456            $this->load->model('User_model');
457            $input=$input = $this->input->post();
458            $us_id=$input["us_id"];
459            $src = "SBG";
460            $token = md5($us_id . self::TOKENPW);
461            $api['fullname']=$input['fullname'];
462            $api['school']=$input['school'];
463            $local['district']=$input['district'];
464            $local['province']=$input['province'];
465            $update = $this->User_model->update_user($src, $token, $api, $us_id);
466            $this->User_model->update_local_user($local,$us_id);
467            $result['success']=1;
468            echo json_encode($result);
469        }
470        public function regis_history()
471        {
472                $this->load->model('servicepackage_model');
473                $this->load->helper('pagging');
474                $us_id = $this->uri->segment(4);
475                $this->load->model('user_model');
476                $user = $this->user_model->get_user_by_id($us_id);
477                $username = $user['cellphone'];
478                $user_info = $this->session->userdata('userInfo');
479                $admin_info = $this->session->userdata('adminInfo');
480                if ($user_info || $admin_info)
481                {
482                        $data['us_id'] = $us_id;
483                        $data['username'] = $username;
484                        $data['acc_balanced'] = number_format($user['acc_balanced']);
485                        $data['perpage'] = 10;
486                        $data['current_page'] = $this->uri->segment(6, 1);
487                        $data['start'] = ($data['current_page'] - 1) * $data['perpage'];
488                        $this->load->model('user_model');
489                        $result = $this->user_model->getPackagelog($data);
490                        $results = array();
491                        foreach($result as $re){
492                                if ($re['p_code']>0){
493                                        $p_price =  $this->servicepackage_model->getPackagePriceByCode($re['p_code']);
494                                        $re['amount'] = -$p_price;
495                                }
496                                array_push($results, $re);
497                        }
498                        $data['total'] = $this->user_model->countPackagelogs($username, $us_id);
499                        $data['num_links'] = 2;
500                        $data['paging_url'] = base_url() . "frontend/user/regis_history/".$us_id."/page/";
501                        $data['paging'] = pagging($data);
502                        $packagelogs = array();
503                        foreach ($results as $packagelog):
504                                $packagelog['created_time'] = date('d/m/Y H:i:s', strtotime($packagelog['created_time']));
505                                array_push($packagelogs, $packagelog);
506                        endforeach;
507                        $data['packagelogs'] = $packagelogs;
508                        echo json_encode($data);
509                }else
510                {
511                         redirect('frontend/home');
512                }
513               
514        }
515       
516        function getDistrict(){
517               
518                $user_info = $this->session->userdata('userInfo');
519                $admin_info = $this->session->userdata('adminInfo');
520                if ($user_info || $admin_info) {
521                        $result = array();
522                        $provinceId = $this->uri->segment(4);
523                        $this->load->model ( 'user_model' );
524                        if ($provinceId){
525                                $results = $this->user_model->getDistrictByProvince($provinceId);
526                        }
527                        echo json_encode($results);
528                }else{
529                        show_404();
530                }
531               
532        }
533
534}
Note: See TracBrowser for help on using the repository browser.