X7ROOT File Manager
Current Path:
/home/hamdjcne/app.hamdalillahitravel.com/app/Models
home
/
hamdjcne
/
app.hamdalillahitravel.com
/
app
/
Models
/
ðŸ“
..
📄
.DS_Store
(6 KB)
📄
Crud.php
(91.63 KB)
Editing: Crud.php
<?php namespace App\Models; use CodeIgniter\Model; use App\Libraries\Ciqrcode; class Crud extends Model { protected $ciqrcode; public function __construct() { $this->session = \Config\Services::session(); $this->session->start(); $this->ciqrcode = new Ciqrcode(); } //////////////////// C - CREATE /////////////////////// public function create($table, $data) { $db = db_connect(); $builder = $db->table($table); $builder->insert($data); return $db->InsertID(); $db->close(); } //////////////////// R - READ ///////////////////////// public function read($table, $limit='', $offset='') { $db = db_connect(); $builder = $db->table($table); $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read_order($table, $field, $type, $limit='', $offset='') { $db = db_connect(); $builder = $db->table($table); $builder->orderBy($field, $type); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read_single($field, $value, $table, $limit='', $offset='') { $db = db_connect(); $builder = $db->table($table); $builder->orderBy('id', 'DESC'); $builder->where($field, $value); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read_single_order($field, $value, $table, $or_field, $or_value, $limit='', $offset='') { $db = db_connect(); $builder = $db->table($table); $builder->orderBy($or_field, $or_value); $builder->where($field, $value); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read2_order($field, $value, $field2, $value2, $table, $or_field, $or_value, $limit='', $offset='') { $db = db_connect(); $builder = $db->table($table); $builder->orderBy($or_field, $or_value); $builder->where($field, $value); $builder->where($field2, $value2); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read2($field, $value, $field2, $value2, $table, $limit='', $offset='') { $db = db_connect(); $builder = $db->table($table); $builder->orderBy('id', 'DESC'); $builder->where($field, $value); $builder->where($field2, $value2); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read3($field, $value, $field2, $value2, $field3, $value3, $table, $limit='', $offset='') { $db = db_connect(); $builder = $db->table($table); $builder->orderBy('id', 'DESC'); $builder->where($field, $value); $builder->where($field2, $value2); $builder->where($field3, $value3); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read_field($field, $value, $table, $call) { $return_call = ''; $getresult = $this->read_single($field, $value, $table); if(!empty($getresult)) { foreach($getresult as $result) { $return_call = $result->$call; } } return $return_call; } public function read_field2($field, $value, $field2, $value2, $table, $call) { $return_call = ''; $getresult = $this->read2($field, $value, $field2, $value2, $table); if(!empty($getresult)) { foreach($getresult as $result) { $return_call = $result->$call; } } return $return_call; } public function read_field2_order($field, $value, $field2, $value2, $table, $or_field, $or_value, $call) { $return_call = ''; $getresult = $this->read2_order($field, $value, $field2, $value2, $table, $or_field, $or_value,); if(!empty($getresult)) { foreach($getresult as $result) { $return_call = $result->$call; } } return $return_call; } public function read_field3($field, $value, $field2, $value2, $field3, $value3, $table, $call) { $return_call = ''; $getresult = $this->read3($field, $value, $field2, $value2, $field3, $value3, $table); if(!empty($getresult)) { foreach($getresult as $result) { $return_call = $result->$call; } } return $return_call; } public function read_group($table, $group, $limit='', $offset='') { $db = db_connect(); $db->query("SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));"); $builder = $db->table($table); $builder->orderBy('id', 'DESC'); $builder->groupBy($group); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function read_single_group($field, $value, $table, $group, $limit='', $offset='') { $db = db_connect(); $db->query("SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));"); $builder = $db->table($table); $builder->orderBy('id', 'DESC'); $builder->where($field, $value); $builder->groupBy($group); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function check0($table){ $db = db_connect(); $builder = $db->table($table); return $builder->countAllResults(); $db->close(); } public function check($field, $value, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($field, $value); return $builder->countAllResults(); $db->close(); } public function check2($field, $value, $field2, $value2, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($field, $value); $builder->where($field2, $value2); return $builder->countAllResults(); $db->close(); } public function check3($field, $value, $field2, $value2, $field3, $value3, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($field, $value); $builder->where($field2, $value2); $builder->where($field3, $value3); return $builder->countAllResults(); $db->close(); } public function checks($field, $value, $field2, $value2, $field3, $value3, $field4, $value4, $field5, $value5, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($field, $value); $builder->where($field2, $value2); $builder->where($field3, $value3); $builder->where($field4, $value4); $builder->where($field5, $value5); return $builder->countAllResults(); $db->close(); } //////////////////// U - UPDATE /////////////////////// public function updates($field, $value, $table, $data) { $db = db_connect(); $builder = $db->table($table); $builder->where($field, $value); $builder->update($data); return $db->affectedRows(); $db->close(); } //////////////////// D - DELETE /////////////////////// public function deletes($field, $value, $table) { $db = db_connect(); $builder = $db->table($table); $builder->where($field, $value); $builder->delete(); return $db->affectedRows(); $db->close(); } public function deletes2($field, $value, $field2, $value2, $table) { $db = db_connect(); $builder = $db->table($table); $builder->where($field, $value); $builder->where($field2, $value2); $builder->delete(); return $db->affectedRows(); $db->close(); } //////////////////// END DATABASE CRUD /////////////////////// //////////////////// DATATABLE AJAX CRUD /////////////////////// public function datatable_query($builder, $table, $column_order, $column_search, $order, $where='') { // where clause if(!empty($where)) { foreach($where as $key=>$value) { $builder->where($key, $value); } } // here combine like queries for search processing $i = 0; if($_POST['search']['value']) { foreach($column_search as $item) { if($i == 0) { $builder->like($item, $_POST['search']['value']); } else { $builder->orLike($item, $_POST['search']['value']); } $i++; } } // here order processing if(isset($_POST['order'])) { // order by click column $builder->orderBy($column_order[$_POST['order']['0']['column']], $_POST['order']['0']['dir']); } else { // order by default defined $builder->orderBy(key($order), $order[key($order)]); } } public function datatable_load($table, $column_order, $column_search, $order, $where='') { $db = db_connect(); $builder = $db->table($table); $this->datatable_query($builder, $table, $column_order, $column_search, $order, $where); if($_POST['length'] != -1) { $builder->limit($_POST['length'], $_POST['start']); } $query = $builder->get(); return $query->getResult(); $db->close(); } public function datatable_filtered($table, $column_order, $column_search, $order, $where='') { $db = db_connect(); $builder = $db->table($table); $this->datatable_query($builder, $table, $column_order, $column_search, $order, $where); // $query = $builder->get(); // return $query->num_rows(); return $builder->countAllResults(); $db->close(); } public function datatable_count($table, $where='') { $db = db_connect(); $builder = $db->table($table); // where clause // if(!empty($where)) { // $builder->where($field, $value); // } return $builder->countAllResults(); $db->close(); } //////////////////// END DATATABLE AJAX CRUD /////////////////// //////////////////// NOTIFICATION CRUD /////////////////////// public function msg($type = '', $text = ''){ if($type == 'success'){ $icon = 'ki-shield-tick'; $icon_text = 'Successful!'; } else if($type == 'info'){ $icon = 'ki-search-list'; $icon_text = 'Head up!'; } else if($type == 'warning'){ $icon = 'ki-cross'; $icon_text = 'Please check!'; } else if($type == 'danger'){ $icon = 'ki-shield-cross'; $icon_text = 'Oops!'; } return ' <div class="alert alert-dismissible bg-light-'.$type.' d-flex flex-column flex-sm-row p-5 mb-10"> <i class="ki-duotone '.$icon.' fs-2hx text-'.$type.' me-4 mb-5 mb-sm-0"><span class="path1"></span><span class="path2"></span><span class="path3"></span></i> <div class="d-flex flex-column pe-0 pe-sm-10"> <!--begin::Title--> <h4 class="fw-semibold">'.$icon_text.'</h4> <!--end::Title--> <!--begin::Content--> <span>'.$text.'.</span> <!--end::Content--> </div> <button type="button" class="position-absolute position-sm-relative m-2 m-sm-0 top-0 end-0 btn btn-icon ms-sm-auto" data-bs-dismiss="alert"> <i class="ki-duotone ki-cross fs-1 text-'.$type.'"><span class="path1"></span><span class="path2"></span></i> </button> </div> '; } public function notify($from, $to, $content, $item, $item_id) { $ins['from_id'] = $from; $ins['to_id'] = $to; $ins['content'] = $content; $ins['item'] = $item; $ins['item_id'] = $item_id; $ins['new'] = 1; $ins['reg_date'] = date(fdate); $this->create('notify', $ins); } //////////////////// END NOTIFICATION CRUD /////////////////////// ///////// TERMII API ////////////////// public function termii($method='', $endpoint='', $data=[]) { $curl = curl_init(); $post_data = json_encode($data); curl_setopt_array($curl, array( CURLOPT_URL => "https://v3.api.termii.com/api/".$endpoint, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $post_data, CURLOPT_HTTPHEADER => array( "Content-Type: application/json" ), )); $response = curl_exec($curl); curl_close($curl); return $response; } public function loop_email($email, $subject, $body, $attachments = []) { $apiKey = $this->read_field('name', 'loop_api_key', 'setting', 'value'); // Replace with your actual Loops API key $payload = [ "email" => $email, "transactionalId" => "cm7rzl46t02g6s3hq3ezmt15e", "addToAudience" => true, // Add user to Loops audience (optional) "dataVariables" => [ "subject" => $subject, "body" => $body ], "attachments" => $attachments ]; $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://app.loops.so/api/v1/transactional", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_HTTPHEADER => [ "Authorization: Bearer $apiKey", "Content-Type: application/json" ], ]); $response = curl_exec($curl); curl_close($curl); return $response; } //////////////////////////////END//////////////// //////////////////// RavePAY CRUD /////////////////////// public function rave_url($server = '') { if ($server == 'test') return 'https://api.flutterwave.com/v3/'; return 'https://api.flutterwave.com/v3/'; } public function rave_key($type = 'skey') { $sandbox = $this->read_field('name', 'sandbox', 'setting', 'value'); if ($sandbox == 'yes') { return $this->read_field('name', 'test_' . $type, 'setting', 'value'); } else { return $this->read_field('name', 'live_' . $type, 'setting', 'value'); } } public function rave_balance($data = 'NGN') { // create a new cURL resource $curl = curl_init(); // parameters $key = $this->rave_key('skey'); $api_link = 'https://api.flutterwave.com/v3/balances/' . $data; $chead = array(); $chead[] = 'Content-Type: application/json'; $chead[] = 'Authorization: Bearer ' . $key; // set URL and other appropriate options curl_setopt($curl, CURLOPT_URL, $api_link); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, $chead); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // grab URL and pass it to the browser $result = curl_exec($curl); // close cURL resource, and free up system resources curl_close($curl); return $result; } public function rave_bvn($bvn) { // create a new cURL resource $curl = curl_init(); // parameters $key = $this->rave_key('skey'); $api_link = 'https://api.flutterwave.com/v3/kyc/bvns/' . $bvn; $chead = array(); $chead[] = 'Content-Type: application/json'; $chead[] = 'Authorization: Bearer ' . $key; // set URL and other appropriate options curl_setopt($curl, CURLOPT_URL, $api_link); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, $chead); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // grab URL and pass it to the browser $result = curl_exec($curl); // close cURL resource, and free up system resources curl_close($curl); return $result; } public function rave_withdraw($data) { // create a new cURL resource $curl = curl_init(); // parameters $key = $this->rave_key('skey'); $api_link = 'https://api.flutterwave.com/v3/transfers/'; $chead = array(); $chead[] = 'Content-Type: application/json'; $chead[] = 'Authorization: Bearer ' . $key; // set URL and other appropriate options curl_setopt($curl, CURLOPT_URL, $api_link); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, $chead); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // grab URL and pass it to the browser $result = curl_exec($curl); // close cURL resource, and free up system resources curl_close($curl); return $result; } public function rave_inline($code = '', $redir = '', $customize = '', $amount = 0, $customer = '', $meta = '', $sub = '', $options = 'card,account,ussd', $curr = 'NGN') { $publicKey = $this->rave_key('pkey'); $txref = $code; $amount = $this->to_number($amount); return ' <script src="https://checkout.flutterwave.com/v3.js"></script> <script> function ravePay() { FlutterwaveCheckout({ public_key: "' . $publicKey . '", tx_ref: "' . $txref . '", amount: ' . round($amount, 2) . ', currency: "' . $curr . '", payment_options: "' . $options . '", redirect_url: "' . $redir . '", customer: ' . json_encode($customer) . ', meta: ' . json_encode($meta) . ', subaccounts: ' . json_encode($sub) . ', customizations: ' . json_encode($customize) . ', }); } </script> '; } public function rave_get($link, $server = '') { // create a new cURL resource $curl = curl_init(); $link = $this->rave_url($server) . $link; $secretKey = $this->rave_key('secret', $server); $chead = array(); $chead[] = 'Content-Type: application/json'; $chead[] = 'Authorization: Bearer ' . $secretKey; // set URL and other appropriate options curl_setopt($curl, CURLOPT_URL, $link); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, $chead); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // grab URL and pass it to the browser $result = curl_exec($curl); // close cURL resource, and free up system resources curl_close($curl); return $result; } public function filter_territory($limit='', $offset='', $territory='',$search='') { $db = db_connect(); $builder = $db->table('territory'); // build query $builder->orderBy('name', 'asc'); // $builder->where('state_id', 316); if(!empty($search)) { $builder->like('name', $search); } if(!empty($territory) && $territory != 'all') { $builder->like('state_id', $territory); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_service_request($limit = '', $offset = '', $log_id = '', $status = '', $service_type = '', $search = '') { $db = db_connect(); $builder = $db->table('fl_service_request'); // Get user role based on log_id $role = ''; // build query $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = strtolower($this->read_field('id', $role_id, 'access_role', 'name')); if($role != 'developer' && $role != 'administrator'){ $builder->where('user_id', $log_id); } // Order by most recent $builder->orderBy('id', 'desc'); // Apply search filter if (!empty($search)) { $builder->groupStart() ->like('service_type', $search) ->orLike('remarks', $search) ->groupEnd(); } // Filter by status if (!empty($status) && $status !== 'all') { $builder->where('status', $status); } // Filter by service type if (!empty($service_type) && $service_type !== 'all') { $builder->where('service_type', $service_type); } // Apply pagination if ($limit && $offset) { $query = $builder->get($limit, $offset); } elseif ($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } return $query->getResult(); $db->close(); } public function filter_area($limit='', $offset='', $state_id='',$search='') { $db = db_connect(); $builder = $db->table('city'); // build query $builder->orderBy('name', 'asc'); // $builder->where('state_id', 316); if(!empty($search)) { $builder->like('name', $search); } if(!empty($state_id) && $state_id != 'all') { $builder->like('state_id', $state_id); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function rave_save($user_id, $tnx_id, $item_id = '', $item = '') { $trans_id = 0; $status = ''; $resp = $this->rave_get('transactions/' . $tnx_id . '/verify', pay_server); $resp = json_decode($resp); if (!empty($resp->status) && $resp->status == 'success') { $message = $resp->message; $code = $resp->data->tx_ref; $tnx_id = $resp->data->id; $tnx_ref = $resp->data->flw_ref; $status = $resp->data->status; $ins['amount'] = $resp->data->amount; $ins['app_fee'] = $resp->data->app_fee; $ins['payment_type'] = $resp->data->payment_type; $ins['card'] = json_encode($resp->data->card); $ins['customer'] = json_encode($resp->data->customer); $ins['status'] = $status; $ins['message'] = $message; // check transaction if ($this->check('tnx_ref', $tnx_ref, 'transaction') > 0) { $trans_id = $this->read_field('tnx_ref', $tnx_ref, 'transaction', 'id'); $this->updates('tnx_ref', $tnx_ref, 'transaction', $ins); } else { if (!empty($user_id)) $ins['user_id'] = $user_id; $ins['code'] = $code; if (!empty($item_id)) $ins['item_id'] = $item_id; if (!empty($item)) $ins['item'] = json_encode($item); $ins['tnx_id'] = $tnx_id; $ins['tnx_ref'] = $tnx_ref; $ins['reg_date'] = date(fdate); $trans_id = $this->create('transaction', $ins); } } return (object) array('id' => $trans_id, 'status' => $status); } public function validate_account($acc_no, $bank_code) { // create a new cURL resource $curl = curl_init(); $key = $this->rave_key('skey'); // parameters $api_link = 'https://api.flutterwave.com/v3/accounts/resolve'; $curl_data = array('account_number' => $acc_no, 'account_bank' => $bank_code); $curl_data = json_encode($curl_data); $chead = array(); $chead[] = 'Content-Type: application/json'; $chead[] = 'Authorization: Bearer ' . $key; $chead[] = 'Content-Length: ' . strlen($curl_data); // set URL and other appropriate options curl_setopt($curl, CURLOPT_URL, $api_link); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, $chead); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // grab URL and pass it to the browser $result = curl_exec($curl); // close cURL resource, and free up system resources curl_close($curl); return $result; } //////////////////// END RavePAY API CRUD /////////////////////// /////////////////PAYZTACK API CRUD ////////////////////////////// public function paystack_url($server = ''){ // For Paystack, there's only one URL for both environments return 'https://api.paystack.co/'; } public function paystack_key($type = 'pkey'){ $sandbox = $this->read_field('name', 'sandbox', 'setting', 'value'); if ($sandbox == 'yes') { return $this->read_field('name', 'paystack_test_' . $type, 'setting', 'value'); } else { return $this->read_field('name', 'paystack_live_' . $type, 'setting', 'value'); } } public function paystack_balance(){ // Get the secret key $secretKey = $this->paystack_key('skey'); // Paystack has no direct API to fetch balance. However, this is an example of how to fetch transaction details. $api_link = 'https://api.paystack.co/balance'; // Replace with transaction reference $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_link); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer ' . $secretKey, 'Content-Type: application/json' ]); $response = curl_exec($ch); curl_close($ch); return $response; } public function paystack_bvn($bvn) { // Get the secret key $secretKey = $this->paystack_key('skey'); $api_link = 'https://api.paystack.co/kyc/bvns/' . $bvn; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_link); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer ' . $secretKey, 'Content-Type: application/json' ]); $response = curl_exec($ch); curl_close($ch); return $response; } public function paystack_withdraw($data) { // Get the secret key $secretKey = $this->paystack_key('skey'); $api_link = 'https://api.paystack.co/transfer'; // Create the headers $headers = [ 'Content-Type: application/json', 'Authorization: Bearer ' . $secretKey ]; // Initiate the cURL request $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_link); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // Execute the request and get the response $response = curl_exec($ch); curl_close($ch); return $response; } public function paystack_inline($code = '', $redir = '', $customize = '', $amount = 0, $customer = '', $meta = '', $sub = '', $options = 'card,account,ussd', $curr = 'NGN') { $publicKey = $this->paystack_key('pkey'); $txref = $code; $amount = $this->to_number($amount); return ' <script src="https://js.paystack.co/v1/inline.js"></script> <script> function payWithPaystack() { var handler = PaystackPop.setup({ key: "' . $publicKey . '", email: "' . $customer['email'] . '", // Customer email amount: ' . round($amount * 100) . ', // Amount in kobo (NGN: 100 kobo = 1 Naira) currency: "' . $curr . '", ref: "' . $txref . '", // Transaction reference callback: function(response) { // This callback will be called after a successful payment var reference = response.reference; // After successful payment, make an API call to charge and fund the wallet $.ajax({ url: "' . $redir . '", // The server-side URL where you handle funding the wallet type: "POST", data: { reference: reference, amount: ' . $amount . ', customer_email: "' . $customer['email'] . '", status: "success" }, success: function(response) { // Handle successful wallet fund $("#bb_ajax_msg2").html(response); window.location = "' . $redir . '?reference=" + reference; }, error: function() { $("#bb_ajax_msg2").html("An error occurred while processing your wallet funding."); } }); }, onClose: function() { // Handle when the payment modal is closed $("#bb_ajax_msg2").html("Transaction was canceled"); } }); handler.openIframe(); // Open the Paystack iframe } </script> '; } public function paystack_get($link, $server = '') { // Create a new cURL resource $curl = curl_init(); // Build the full URL $link = $this->paystack_url($server) . $link; // Get the secret key $secretKey = $this->paystack_key('skey'); // Set the headers $headers = [ 'Content-Type: application/json', 'Authorization: Bearer ' . $secretKey ]; // Set cURL options curl_setopt($curl, CURLOPT_URL, $link); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // Execute the request and get the response $response = curl_exec($curl); curl_close($curl); return $response; } public function paystack_save($user_id, $tnx_id, $item_id = '', $item = '') { $trans_id = 0; $status = ''; // Verify the transaction $resp = $this->paystack_get('transaction/verify/' . $tnx_id); $resp = json_decode($resp); if (!empty($resp->status) && $resp->status == 'success') { // Transaction was successful $message = $resp->message; $code = $resp->data->tx_ref; $tnx_id = $resp->data->id; $tnx_ref = $resp->data->flw_ref; $status = $resp->data->status; $ins['amount'] = $resp->data->amount; $ins['payment_type'] = $resp->data->payment_type; $ins['customer'] = json_encode($resp->data->customer); $ins['status'] = $status; $ins['message'] = $message; // Check if the transaction already exists if ($this->check('tnx_ref', $tnx_ref, 'transaction') > 0) { $trans_id = $this->read_field('tnx_ref', $tnx_ref, 'transaction', 'id'); $this->updates('tnx_ref', $tnx_ref, 'transaction', $ins); } else { if (!empty($user_id)) $ins['user_id'] = $user_id; $ins['code'] = $code; if (!empty($item_id)) $ins['item_id'] = $item_id; if (!empty($item)) $ins['item'] = json_encode($item); $ins['tnx_id'] = $tnx_id; $ins['tnx_ref'] = $tnx_ref; $ins['reg_date'] = date(fdate); $trans_id = $this->create('transaction', $ins); } } return (object) ['id' => $trans_id, 'status' => $status]; } /////////////////////END /////////////////////////////////////// //////////////////// FILE UPLOAD ////////////////// public function file_validate() { $validationRule = [ 'pics' => [ 'rules' => 'uploaded[pics]' . '|is_image[pics]' . '|mime_in[pics,image/jpg,image/jpeg,image/gif,image/png,image/webp]' . '|max_size[pics,100]', ], ]; if (!$this->validate($validationRule)) { return false; } else { return true; } } public function img_upload($path, $file, $width=0, $height=0, $ratio=true, $ration_by='width') { // file data $name = $file->getName(); $type = $file->getClientMimeType(); $filename = $file->getRandomName(); if(empty($width)) $width = 400; if(empty($height)) $height = 400; // if directory not exit if (!is_dir($path)) mkdir($path, 0755); $image = \Config\Services::image() ->withFile($file) ->resize($width, $height, $ratio, $ration_by) ->save($path.$filename); $resp_data['path'] = $path.$filename; $resp_data['name'] = $name; $resp_data['type'] = $type; return (object)$resp_data; } public function save_image($log_id, $path, $name='', $type='') { $reg_data['user_id'] = $log_id; $reg_data['path'] = $path; $reg_data['pics_small'] = $path; $reg_data['pics_square'] = $path; $reg_data['reg_date'] = date(fdate); return $this->create('file', $reg_data); } public function file_upload($path, $file, $width=0, $height=0, $ratio=true, $ration_by='width') { // file data $name = $file->getName(); $type = $file->getClientMimeType(); $filename = $file->getRandomName(); $size = $file->getSize(); $ext = $file->guessExtension(); // if directory not exit if (!is_dir($path)) mkdir($path, 0755); $file->move($path, $filename); $resp_data['path'] = $path.$filename; $resp_data['name'] = $name; $resp_data['type'] = $type; $resp_data['size'] = $size; $resp_data['ext'] = $ext; return (object) $resp_data; } public function save_file($log_id, $path, $ext='txt', $size=0) { $reg_data['user_id'] = $log_id; $reg_data['path'] = $path; $reg_data['ext'] = $ext; $reg_data['reg_date'] = date(fdate); return $this->create('file', $reg_data); } //////////////////// END FILE UPLOAD ////////////////// //////////////////// DATETIME /////////////////////// public function date_diff($now, $end, $type='days') { $now = new \DateTime($now); $end = new \DateTime($end); $date_left = $end->getTimestamp() - $now->getTimestamp(); if($type == 'seconds') { if($date_left <= 0){$date_left = 0;} } else if($type == 'minutes') { $date_left = $date_left / 60; if($date_left <= 0){$date_left = 0;} } else if($type == 'hours') { $date_left = $date_left / (60*60); if($date_left <= 0){$date_left = 0;} } else if($type == 'days') { $date_left = $date_left / (60*60*24); if($date_left <= 0){$date_left = 0;} } else { $date_left = $date_left / (60*60*24*365); if($date_left <= 0){$date_left = 0;} } return $date_left; } public function date_range1($firstDate, $col1, $secondDate, $col2,$col3, $val3, $table, $limit='', $offset=''){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function date_range($firstDate, $col1, $secondDate, $col2, $table, $limit='', $offset=''){ $db = db_connect(); $builder = $db->table($table); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function date_range_order($firstDate, $col1, $secondDate, $col2, $table, $orCol, $orVal, $limit='', $offset=''){ $db = db_connect(); $builder = $db->table($table); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy($orCol, $orVal); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function date_range1_order($firstDate, $col1, $secondDate, $col2, $col3, $val3, $table, $orCol, $orVal, $limit='', $offset=''){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy($orCol, $orVal); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function date_range2($firstDate, $col1, $secondDate, $col2, $col3, $val3, $col4, $val4, $table, $limit='', $offset=''){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where($col4, $val4); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function date_range3($firstDate, $col1, $secondDate, $col2, $col3, $val3, $col4, $val4, $col5, $val5, $table, $limit='', $offset=''){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where($col4, $val4); $builder->where($col5, $val5); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function date_check($firstDate, $col1, $secondDate, $col2, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); return $builder->countAllResults(); $db->close(); } public function date_group_check1($firstDate, $col1, $secondDate, $col2, $col3, $val3, $group, $table){ $db = db_connect(); $db->query("SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));"); $builder = $db->table($table); $builder->groupBy($group); $builder->where($col3, $val3); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); return $builder->countAllResults(); $db->close(); } public function date_check1($firstDate, $col1, $secondDate, $col2, $col3, $val3, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); return $builder->countAllResults(); $db->close(); } public function date_check2($firstDate, $col1, $secondDate, $col2, $col3, $val3, $col4, $val4, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where($col4, $val4); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); return $builder->countAllResults(); $db->close(); } public function date_check3($firstDate, $col1, $secondDate, $col2, $col3, $val3, $col4, $val4, $col5, $val5, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where($col4, $val4); $builder->where($col5, $val5); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); return $builder->countAllResults(); $db->close(); } public function date_check4($firstDate, $col1, $secondDate, $col2, $col3, $val3, $col4, $val4, $col5, $val5,$col6, $val6, $table){ $db = db_connect(); $builder = $db->table($table); $builder->where($col3, $val3); $builder->where($col4, $val4); $builder->where($col5, $val5); $builder->where($col6, $val6); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') >= '".$firstDate."'",NULL,FALSE); $builder->where("DATE_FORMAT(".$col1.",'%Y-%m-%d') <= '".$secondDate."'",NULL,FALSE); $builder->orderBy('id', 'DESC'); return $builder->countAllResults(); $db->close(); } //////////////////// END DATETIME /////////////////////// //////////////////// IMAGE DATA ////////////////// public function image($id, $size='small') { if($id) { if($size == 'small') { $path = $this->read_field('id', $id, 'file', 'pics_small'); } else if($size == 'big') { $path = $this->read_field('id', $id, 'file', 'path'); } else { $path = $this->read_field('id', $id, 'file', 'pics_square'); } } if(empty($path) || !file_exists($path)) { $path = 'assets/media/svg/avatars/blank.svg'; } return $path; } //////////////////// END ///////////////// //////////////////// IMAGE DATA ////////////////// public function file($id) { if($id) { $ext = $this->read_field('id', $id, 'file', 'ext'); $ext = str_replace('x', '', $ext); $path = 'assets/backend/images/docs/'.$ext.'-128.png'; } if(empty($path) || !file_exists($path)) { $path = 'assets/backend/images/docs/txt-128.png'; } return $path; } //////////////////// END ///////////////// //////////////////// SEND EMAIL ////////////////// public function send_email($to, $subject, $body, $bcc='') { $emailServ = \Config\Services::email(); $config['charset'] = 'iso-8859-1'; $config['mailType'] = 'html'; $config['wordWrap'] = true; $emailServ->initialize($config); $emailServ->setFrom(push_email, app_name); $emailServ->setTo($to); if(!empty($bcc)) $emailServ->setBCC($bcc); $emailServ->setSubject($subject); $temp['body'] = $body; $template = view('designs/email', $temp); $emailServ->setMessage($template); if($emailServ->send()) return true; return false; } public function send_email2($to, $subject, $body, $bcc = '') { // Load the email service $emailServ = \Config\Services::email(); // SMTP Configuration $config['protocol'] = 'smtp'; $config['SMTPHost'] = 'fuelyapa.com'; // Replace with your SMTP host $config['SMTPPort'] = 465; // Use 465 for SSL or 587 for TLS $config['SMTPUser'] = 'admin@fuelyapa.com'; // Your SMTP username $config['SMTPPass'] = '492R659OXap3'; // Your SMTP password $config['mailType'] = 'html'; // Email format $config['charset'] = 'utf-8'; // Character encoding $config['wordWrap'] = true; // Enable word wrapping // Initialize the email service with configuration $emailServ->initialize($config); // Set email sender $emailServ->setFrom(push_email, app_name); // Replace with a valid sender email and name $emailServ->setTo($to); // Recipient's email // Set BCC if provided if (!empty($bcc)) { $emailServ->setBCC($bcc); } // Set subject and message body $emailServ->setSubject($subject); // Use a template for the email body $temp['body'] = $body; $template = view('designs/email', $temp); // Ensure the template file exists $emailServ->setMessage($template); // Send the email and handle errors if ($emailServ->send()) { return true; } else { // Log error for debugging log_message('error', $emailServ->printDebugger(['headers', 'body'])); return false; } } //////////////////// END SEND EMAIL ////////////////// public function title() { return array( 'Mr', 'Mrs', 'Miss', 'Chief', 'Engineer', 'Doctor', 'Barrister', 'Pastor', 'Alhaji', 'Alhaja', 'Otunba', 'Junior', ); } public function to_number($text) { $number = preg_replace('/\s+/', '', $text); // remove all in between white spaces $number = str_replace(',', '', $number); // remove money format $number = floatval($number); return $number; } public function to_word(float $number) { $decimal = round($number - ($no = floor($number)), 2) * 100; $hundred = null; $digits_length = strlen($no); $i = 0; $str = array(); $words = array(0 => '', 1 => 'one', 2 => 'two', 3 => 'three', 4 => 'four', 5 => 'five', 6 => 'six', 7 => 'seven', 8 => 'eight', 9 => 'nine', 10 => 'ten', 11 => 'eleven', 12 => 'twelve', 13 => 'thirteen', 14 => 'fourteen', 15 => 'fifteen', 16 => 'sixteen', 17 => 'seventeen', 18 => 'eighteen', 19 => 'nineteen', 20 => 'twenty', 30 => 'thirty', 40 => 'forty', 50 => 'fifty', 60 => 'sixty', 70 => 'seventy', 80 => 'eighty', 90 => 'ninety'); $digits = array('', 'hundred', 'thousand', 'million', 'billion'); while( $i < $digits_length ) { $divider = ($i == 2) ? 10 : 100; $number = floor($no % $divider); $no = floor($no / $divider); $i += $divider == 10 ? 1 : 2; if ($number) { $plural = (($counter = count($str)) && $number > 9) ? 's' : null; $hundred = ($counter == 1 && $str[0]) ? ' and ' : null; $str [] = ($number < 21) ? $words[$number].' '. $digits[$counter]. $plural.' '.$hundred:$words[floor($number / 10) * 10].' '.$words[$number % 10]. ' '.$digits[$counter].$plural.' '.$hundred; } else $str[] = null; } $naira = implode('', array_reverse($str)); $kobo = ($decimal > 0) ? " " . ($words[$decimal / 10] . " " . $words[$decimal % 10]) . ' kobo' : ''; return ($naira ? $naira . 'naira' : '') . $kobo; } ///Name to Image public function image_name($fullname){ $str_cou = str_word_count($fullname); if($str_cou == 1){ $wors = substr($fullname, 0, 1); } else { $wors = ''; $wor = explode(' ', $fullname); $i = 0; foreach($wor as $words){ if($i < 2){$wors .= substr($words, 0, 1);} $i++; } } return $wors; } /// filter user public function filter_user($limit='', $offset='', $log_id, $state_id='', $status='', $search='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); if(!empty($state_id)) $builder->where('state_id', $state_id); if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('phone', $search) ->groupEnd(); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //////////////////////////filter admin////////////////////////////////// public function filter_admin($limit='', $offset='', $log_id, $state_id='', $status='', $search='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); $builder->where('role_id', 2); if(!empty($status)){ if($status != 'all') { if($status == 'activated')$builder->where('activate', 1); if($status == 'pending')$builder->where('activate', 0); } } if(!empty($search)) { $builder->like('fullname', $search); $builder->orLike('email', $search); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //////////////////////////filter support////////////////////////////////// public function filter_support($limit='', $offset='', $log_id, $status='', $search='') { $db = db_connect(); $builder = $db->table('support'); // build query $builder->orderBy('id', 'DESC'); if(!empty($status)){ if($status != 'all') { $builder->where('status', $status); } } if(!empty($search)) { $builder->like('title', $search); $builder->orLike('details', $search); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_comment($limit='', $offset='', $log_id, $support, $search='') { $db = db_connect(); $builder = $db->table('support_comment'); // build query $builder->orderBy('id', 'DESC'); $builder->where('support_id', $support); if(!empty($search)) { $builder->like('title', $search); $builder->orLike('details', $search); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //// filter wallet public function filter_wallet($limit='', $offset='', $user_id, $type='',$search='', $start_date='', $end_date) { $db = db_connect(); $builder = $db->table('wallet'); // build query $builder->orderBy('id', 'DESC'); // build query $role_id = $this->read_field('id', $user_id, 'user', 'role_id'); $role = strtolower($this->read_field('id', $role_id, 'access_role', 'name')); if($role != 'developer' && $role != 'administrator'){ $builder->where('user_id', $user_id); } // filter if(!empty($search)) { $builder->like('amount', $search); } if(!empty($type) && $type != 'all') { $builder->like('type', $type); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //// filter wallet public function filter_stock($limit='', $offset='', $user_id, $type='',$search='', $start_date='', $end_date) { $db = db_connect(); $builder = $db->table('stock'); // build query $builder->orderBy('id', 'DESC'); // build query $role_id = $this->read_field('id', $user_id, 'user', 'role_id'); $role = strtolower($this->read_field('id', $role_id, 'access_role', 'name')); if($role != 'developer' && $role != 'administrator'){ $builder->where('merchant_id', $user_id); } // filter if(!empty($search)) { $builder->like('amount', $search); } if(!empty($type) && $type != 'all') { $builder->like('type', $type); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //////////////////////////filter pump////////////////////////////////// public function filter_pump($limit='', $offset='', $log_id, $merchant_id='', $search='') { $db = db_connect(); $builder = $db->table('pump'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role != 'Administrator'){ $builder->where('merchant_id', $log_id); } if(!empty($merchant_id) && $merchant_id != 'all') $builder->where('merchant_id', $merchant_id); if(!empty($search)) { $builder->like('name', $search); } // build query $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_trade($limit='', $offset='', $log_id, $merchant_id='', $search='') { $db = db_connect(); $builder = $db->table('trade'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role != 'Administrator'){ $builder->where('seller_id', $log_id); } if(!empty($merchant_id) && $merchant_id != 'all') $builder->where('merchant_id', $merchant_id); // build query $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_tank($limit='', $offset='', $log_id, $merchant_id='', $search='') { $db = db_connect(); $builder = $db->table('tank'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role != 'Administrator'){ $builder->where('merchant_id', $log_id); } if(!empty($merchant_id) && $merchant_id != 'all') $builder->where('merchant_id', $merchant_id); if(!empty($search)) { $builder->like('name', $search); } // build query $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //////////////////////////filter branch////////////////////////////////// public function filter_branch($limit='', $offset='', $log_id, $partner='', $search='') { $db = db_connect(); $builder = $db->table('branch'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role != 'Administrator'){ $builder->where('partner_id', $log_id); } if(!empty($partner) && $partner != 'all') $builder->where('partner_id', $partner); if(!empty($search)) { $builder->like('name', $search); $builder->orLike('address', $search); } // build query $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //////////////////////////filter admin////////////////////////////////// public function filter_customers($limit='', $offset='', $log_id, $state_id='', $status='', $search='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); $builder->where('role_id', 4); if(!empty($status)){ if($status != 'all') { if($status == 'activated')$builder->where('activate', 1); if($status == 'pending')$builder->where('activate', 0); } } if(!empty($search)) { $builder->like('fullname', $search); $builder->orLike('email', $search); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //////////////////////////filter partner////////////////////////////////// public function filter_merchant($limit='', $offset='', $log_id, $state_id='', $status='', $merchant_status='', $search='', $lga_id='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); //$builder->where('role_id', 3); $builder->where('is_merchant', 1); if($status != 'all') { $builder->where('activate', $status); } if($merchant_status != 'all') { $builder->where('merchant_status', $merchant_status); } if($state_id != 'all' && $state_id != 0) { $builder->where('state_id', $state_id); } if($lga_id != 'all' && $lga_id != 0) { $builder->where('lga_id', $lga_id); } if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('company_name', $search) ->orLike('address', $search) ->orLike('phone', $search) ->orLike('user_no', $search) ->groupEnd(); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_corporate($limit='', $offset='', $log_id, $state_id='', $status='', $merchant_status='', $search='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); //$builder->where('role_id', 3); $builder->where('is_corporate', 1); if($status != 'all') { $builder->where('activate', $status); } if($merchant_status != 'all') { $builder->where('merchant_status', $merchant_status); } if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('phone', $search) ->groupEnd(); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_reservation($limit='', $offset='', $log_id, $merchant_id='', $search='', $start_date='', $end_date='') { $db = db_connect(); $builder = $db->table('reservation'); // build query $builder->orderBy('id', 'DESC'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role != 'Administrator'){ if($role == 'Merchant'){ $builder->where('merchant_id', $log_id); } else { $builder->where('user_id', $log_id); } } if(!empty($search)) { $builder->groupStart() ->like('liter', $search) ->groupEnd(); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_staff($limit='', $offset='', $log_id, $state_id='', $status='', $merchant_status='', $search='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); //$builder->where('role_id', 3); $builder->where('is_staff', 1); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = strtolower($this->read_field('id', $role_id, 'access_role', 'name')); if($role != 'developer' && $role != 'administrator'){ $builder->where('corporate_id', $log_id); } if($status != 'all') { $builder->where('activate', $status); } if($merchant_status != 'all') { $builder->where('merchant_status', $merchant_status); } if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('phone', $search) ->groupEnd(); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_manager($limit='', $offset='', $log_id, $state_id='', $territory='', $search='') { $db = db_connect(); $builder = $db->table('user'); $role_id = $this->read_field('name', 'Area Manager', 'access_role', 'id'); // build query $builder->orderBy('id', 'DESC'); $builder->where('role_id', $role_id); if($state_id != 'all' && !empty($state_id) ) { $builder->where('state_id', $state_id); } if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('phone', $search) ->orLike('user_no', $search) ->groupEnd(); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_executive($limit='', $offset='', $log_id, $state_id='', $territory='', $search='') { $db = db_connect(); $builder = $db->table('user'); $role_id = $this->read_field('name', 'Sales Executive', 'access_role', 'id'); // build query $builder->orderBy('id', 'DESC'); $builder->where('role_id', $role_id); if($state_id != 'all' && !empty($state_id) ) { $builder->where('state_id', $state_id); } if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('phone', $search) ->orLike('user_no', $search) ->orLike('lga_id', $search) ->orLike('area', $search) ->groupEnd(); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_tour($limit = '', $offset = '', $log_id = '', $status = '', $search = '') { $db = db_connect(); $builder = $db->table('tours'); if (!empty($search)) { $builder->like('title', $search); } if (!empty($status)) { $builder->where('status', $status); // if you have a status field } $builder->orderBy('reg_date', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_attendant($limit='', $offset='', $log_id, $state_id='', $status='', $merchant_status='', $search='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); //$builder->where('role_id', 3); $builder->where('is_attendant', 1); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = strtolower($this->read_field('id', $role_id, 'access_role', 'name')); if($role != 'developer' && $role != 'administrator'){ $builder->where('merchant_id', $log_id); } if($status != 'all') { $builder->where('activate', $status); } if($merchant_status != 'all') { $builder->where('merchant_status', $merchant_status); } if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('phone', $search) ->groupEnd(); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_quiz($limit='', $offset='', $log_id, $search='') { $db = db_connect(); $builder = $db->table('quiz'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role == 'Instructor'){ $builder->where('instructor', $log_id); } if(!empty($search)) { $builder->like('name', $search); $builder->orLike('instruction', $search); } // build query $builder->orderBy('id', 'DESC'); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// timspan public function timespan($datetime) { $difference = time() - $datetime; $periods = array("second", "minute", "hour", "day", "week", "month", "year", "decade"); $lengths = array("60","60","24","7","4.35","12","10"); if ($difference > 0) { $ending = 'ago'; } else { $difference = -$difference; $ending = 'to go'; } for($j = 0; $difference >= $lengths[$j]; $j++) { $difference /= $lengths[$j]; } $difference = round($difference); if($difference != 1) { $period = strtolower($periods[$j].'s'); } else { $period = strtolower($periods[$j]); } return "$difference $period $ending"; } //////// Location Distance public function getDistance($addressFrom, $addressTo, $unit = ''){ // Google API key $apiKey = 'AIzaSyAx0GVgtUc8BYdE7Vd4ijUW2n0786pwCSo'; // Change address format $formattedAddrFrom = str_replace(' ', '+', $addressFrom); $formattedAddrTo = str_replace(' ', '+', $addressTo); // Geocoding API request with start address $geocodeFrom = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.$formattedAddrFrom.'&sensor=false&key='.$apiKey); $outputFrom = json_decode($geocodeFrom); // Geocoding API request with end address $geocodeTo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.$formattedAddrTo.'&sensor=false&key='.$apiKey); $outputTo = json_decode($geocodeTo); if(!empty($outputTo->error_message)){ return $outputTo->error_message; } if(!empty($outputFrom->error_message) || !empty($outputTo->error_message)){ return 0; } // Get latitude and longitude from the geodata if(!empty($outputFrom->results[0]) && !empty($outputTo->results[0])){ $latitudeFrom = $outputFrom->results[0]->geometry->location->lat; $longitudeFrom = $outputFrom->results[0]->geometry->location->lng; $latitudeTo = $outputTo->results[0]->geometry->location->lat; $longitudeTo = $outputTo->results[0]->geometry->location->lng; // Calculate distance between latitude and longitude $theta = $longitudeFrom - $longitudeTo; $dist = sin(deg2rad($latitudeFrom)) * sin(deg2rad($latitudeTo)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($latitudeTo)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; // Convert unit and return distance $unit = strtoupper($unit); if($unit == "K") { return round($miles * 1.609344, 2); } elseif($unit == "M") { return round($miles * 1609.344, 2); } else { return round($miles, 2); } } else { // return 0 if distance not found return 0; } } public function google_translate($text = '', $src = '', $target = '') { // create a new cURL resource $curl = curl_init(); // parameters // $key = $this->rave_key('skey'); $apiKey = 'AIzaSyAFtOhTbXBh7kfjokt9agzlE8TotA2Al3w'; $api_link = 'https://www.googleapis.com/language/translate/v2?key=' . $apiKey . '&q=' . rawurlencode($text) . '&source=' . $src . '&target=' . $target; $chead = array(); $chead[] = 'Content-Type: application/json'; // $chead[] = 'Authorization: Bearer '.$key; // set URL and other appropriate options curl_setopt($curl, CURLOPT_URL, $api_link); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, $chead); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // grab URL and pass it to the browser $result = curl_exec($curl); // close cURL resource, and free up system resources curl_close($curl); return $result; } ////// store activities public function activity($item, $item_id, $action, $user_id='') { $u = $user_id; if(empty($u))$u = session()->get('hdt_id'); $ins['item'] = $item; $ins['item_id'] = $item_id; $ins['action'] = $action; $ins['user_id'] = $u; $ins['reg_date'] = date(fdate); return $this->create('activity', $ins); } //// filter activities public function filter_activity($limit='', $offset='', $user_id, $search='', $start_date='', $end_date) { $db = db_connect(); $builder = $db->table('activity'); // build query $builder->orderBy('id', 'DESC'); $role_id = $this->read_field('id', $user_id, 'user', 'role_id'); $role = strtolower($this->read_field('id', $role_id, 'access_role', 'name')); if($role != 'developer' && $role != 'administrator'){ $builder->where('user_id', $user_id); } if(!empty($search)) { $builder->like('action', $search); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// filter product public function filter_product($limit='', $offset='', $log_id='', $search='') { $db = db_connect(); $builder = $db->table('product'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role == 'Instructor'){ $builder->where('user_id', $log_id); } // build query $builder->orderBy('id', 'DESC'); if(!empty($search)) { $builder->like('name', $search); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// filter order public function filter_order($limit='', $offset='', $log_id='', $status='', $merchant_id='',$state='', $lga='', $search='', $start_date='', $end_date='', $type='', $fuel_type='') { $db = db_connect(); $builder = $db->table('order'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role == 'Merchant'){ $builder->where('merchant_id', $log_id); } else { if(!empty($merchant_id) && $merchant_id != 'all'){ $builder->where('merchant_id', $merchant_id); } } // build query $builder->orderBy('id', 'DESC'); $builder->where('order_type', $type); if(!empty($search)) { $builder->like('code', $search); } if(!empty($fuel_type) && $fuel_type != 'all') { $builder->where('fuel_type', $fuel_type); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// filter order public function filter_invoices($limit='', $offset='', $log_id='', $status='', $search='', $start_date='', $end_date='') { $db = db_connect(); $builder = $db->table('invoices'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role != 'Administrator'){ $builder->where('user_id', $log_id); } // build query $builder->orderBy('id', 'DESC'); if(!empty($search)) { $builder->like('invoice_no', $search); } if($status != 'all') { $builder->like('status', $status); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_transaction($limit='', $offset='', $log_id='', $status='', $merchant_id='',$state='', $lga='', $search='', $start_date='', $end_date='') { $db = db_connect(); $builder = $db->table('order'); if(!empty($log_id) && $log_id != 'all'){ $builder->where('user_id', $log_id); } if(!empty($merchant_id) && $merchant_id != 'all'){ $builder->where('merchant_id', $merchant_id); } // build query $builder->orderBy('id', 'DESC'); if(!empty($search)) { $builder->like('code', $search); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_liter($start_date='', $end_date='', $merchant_id='', $state_id='') { $db = db_connect(); $builder = $db->table('order'); $builder->orderBy('id', 'DESC'); if(!empty($merchant_id) && $merchant_id != 'all'){ $builder->where('merchant_id', $merchant_id); } if(!empty($state_id) && $state_id != 'all'){ $builder->where('state_id', $state_id); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } $query = $builder->get(); // return query return $query->getResult(); $db->close(); } public function filter_notification($limit='', $offset='', $user_id, $search='', $start_date='', $end_date='') { $db = db_connect(); $builder = $db->table('notify'); // build query $builder->orderBy('id', 'DESC'); $role_id = $this->read_field('id', $user_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role !='Administrator'){ $builder->where("from_id", $user_id); $builder->orWhere("to_id", $user_id); } if(!empty($search)) { $builder->like('content', $search); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_referral($limit='', $offset='', $user_id, $search='', $referral_id='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); $role_id = $this->read_field('id', $user_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); $builder->where('referral_id >', 0); if($role != 'Developer' && $role !='Administrator'){ $builder->where("referral_id", $user_id); } if(!empty($search)) { $builder->like('fullname', $search); } if(!empty($referral_id) && $referral_id != 'all'){ $builder->where("referral_id", $referral_id); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// filter order public function filter_voucher($limit='', $offset='', $log_id, $status='', $search='', $start_date='', $end_date='', $type='') { $db = db_connect(); $builder = $db->table('voucher'); $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); if($role != 'Developer' && $role != 'Administrator'){ if($role == 'Staff' || $role == 'Driver'){ $builder->where('user_id', $log_id); $builder->orWhere("assigned_id", $log_id); } else{ $builder->where('user_id', $log_id); } } // $builder->where('order_type', $type); // build query $builder->orderBy('id', 'DESC'); if($status != 'all') { $builder->like('status', $status); } if(!empty($search)) { $builder->like('code', $search); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_flight($limit='', $offset='', $log_id='', $status= '', $search='') { $db = db_connect(); $builder = $db->table('flight_request'); // build query $builder->orderBy('id', 'desc'); // $builder->where('type', $type); if(!empty($search)) { $builder->like('from_city', $search); $builder->orLike('to_city', $search); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } public function filter_hotel($limit='', $offset='', $log_id='', $status= '', $search='') { $db = db_connect(); $builder = $db->table('hotel_request'); // build query $builder->orderBy('id', 'desc'); // $builder->where('type', $type); if(!empty($search)) { $builder->like('city', $search); $builder->orLike('country', $search); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //Filter Announements public function filter_announcement($limit='', $offset='', $user_id='', $search='', $start_date='', $end_date='') { $db = db_connect(); $builder = $db->table('announcement'); // build query $builder->orderBy('id', 'DESC'); if(!empty($search)) { $builder->like('title', $search); $builder->orLike('content', $search); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// filter customers public function filter_customer($limit='', $offset='', $log_id='', $state_id='', $status='', $search='', $start_date='', $end_date='') { $db = db_connect(); $builder = $db->table('user'); // build query $builder->orderBy('id', 'DESC'); $builder->where('is_member', 1); // $builder->where('role_id', 4); if(!empty($search)) { $builder->groupStart() ->like('fullname', $search) ->orLike('email', $search) ->orLike('phone', $search) ->orLike('address', $search) ->groupEnd(); } if(!empty($start_date) && !empty($end_date)){ $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') >= '".$start_date."'",NULL,FALSE); $builder->where("DATE_FORMAT(reg_date,'%Y-%m-%d') <= '".$end_date."'",NULL,FALSE); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// filter premium public function filter_premium($limit='', $offset='', $log_id='', $search='') { // get user type $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); $db = db_connect(); $builder = $db->table('premium'); // build query $builder->orderBy('id', 'DESC'); $builder->select('premium.*, type.name AS policy, user.company AS company, pricing.name AS product, car.name AS car, car_model.name AS model') ->join('type', 'type.id = premium.policy_id') ->join('user', 'user.id = premium.partner_id') ->join('pricing', 'pricing.id = premium.pricing_id') ->join('car', 'car.id = premium.car_id') ->join('car_model', 'car_model.id = premium.model_id'); if(!empty($search)) { $builder->like('code', trim($search)); $builder->orLike('company', trim($search)); // $builder->orLike('name', trim($search)); } if($role == 'Customer') $builder->where('user_id', $log_id); if($role == 'Partner') $builder->where('partner_id', $log_id); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /////////////////// API CRUD ///////////////////////// public function api($method='get', $endpoint, $param='') { $curl = curl_init(); $link = site_url('api/').$endpoint; if($method == 'get') { if(!empty($param)) $link .= '?'.$param; } $key = getenv('api_key'); $chead = array(); $chead[] = 'Content-Type: application/json'; $chead[] = 'Authorization: Bearer '.$key; curl_setopt($curl, CURLOPT_URL, $link); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_HTTPHEADER, $chead); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); if($method == 'post') { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($param)); } if($method == 'delete') { curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($param)); } curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); $result = curl_exec($curl); curl_close($curl); return $result; } /// filter payments public function filter_payment($limit='', $offset='', $log_id='', $search='') { // get user type $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); $db = db_connect(); $builder = $db->table('payment'); // build query $builder->orderBy('id', 'DESC'); if($role == 'Instructor'){ $builder->where('instructor_id', $log_id); } if(!empty($search)) { $builder->like('item', trim($search)); } // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } /// filter claim public function filter_claim($limit='', $offset='', $log_id='', $search='') { // get user type $role_id = $this->read_field('id', $log_id, 'user', 'role_id'); $role = $this->read_field('id', $role_id, 'access_role', 'name'); $db = db_connect(); $builder = $db->table('claim'); // build query $builder->orderBy('id', 'DESC'); $builder->select('claim.*, premium.partner_id, premium.policy_id, premium.code, premium.amount') ->join('premium', 'premium.id = claim.premium_id'); if(!empty($search)) { // $builder->like('tnx_ref', trim($search)); } if($role == 'Customer') $builder->where('claim.user_id', $log_id); // limit query if($limit && $offset) { $query = $builder->get($limit, $offset); } else if($limit) { $query = $builder->get($limit); } else { $query = $builder->get(); } // return query return $query->getResult(); $db->close(); } //////////////////// MODULE /////////////////////// public function module($role, $module, $type) { $result = 0; $mod_id = $this->read_field('link', $module, 'access_module', 'id'); $crud = $this->read_field('role_id', $role, 'access', 'crud'); if($mod_id) { if(!empty($crud)) { $crud = json_decode($crud); foreach($crud as $cr) { $cr = explode('.', $cr); if($mod_id == $cr[0]) { if($type == 'create'){$result = $cr[1];} if($type == 'read'){$result = $cr[2];} if($type == 'update'){$result = $cr[3];} if($type == 'delete'){$result = $cr[4];} break; } } } } return $result; } public function mod_read($role, $module) { $rs = $this->module($role, $module, 'read'); return $rs; } //////////////////// END MODULE /////////////////////// public function generateRandomCode($length = 9) { // Generate random bytes and convert to hexadecimal string $bytes = random_bytes($length); $code = bin2hex($bytes); // Return a substring of the desired length return strtoupper(substr($code, 0, $length)); } //Qr code/// public function qrcode($data='', $dirs=''){ /* Data */ $hex_data = bin2hex($data); $save_name = $hex_data . '.png'; /* QR Code File Directory Initialize */ $dir = $dirs; if(empty($dirs))$dir = 'assets/images/qr/profile/'; if (! file_exists($dir)) { mkdir($dir, 0775, true); } /* QR Configuration */ $config['cacheable'] = true; $config['imagedir'] = $dir; $config['quality'] = true; $config['size'] = '1024'; $config['black'] = [255, 255, 255]; $config['white'] = [255, 255, 255]; $this->ciqrcode->initialize($config); /* QR Data */ $params['data'] = $data; $params['level'] = 'L'; $params['size'] = 10; $params['savename'] = FCPATH . $config['imagedir'] . $save_name; $this->ciqrcode->generate($params); /* Return Data */ return [ 'content' => $data, 'file' => $dir . $save_name, ]; } public function convertText($html) { // Check if the input is empty if (empty($html)) { return ''; } // Step 1: Decode HTML entities (if any) $text = html_entity_decode($html, ENT_QUOTES | ENT_HTML5, 'UTF-8'); // Step 2: Strip all HTML tags $text = strip_tags($text); // Step 3: Replace non-breaking spaces (\u00a0) with regular spaces $text = str_replace("\u00a0", " ", $text); // Unicode for non-breaking space // Step 4: Remove all non-alphanumeric characters (letters and numbers only) // This regex will remove everything except letters (a-z, A-Z) and numbers (0-9) $text = preg_replace('/[^a-zA-Z0-9\s]/', '', $text); // Step 5: Remove extra spaces and trim the string $text = preg_replace('/\s+/', ' ', $text); // Replace multiple spaces with one space $text = trim($text); // Trim leading and trailing spaces return $text; } public function generate_unique() { // Generate a random UUID return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff), // 8 characters mt_rand(0, 0xffff), // 4 characters mt_rand(0, 0x0fff) | 0x4000, // 4 characters (UUID version 4) mt_rand(0, 0x3fff) | 0x8000, // 4 characters (UUID variant 1) mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff) // 12 characters ); } public function get_city($state_id='', $city_id=''){ $territory = $this->read_single('state_id', $state_id, 'territory'); if (!empty($territory)) { foreach ($territory as $t) { $lgas = json_decode($t->areas, true); // Decode JSON to an associative array // echo $lgas; // Check if city_id exists in the lga array if (isset($lgas[$city_id])) { return $t->name; // Return the territory name } } } } }
Upload File
Create Folder