Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /proc/self/root/var/www/laciasmara.com/public_html/shop/application/controllers/admin/ |
Upload File : |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Wishlist extends Admin_Controller { function __construct() { parent::__construct(); $this->load->model('wishlist_m'); } //this is to list all wishlist public function index() { //fetch all wishlist $this->db->distinct(); $this->db->select('id_wishlist, customer_id, product_id')->from('wishlist'); $this->db->order_by('id_wishlist', 'DESC'); // Order by id_wishlist in descending order $this->data['wishlists'] = $this->db->get()->result(); //load view $this->data['subview'] = 'admin/wishlist/index'; $this->load->view('admin/templates/header', $this->data_header); $this->load->view('admin/_layout_main', $this->data); $this->load->view('admin/templates/footer'); } public function manage() { $data['userdata'] = $this->session->userdata(); $data['title'] = 'Daftar Wishlist | Laciasmara'; $data['wishlists'] = $this->wishlist_m->get_all_wishlists(); $this->load->view('admin_new/layouts/header', $data); $this->load->view('admin_new/wishlists/manage_wishlists'); $this->load->view('admin_new/layouts/footer'); } public function get_wishlists() { $sort = $this->input->get('sort', true); $dateFilter = $this->input->get('date_filter', true); $startDate = $this->input->get('start_date', true); $endDate = $this->input->get('end_date', true); $page = (int) ($this->input->get('page', true) ?? 1); $limit = (int) ($this->input->get('limit', true) ?? 10); $offset = ($page - 1) * $limit; $searchTerm = $this->input->get('search', true); // Query utama $this->db->select('w.*, p.title as product_title, c.name as customer_name, c.email as customer_email, IFNULL(c.shipping_phone, "-") as customer_phone'); $this->db->from('wishlists w'); $this->db->join('products p', 'p.id_products = w.product_id', 'left'); $this->db->join('customers c', 'c.id_customers = w.customer_id', 'left'); // Filter berdasarkan tanggal if ($dateFilter) { switch ($dateFilter) { case 'today': $this->db->where('DATE(w.created_at) = CURDATE()'); break; case 'yesterday': $this->db->where('DATE(w.created_at) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)'); break; case 'last7days': $this->db->where('w.created_at >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)'); break; case 'last30days': $this->db->where('w.created_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)'); break; case 'thisMonth': $this->db->where('MONTH(w.created_at) = MONTH(CURDATE()) AND YEAR(w.created_at) = YEAR(CURDATE())'); break; case 'thisYear': $this->db->where('YEAR(w.created_at) = YEAR(CURDATE())'); break; case 'custom': if (!empty($startDate) && !empty($endDate)) { $this->db->where('w.created_at >=', $startDate); $this->db->where('w.created_at <=', $endDate); } break; } } // Filter berdasarkan tanggal if ($dateFilter == 'custom' && !empty($startDate) && !empty($endDate)) { $this->db->where('w.created_at >=', $startDate); $this->db->where('w.created_at <=', $endDate); } // Filter berdasarkan pencarian if (!empty($searchTerm)) { $this->db->group_start(); $this->db->like('p.title', $searchTerm); $this->db->or_like('c.name', $searchTerm); $this->db->or_like('c.email', $searchTerm); $this->db->or_like('c.shipping_phone', $searchTerm); $this->db->or_like('c.phone', $searchTerm); $this->db->or_like('w.variant', $searchTerm); $this->db->group_end(); } // Menghitung total data $totalRecords = $this->db->count_all_results('', false); // Sorting switch ($sort) { case 'paling_baru': $this->db->order_by('w.created_at', 'DESC'); break; case 'paling_lama': $this->db->order_by('w.created_at', 'ASC'); break; default: $this->db->order_by('w.created_at', 'DESC'); // Default sorting } // Pagination $this->db->limit($limit, $offset); $query = $this->db->get(); $wishlists = $query->result(); // Hasil akhir $pagination = [ 'total_records' => $totalRecords, 'total_pages' => ceil($totalRecords / $limit), 'current_page' => $page, 'limit' => $limit ]; foreach ($wishlists as $wishlist) { $wishlist->_pagination = $pagination; } echo json_encode($wishlists); } }