/** * 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; }