Esempio n. 1
0
 /**
  * Mengumpulkan daftar id yang akan dicari. Hasilnya berupa array yang dapat
  * digunakan untuk membuat query where_in().
  */
 public static function get_id_between($input)
 {
     // fecth id dari database ke array
     $fetch_id = Suratmasuk::get();
     $id_array = array();
     $i = 0;
     foreach ($fetch_id as $row) {
         $id_array[$i] = $row->id;
         $i++;
     }
     // min and max id dalam database
     $min_id = Suratmasuk::min('id');
     $max_id = Suratmasuk::max('id');
     // clean id_start
     # clean dalam hal input kosong atau lebih rendah dari min_id
     $id_start = !empty($input['id_start']) && $input['id_start'] >= $min_id ? $input['id_start'] : $min_id;
     # clean dalam hal input lebih tinggi dari max_id
     $id_start = $id_start >= $max_id ? $max_id : $id_start;
     // clean id_end
     # clean dalam hal input kosong atau lebih tinggi dari min_id
     $id_end = !empty($input['id_end']) && $input['id_end'] <= $max_id ? $input['id_end'] : $max_id;
     # clean dalam hal input lebih rendah dari id_start
     $id_end = $id_end <= $id_start ? $id_start : $id_end;
     // get start key dan end key dalam id_array
     $key_start = array_keys($id_array, $id_start);
     $key_end = array_keys($id_array, $id_end);
     // kalau belum ada record surat masuk, set array berikut ke default value
     if (empty($key_start)) {
         $key_start[0] = 1;
     }
     if (empty($key_end)) {
         $key_end[0] = 1;
     }
     if (empty($id_array)) {
         $id_array[1] = '';
     }
     // collect id yang dicari
     $collected_id = array();
     $j = 0;
     for ($i = $key_start[0]; $i <= $key_end[0]; $i++) {
         $collected_id[$j] = $id_array[$i];
         $j++;
     }
     // return array collected id
     return $collected_id;
 }