<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Form_batubara_produksi_model extends CI_Model
{
  public $table = 'form_batubara_produksi';
  public $id    = 'id_batubara_produksi';
  public $order = 'DESC';

  var $column = array(
    'id_batubara_produksi',
    'nomor_form_batubara_produksi'
  );

  private function _get_datatables_query()
  {
    $this->db->from($this->table);
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_kirim.asal_batubara_masuk');
    $this->db->join('checker', 'checker.id_checker = form_batubara_kirim.checker');

    $i = 0;

    foreach ($this->column as $item) // loop column
    {
      if ($_POST['search']['value']) // if datatable send POST for search
      {

        if ($i === 0) // first loop
        {
          $this->db->group_start(); // open bracket. query Where with OR clause better with bracket. because maybe can combine with other WHERE with AND.
          $this->db->like($item, $_POST['search']['value']);
        } else {
          $this->db->or_like($item, $_POST['search']['value']);
        }

        if (count($this->column) - 1 == $i) //last loop
          $this->db->group_end(); //close bracket
      }
      $column[$i] = $item; // set column array variable to order processing
      $i++;
    }

    if (isset($_POST['order'])) // here order processing
    {
      $this->db->order_by($column[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
    } else if (isset($this->order)) {
      $order = $this->order;
      $this->db->order_by(key($order), $order[key($order)]);
    }
  }

  public function get_datatables()
  {
    $this->_get_datatables_query();
    if ($_POST['length'] != -1)
      $this->db->limit($_POST['length'], $_POST['start']);
    $query = $this->db->get();
    return $query->result();
  }

  function count_filtered()
  {
    $this->_get_datatables_query();
    $query = $this->db->get();
    return $query->num_rows();
  }

  public function count_all()
  {
    $this->db->from($this->table);
    return $this->db->count_all_results();
  }


  function get_by_id($id)
  {
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_produksi.id_asal_batubara_produksi');
    $this->db->join('checker', 'checker.id_checker = form_batubara_produksi.id_checker');
    $this->db->where($this->id, $id);
    return $this->db->get($this->table)->row();
  }


  // get total rows
  function total_rows()
  {
    return $this->db->get($this->table)->num_rows();
  }

  // insert data
  function insert($data)
  {
    $this->db->insert($this->table, $data);
    return $this->db->insert_id();
  }

  function insert_cek_list($data)
  {
    $this->db->insert('form_batubara_produksi_cek_list', $data);
    //    return $this->db->insert_id();
  }


  // update data
  function update($id, $data)
  {
    $this->db->where($this->id, $id);
    $this->db->update($this->table, $data);
  }

  // delete data
  function delete($id)
  {
    $this->db->where($this->id, $id);
    $this->db->delete($this->table);
  }
  // delete data
  function delete_cek_list($id)
  {
    $this->db->where('id_batubara_produksi', $id);
    $this->db->delete('form_batubara_produksi_cek_list');
  }


  function get_all()
  {
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_produksi.id_asal_batubara_produksi');
    $this->db->join('checker', 'checker.id_checker = form_batubara_produksi.id_checker');


    $this->db->order_by('tanggal_batubara_produksi', 'DESC');
    $this->db->order_by($this->id, 'DESC');
    return $this->db->get($this->table)->result();
  }

  function get_dropdown_form_batubara_produksi()
  {
    return $this->db->get($this->table)->result();
  }

  function count_check($id_item_cek_list_batubara_produksi, $id_batubara_produksi)
  {
    $this->db->where('id_batubara_produksi', $id_batubara_produksi);
    $this->db->where('id_item_cek_list_batubara_produksi', $id_item_cek_list_batubara_produksi);
    $this->db->from('form_batubara_produksi_cek_list');
    return $this->db->count_all_results();
  }

  function get_data_report($tanggal_batubara_awal, $tanggal_batubara_akhir)
  {
    $this->db->where('tanggal_batubara_produksi <=', $tanggal_batubara_akhir);
    $this->db->where('tanggal_batubara_produksi >=', $tanggal_batubara_awal);
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_produksi.id_asal_batubara_produksi');
    $this->db->order_by('tanggal_batubara_produksi', 'ASC');
    $this->db->order_by('jam_batubara_produksi', 'ASC');
    return $this->db->get($this->table)->result();
  }

  function get_nomor_max($tanggal)
  {
    $this->db->select_max('nomor_urut_batubara_produksi');
    $this->db->where('tanggal_batubara_produksi', $tanggal);
    return $this->db->get($this->table)->row();
  }

  // mencari data
  public function get_data_table_by_id($id, $tgl_awal, $tgl_akhir)
  {
    $this->db->select('jumlah_batubara_produksi');
    $this->db->from($this->table);
    $array = array('id_asal_batubara_produksi' => $id, 'tanggal_batubara_produksi >=' => $tgl_awal, 'tanggal_batubara_produksi <=' => $tgl_akhir);
    $this->db->where($array);
    return $this->db->get()->result_array();
  }

  public function sum_tonase_by_table()
  {
    $this->db->select('SUM(jumlah_batubara_produksi) as total_produksi');
    $this->db->from($this->table);
    return $this->db->get()->row_array();
  }
}
