Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. <?php
  2. defined('BASEPATH') or exit('No direct script access allowed');
  3. class Myorder extends MY_Controller {
  4.     private $id;
  5.     public function __construct() {
  6.         parent::__construct();
  7.         $is_login = $this->session->userdata('is_login');
  8.         $this->id = $this->session->userdata('id');
  9.         if (!$is_login) {   // Jika ternyata belum ada session
  10.             redirect(base_url());
  11.             return;
  12.         }
  13.     }
  14.  
  15.     public function index(){
  16.         $data['title']      = 'Daftar Order';
  17.         $data['content']    = $this->myorder->where('id_user', $this->id)   // Ambil list orders dari user ini
  18.             ->orderBy('date', 'DESC')                   // Urutkan dari data terbaru
  19.             ->get();
  20.         $data['page']       = 'pages/myorder/index';
  21.  
  22.         $this->view($data);
  23.     }
  24.  
  25.     /**
  26.      * Untuk melihat detail dari suatu order
  27.      */
  28.     public function detail($invoice)
  29.     {
  30.         $data['order']  = $this->myorder->where('invoice', $invoice)->first();
  31.  
  32.         if (!$data['order']) {
  33.             $this->session->set_flashdata('warning', 'Data tidak ditemukan');
  34.             redirect(base_url('myorder'));
  35.         }
  36.  
  37.         $this->myorder->table   = 'order_detail';
  38.         $data['order_detail']   = $this->myorder->select([
  39.             'order_detail.id_orders', 'order_detail.id_product', 'order_detail.qty', 'order_detail.subtotal', 'product.title', 'product.image', 'product.price'
  40.         ])
  41.             ->join('product')
  42.             ->where('order_detail.id_orders', $data['order']->id)
  43.             ->get();
  44.  
  45.         if ($data['order']->status !== 'waiting') {
  46.             $this->myorder->table   = 'orders_confirm';
  47.             $data['order_confirm']  = $this->myorder->where('id_orders', $data['order']->id)->first();
  48.         }
  49.  
  50.         $data['page']   = 'pages/myorder/detail';
  51.  
  52.         $this->view($data);
  53.     }
  54.  
  55.     /**
  56.      * Untuk melakukan konfirmasi pembayaran
  57.      */
  58.     public function confirm($invoice) {
  59.         $data['order']  = $this->myorder->where('invoice', $invoice)->first();
  60.  
  61.         if (!$data['order']) {
  62.             $this->session->set_flashdata('warning', 'Data tidak ditemukan');
  63.             redirect(base_url('myorder'));
  64.         }
  65.  
  66.         if ($data['order']->status !== 'waiting') {
  67.             $this->session->set_flashdata('warning', 'Bukti transfer sudah dikirim');
  68.             redirect(base_url("myorder/detail/$invoice"));
  69.         }
  70.  
  71.         if (!$_POST) {
  72.             $data['input'] = (object) $this->myorder->getDefaultValues();
  73.         } else {
  74.             $data['input'] = (object) $this->input->post(null, true);
  75.         }
  76.  
  77.         if (!empty($_FILES) && $_FILES['image']['name'] !== '') {   // Jika upload'an tidak kosong
  78.             $imageName  = url_title($invoice, '-', true) . '-' . date('YmdHis');    // Membuat slug
  79.             $upload     = $this->myorder->uploadImage('image', $imageName);         // Mulai upload
  80.             if ($upload) {
  81.  
  82.                 $data['input']->image = $upload['file_name'];
  83.             } else {
  84.                 redirect(base_url("myorder/confirm/$invoice"));
  85.             }
  86.         }
  87.  
  88.         if (!$this->myorder->validate()) {
  89.             $data['title']          = 'Konfirmasi Order';
  90.             $data['form_action']    = base_url("myorder/confirm/$invoice");
  91.             $data['page']           = 'pages/myorder/confirm';
  92.  
  93.             $this->view($data);
  94.             return;
  95.         }
  96.  
  97.         $this->myorder->table = 'orders_confirm';
  98.         if ($this->myorder->create($data['input'])) {
  99.             $this->myorder->table = 'orders';
  100.             $this->myorder->where('id', $data['input']->id_orders)->update(['status' => 'paid']);
  101.  
  102.             $this->session->set_flashdata('success', 'Data berhasil disimpan');
  103.         } else {
  104.             $this->session->set_flashdata('error', 'Maaf, Terjadi suatu kesalahan');
  105.         }
  106.  
  107.         redirect(base_url("myorder/detail/$invoice"));
  108.     }
  109.  
  110.     public function image_required() {
  111.         if (empty($_FILES) || $_FILES['image']['name'] === '') {
  112.             $this->session->set_flashdata('image_error', 'Bukti transfer tidak boleh kosong');
  113.             return false;   // Return false agar tidak melanjutkan proses
  114.         }
  115.  
  116.         return true;
  117.     }
  118. }