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

class Form_batubara_masuk_model extends CI_Model
{
  public $table = 'form_batubara_masuk';
  public $id    = 'id_batubara_masuk';
  public $order = 'DESC';

  var $column = array(
    'id_batubara_masuk',
    'nomor_form_batubara_masuk'
  );

  private function _get_datatables_query()
  {
    $this->db->from($this->table);
    //$this->db->join('unit_batubara_masuk', 'unit_batubara_masuk.id_unit_batubara_masuk = form_batubara_masuk.unit_batubara_masuk');
    $this->db->join('asal_batubara_masuk', 'asal_batubara_masuk.id_asal_batubara_masuk = form_batubara_masuk.asal_batubara_masuk');
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_masuk.stockpile_batubara_masuk');
    $this->db->join('kode_batubara_masuk', 'kode_batubara_masuk.id_kode_batubara_masuk = form_batubara_masuk.kode_batubara_masuk');
    $this->db->join('checker', 'checker.id_checker = form_batubara_masuk.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('unit_batubara_masuk', 'unit_batubara_masuk.id_unit_batubara_masuk = form_batubara_masuk.id_unit_batubara_masuk');
    $this->db->join('asal_batubara_masuk', 'asal_batubara_masuk.id_asal_batubara_masuk = form_batubara_masuk.id_asal_batubara_masuk');
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_masuk.id_stockpile_batubara_masuk');
    $this->db->join('kode_batubara_masuk', 'kode_batubara_masuk.id_kode_batubara_masuk = form_batubara_masuk.id_kode_batubara_masuk');
    $this->db->join('checker', 'checker.id_checker = form_batubara_masuk.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_masuk_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_masuk', $id);
    $this->db->delete('form_batubara_masuk_cek_list');
  }


  function get_all()
  {
    //$this->db->join('unit_batubara_masuk', 'unit_batubara_masuk.id_unit_batubara_masuk = form_batubara_masuk.id_unit_batubara_masuk');
    $this->db->join('asal_batubara_masuk', 'asal_batubara_masuk.id_asal_batubara_masuk = form_batubara_masuk.id_asal_batubara_masuk');
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_masuk.id_stockpile_batubara_masuk');
    $this->db->join('kode_batubara_masuk', 'kode_batubara_masuk.id_kode_batubara_masuk = form_batubara_masuk.id_kode_batubara_masuk');
    $this->db->join('checker', 'checker.id_checker = form_batubara_masuk.id_checker');
    $this->db->order_by('tanggal_batubara_masuk', 'DESC');
    $this->db->order_by($this->id, 'DESC');
    return $this->db->get($this->table)->result();
  }

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

  function count_check($id_item_cek_list_batubara_masuk, $id_batubara_masuk)
  {
    $this->db->where('id_batubara_masuk', $id_batubara_masuk);
    $this->db->where('id_item_cek_list_batubara_masuk', $id_item_cek_list_batubara_masuk);
    $this->db->from('form_batubara_masuk_cek_list');
    return $this->db->count_all_results();
  }

  function get_data_report($tanggal_report_awal, $tanggal_report_akhir)
  {
    $this->db->where('tanggal_batubara_masuk <=', $tanggal_report_akhir);
    $this->db->where('tanggal_batubara_masuk >=', $tanggal_report_awal);
    //$this->db->join('unit_batubara_masuk', 'unit_batubara_masuk.id_unit_batubara_masuk = form_batubara_masuk.id_unit_batubara_masuk');
    $this->db->join('asal_batubara_masuk', 'asal_batubara_masuk.id_asal_batubara_masuk = form_batubara_masuk.id_asal_batubara_masuk');
    $this->db->join('stockpile_batubara_masuk', 'stockpile_batubara_masuk.id_stockpile_batubara_masuk = form_batubara_masuk.id_stockpile_batubara_masuk');
    $this->db->join('kode_batubara_masuk', 'kode_batubara_masuk.id_kode_batubara_masuk = form_batubara_masuk.id_kode_batubara_masuk');
    $this->db->join('checker', 'checker.id_checker = form_batubara_masuk.id_checker');
    $this->db->order_by('tanggal_batubara_masuk', 'ASC');
    $this->db->order_by('jam_batubara_masuk', 'ASC');
    return $this->db->get($this->table)->result();
  }

  // mencari data
  function total_rows_by_date($tgl_awal, $tgl_akhir)
  {
    $this->db->from($this->table);
    $array = array('tanggal_batubara_masuk >=' => $tgl_awal, 'tanggal_batubara_masuk <=' => $tgl_akhir);
    $this->db->where($array);
    return $this->db->get()->num_rows();
  }

  public function get_data_table_by_id($id, $tgl_awal, $tgl_akhir)
  {
    $this->db->select('bruto_batubara_masuk as bruto, tarra_batubara_masuk as tarra');
    $this->db->from($this->table);
    $array = array('id_stockpile_batubara_masuk' => $id, 'tanggal_batubara_masuk >=' => $tgl_awal, 'tanggal_batubara_masuk <=' => $tgl_akhir);
    $this->db->where($array);
    return $this->db->get()->result_array();
  }

  public function sum_tonase_by_table($tgl_awal, $tgl_akhir)
  {
    $this->db->select('SUM(bruto_batubara_masuk - tarra_batubara_masuk) as total_tonase');
    $this->db->from($this->table);
    $array = array('tanggal_batubara_masuk >=' => $tgl_awal, 'tanggal_batubara_masuk <=' => $tgl_akhir);
    $this->db->where($array);
    return $this->db->get()->row_array();
  }
}
