|
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 : /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);
}
}