table = 'infos_ilink_transaction'; // Set orderable column fields $this->column_order = array('id_transaction', 'operation_fr', 'numero_carte', 'montant_net', 'montant_net_final_country', 'part_reseau_payeur_final_country', 'status_reseau_payeur','final_currency', 'pays_init', 'pays_final', 'frais', 'taxe', 'commission_banque', 'commission_hyp', 'commission_sup', 'commission_ag', 'agent', null, null,'date'); // Set searchable column fields $this->column_search = array('id_transaction', 'operation_fr', 'numero_carte', 'montant_net', 'montant_net_final_country', 'part_reseau_payeur_final_country', 'status_reseau_payeur','final_currency', 'pays_init', 'pays_final', 'frais', 'taxe', 'commission_banque', 'commission_hyp', 'commission_sup', 'commission_ag', 'agent','date'); // Set default order $this->order = array('date' => 'desc'); } /* * Fetch members data from the database * @param $_POST filter data based on the posted parameters */ public function getRows($postData) { $this->_get_datatables_query($postData); if ($postData['length'] != -1) { $this->db->limit($postData['length'], $postData['start']); } $query = $this->db->get(); return $query->result(); } /* * Count all records */ public function countAll($postData) { $this->db->from($this->table); $this->db->where('network_emetteur', $postData['id_network']); return $this->db->count_all_results(); } /* * Count records based on the filter params * @param $_POST filter data based on the posted parameters */ public function countFiltered($postData) { $this->_get_datatables_query($postData); $query = $this->db->get(); return $query->num_rows(); } /* * Perform the SQL queries needed for an server-side processing requested * @param $_POST filter data based on the posted parameters */ private function _get_datatables_query($postData) { $this->db->from($this->table); $this->db->where('network_emetteur', $postData['id_network']); if (strlen($postData['startDate']) > 0 && strlen($postData['endDate']) > 0) { $this->db->where('date >=', date('Y-m-d h:i:s', strtotime($postData['startDate']))); $this->db->where('date <=', date('Y-m-d h:i:s', strtotime($postData['endDate']))); } $i = 0; // loop searchable columns foreach ($this->column_search as $item) { // if datatable send POST for search if ($postData['search']['value']) { // first loop if ($i === 0) { // open bracket $this->db->group_start(); $this->db->like($item, $postData['search']['value']); } else { $this->db->or_like($item, $postData['search']['value']); } // last loop if (count($this->column_search) - 1 == $i) { // close bracket $this->db->group_end(); } } $i++; } if (isset($postData['order'])) { $this->db->order_by($this->column_order[$postData['order']['0']['column']], $postData['order']['0']['dir']); } else if (isset($this->order)) { $order = $this->order; $this->db->order_by(key($order), $order[key($order)]); } } }