load->model('point_model'); $this->load->model('combo_model'); } public function index() { $data = array(); $this->load->helper('url'); $this->reportpoints(); } protected function renderPointsPage($page_name, $data) { $this->load->view('admin/view_admin_header', $data); $this->load->view('points/' . $page_name, $data); $this->load->view('admin/view_admin_footer', $data); } public function getValueOfPointReport() { return [ 'member_id' => trim($this->input->get('member_id') ?? ''), 'description' => trim($this->input->get('description') ?? ''), 'id' => trim($this->input->get('id') ?? ''), 'from_points' => trim($this->input->get('from_points') ?? ''), 'to_points' => trim($this->input->get('to_points') ?? ''), 'from_date' => trim($this->input->get('from_date') ?? ''), 'to_date' => trim($this->input->get('to_date') ?? ''), 'status' => trim($this->input->get('card_status') ?? ($this->input->get('status') ?? -1)), ]; } public function setOnePastMonth(&$params, $default_date = 'on') { if (strcmp($default_date, 'on') === 0) { $params['from_date'] = date("Y-m-d", strtotime("-1 months")); $params['to_date'] = date("Y-m-d"); } } public function setComboForPointReport($params) { $this->load->model('combo_model'); $combo['card_status'] = $this->combo_model->getStatusComboFromZeroToNine( 'card_status', $params['status'] ); return $combo; } public function getValueCombo($val) { $status_value = range(0, 9); return in_array($val, $status_value) ? $val : ''; } public function validateValueForPointReport($params) { $this->load->library('form_validation'); $this->form_validation->set_data($params); $this->setFormRuleForPointReportForm(); $errors = []; if ($this->form_validation->run() === FALSE) { $errors = $this->form_validation->error_array(); } return $errors; } public function setFormRuleForPointReportForm() { $status_pattern = 'regex_match[/^(?:[0-9])$/]'; $date_pattern = 'regex_match[/\d{4}-\d{2}-\d{2}/]'; $this->form_validation->set_rules('member_id', 'Member ID', 'numeric'); $this->form_validation->set_rules('id', 'ID', 'numeric'); $this->form_validation->set_rules('from_points', 'From Points', 'numeric'); $this->form_validation->set_rules('to_points', 'To Points', 'numeric'); $this->form_validation->set_rules('from_date', 'From Added', $date_pattern); $this->form_validation->set_rules('to_date', 'To Added', $date_pattern); $this->form_validation->set_rules('status', 'Status', $status_pattern); } public function load_pagination($all_record, $params, $action) { $action_hidden = $this->input->get('action_hidden'); // pagination $this->load->library('pagination'); $config["total_rows"] = count($all_record); $config["base_url"] = base_url() . "/points/" . $action; $config["per_page"] = 10; $config["uri_segment"] = 3; $config["num_links"] = 5; $config["suffix"] = "?action_hidden=${action_hidden}&" . http_build_query($params); $config["first_url"] = "/points/{$action}/0?action_hidden=${action_hidden}&" . http_build_query($params); $config['full_tag_open'] = ""; $config['num_tag_open'] = '
  • '; $config['num_tag_close'] = '
  • '; $config['cur_tag_open'] = "
  • "; $config['cur_tag_close'] = "
  • "; $config['next_tag_open'] = "
  • "; $config['next_tagl_close'] = "
  • "; $config['prev_tag_open'] = "
  • "; $config['prev_tagl_close'] = "
  • "; $config['first_tag_open'] = "
  • "; $config['first_tagl_close'] = "
  • "; $config['last_tag_open'] = "
  • "; $config['last_tagl_close'] = "
  • "; $this->pagination->initialize($config); $page = ( $this->uri->segment(3) ) ? $this->uri->segment(3) : 0; $offset = is_numeric($page) ? $page : 0; return [ 'link' => $this->pagination->create_links(), 'offset' => $offset, 'limit' => $config["per_page"] ]; } public function reportpoints() { $this->load->model('report_point_model'); $this->load->library('table'); $this->table->set_template($this->template); $this->table->set_heading([ 'FirstName', 'Lastname', 'ID', 'Description', 'Points', 'Added', 'Status', ]); $params = $this->getValueOfPointReport(); $default_date = $this->input->get('default_date'); if ($this->input->get('action_hidden')) { $this->setOnePastMonth($params, $default_date); } else { $this->setOnePastMonth($params); } $data = $this->setComboForPointReport($params); $params['status'] = $this->getValueCombo($params['status']); $params = array_filter($params, function($ele) { return $ele !== ""; }); $errors = $this->validateValueForPointReport($params); $params = array_diff_key($params, $errors); $data = array_merge( $data, $params, $this->load_pagination( $this->report_point_model->get_report_point_records($params), $params, 'index' ) ); $data['points_report'] = $this->table->generate( $this->report_point_model->get_report_point_records( $params, $data['limit'], $data['offset'] ) ); if ($this->input->get('action_hidden')) { $data['default_date'] = $default_date; } else { $data['default_date'] = 'on'; } $data["page_title"] = "Points Redemption"; $this->renderPointsPage("view_pointsreport", $data); } public function getValueOfAssignsReport() { return [ 'search_text' => trim($this->input->get('search_text') ?? ''), 'find_select_value' => trim( ! empty($this->input->get('find_select')) ? $this->input->get('find_select') : $this->input->get('find_select_value')), 'from_points' => trim($this->input->get('from_points') ?? ''), 'to_points' => trim($this->input->get('to_points') ?? ''), ]; } public function setComboForAssignsReport($params) { $this->load->model('combo_model'); $combo['find_select'] = $this->combo_model->getfindMemberType( 'find_select', $params['find_select_value'] ); $combo['descsion_group'] = $this->combo_model->getDescisionGroupCombo( 'descsion_group', trim($this->input->post('decision_group') ?? '') ); return $combo; } public function validateValueForAssignsReport($params) { $this->load->library('form_validation'); $this->form_validation->set_data($params); $this->setFormRuleForAssignsReport(); $errors = []; if ($this->form_validation->run() === FALSE) { $errors = $this->form_validation->error_array(); } return $errors; } public function setFormRuleForAssignsReport() { $this->form_validation->set_rules( 'find_select_value', 'Select Value', 'in_list[email,firstname,lastname]' ); $this->form_validation->set_rules( 'from_points', 'Points', 'numeric' ); $this->form_validation->set_rules( 'to_points', 'Points', 'numeric' ); } public function assignpoints() { $this->load->model('assigns_point_model'); $this->load->library('table'); $this->table->set_template($this->template); $this->table->set_heading([ 'ID', 'Username', 'FirstName', 'LastName', 'Points', 'Act', ]); $params = $this->getValueOfAssignsReport(); $data = $this->setComboForAssignsReport($params); $errors = $this->validateValueForAssignsReport($params); $params = array_filter($params, function($ele) { return $ele !== ""; }); $params = array_diff_key($params, $errors); if (isset($params['search_text'])) { // set ['email' => 'test@gmail.com'] $params[$params['find_select_value']] = $params['search_text']; } $data = array_merge( $data, $params, $this->load_pagination( $this->assigns_point_model->get_assigns_point_records($params), $params, 'assignpoints' ) ); $data['points_report'] = $this->table->generate( $this->assigns_point_model->get_assigns_point_records( $params, $data['limit'], $data['offset'] ) ); $data["page_title"] = "Allocate Point"; $this->renderPointsPage("view_assignpoints", $data); } public function viewAssignDetail() { $data = array(); $this->load->model('combo_model'); $points_settings_value = ''; if ($this->input->get()) { $member_id = $this->input->get('member_id'); if ($member_id != '' && $member_id > 0) { $this->memberPointsItems($member_id, $data); $data["points_settings"] = $this->combo_model->getPointsSettingsCombo("points_settings", $points_settings_value); $data['member_id'] = $member_id; $mysql = "SELECT * FROM members WHERE id = " . $member_id; $query = $this->read_replica->query($mysql); $mr = $query->row_array(); // print_r($mr); $data["firstname"] = $mr["firstname"]; $data["lastname"] = $mr["lastname"]; $data["email"] = $mr["email"]; $this->load->view('points/extra/point_extra', $data); } /* /* $mysql = "SELECT a.*,a.id AS member_id, b.format AS picture_format "; $mysql .= " FROM members a LEFT JOIN card_images b ON (b.id=a.profile_picture) WHERE a.id = $member_id"; $query = $this->db->query($mysql); $data = $query->row_array(); $data["devices"] = []; $data['storage'] = $savvyext->cfgReadChar('system.storage_url'); $data['start_date'] = $this->input->get('start_date'); $data['end_date'] = $this->input->get('end_date'); $data['status'] = !is_null($this->input->get('card_status')) ? $this->input->get('card_status') : 1; $data['card_status'] = $this->combo_model->getStatusCombo( 'card_status', $data['status'] ); $q = "SELECT * FROM members_devices WHERE member_id=${member_id}"; $q .= $this->query_condition_member_detail($data); $r = $this->db->query($q); foreach ($r->result() as $row) { $data["devices"][] = $row->player_id; } $this->load->view('points/extra/point_extra', $data); } else { echo "Not found - illegal call"; } */ } } private function memberPointsItems($member_id, &$data) { $this->load->library('table'); $this->table->set_template($this->template); $data['points_recieved'] = ''; $mysql = "SELECT s.point_key,s.name,p.points,p.added::date " . " FROM members_points p " . " LEFT JOIN points_settings s ON s.point_key=p.point_key " . " WHERE p.member_id = " . $member_id . " ORDER BY p.added DESC"; $query = $this->read_replica->query($mysql); $data["points_recieved"] = $this->table->generate($query); return $data; } public function SendMemberPoints() { // echo "ameye aaaa olusesan bbbb"; $data = array(); $this->load->model('combo_model'); $points_settings_value = ''; if ($this->input->get()) { $member_id = $this->input->get('member_id'); $point_key = $this->input->get('point_key'); if ($member_id != '' && $member_id > 0) { $in = array(); $in["action"] = SAVVY_BKO_ASSIGN_POINTS; $in['member_id'] = $member_id; // for session testing - not used $in['point_key'] = $point_key; $out = array(); $ret = $this->savvy_api($in, $out); // print_r($out); $message = $out["status_message"]; // if ($ret == PHP_API_OK) { // $message = $out["status_message"]; // } else { // $message = $out["status_message"]; // } echo $message; } } // $this->load->view('points/extra/point_extra', $data); } /** * Systemic Points Summary Report * * @return view */ public function systemicPointsSummary() { $data_report = $this->point_model->getSystemicPointsSummary(); $data = [ 'page_title' => 'Systemic Points Summary', 'data_report' => $data_report, 'country_filter' => $this->combo_model->getCountriesHasAccount('country_filter', ''), 'point_key' => $this->combo_model->getPointKeyUsed('point_key', ''), 'point_value' => $this->combo_model->getPointValueUsed('point_value', ''), ]; $this->renderPointsPage('view_systemic_points_summary', $data); } public function getSystemicPointsDatatables() { $data = $this->point_model->getSystemicPointsDatatables($this->input->post(), 'search'); header('Content-Type: application/json'); echo json_encode($data); } public function systemicPointsReportCSV() { $this->load->library('session'); $postData = $this->session->userdata("SPR_PARAM"); if ($postData) { $this->point_model->getSystemicPointsDatatables($postData, 'export_csv'); } else { echo 'Please try again!'; die(); } } }