/** * Rekam file CSV yang terupload. */ public static function upload_create($file, $input) { $csv_rows = array(); // detect delimiter antara ',' atau ';' $allowed_header = array('tujuan'); $csv_uploded = file($file, FILE_IGNORE_NEW_LINES); $csv_header = str_getcsv($csv_uploded[0], ','); $csv_header2 = str_getcsv($csv_uploded[0], ';'); if ($csv_header == $allowed_header) { $csv_delimiter = ','; } else { if ($csv_header2 == $allowed_header) { $csv_delimiter = ';'; } else { echo 'wrong delimiter'; // FIXME throw error exit; } } // push data csv ke array if (isset($csv_delimiter)) { foreach ($csv_uploded as $line) { $csv_rows[] = str_getcsv($line, $csv_delimiter); } // remove header dari file csv unset($csv_rows[0]); $i = $input; $cfg_kode_surat = Konfigurasi::find(3)->config_value; $cfg_tahun_surat = Konfigurasi::find(4)->config_value; $jenis = Jenissurat::find($i['jenis']); $pengirim = Disposisi::find($i['pengirim']); $tanggal = $i['tanggal']; $hal = $i['hal']; // remove header dari file csv unset($csv_rows[0]); $jumlah = 0; foreach ($csv_rows as $tujuan) { $tujuan = trim($tujuan[0]); if (!empty($tujuan)) { // Menentukan urutan selanjutnya untuk jenis surat X, dengan cara // "mengambil nomor urut jenis surat X terakhir" untuk nanti diincrement saat direkam ke database // -Fluent query- // Rulesnya: apabila tahun surat terakhir masih sama dengan tahun konfigurasi // surat, maka nomor urut dilanjutkan. // Apabila berbeda tahun, maka direset menjadi 1. $last_number = DB::table('surat_keluar')->where('jenis_surat', '=', $jenis->jenis_surat)->order_by('id', 'desc')->only('nomor_urut'); $last_surat_tahun = DB::table('surat_keluar')->where('jenis_surat', '=', $jenis->jenis_surat)->order_by('id', 'desc')->only('tahun'); if ($last_surat_tahun == $cfg_tahun_surat) { $now_number = $last_number + 1; } else { $now_number = 1; } // -Eloquent query- Suratkeluar::create(array('jenis_surat' => $jenis->jenis_surat, 'nomor_urut' => $now_number, 'kode_surat' => $cfg_kode_surat, 'tahun' => $cfg_tahun_surat, 'tgl_surat' => $tanggal, 'pengirim' => $pengirim->nama, 'tujuan' => $tujuan, 'hal' => $hal, 'perekam' => Auth::user()->username, 'diupdate' => Auth::user()->username)); $jumlah++; } } $message = 'Surat Keluar Seksi sebanyak ' . $jumlah . ' surat berhasil direkam.'; $a['message'] = $message; return $a['message']; } }
public function get_disposisi_toggle($id) { if (is_object(Disposisi::find($id))) { $current_status = Disposisi::find($id)->aktif; $can_change = Disposisi::check_if_can(); // oke jika belum mencapai jumlah maksimum aktif atau oke jika untuk toggle ke nonaktif if ($can_change || $current_status == 1) { $jumlah_aktif = Disposisi::where('aktif', '=', 1)->count(); if ($jumlah_aktif <= 1 && $current_status == 1) { $warning = "Daftar disposisi aktif minimal satu."; return Redirect::to_route('settings_disposisi')->with('warning', $warning); } else { $toggle = Disposisi::toggle_disposisi($id); return Redirect::to_route('settings_disposisi')->with('message', $toggle); } } else { $warning = "Daftar disposisi aktif sudah mencapai maksimum."; return Redirect::to_route('settings_disposisi')->with('warning', $warning); } } else { // return error 404 apabila mengakses ID surat yg tidak ada di database return View::make('error.404'); } }
/** * Convert tampilan daftar disposisi dari id ke nama. * -TIDAK DIGUNAKAN- */ public static function disposisi_id_to_name($id_string) { $daftar = Disposisi::get(); $id_array = explode(',', $id_string); $nama_array = array(); foreach ($daftar as $row) { if (in_array($row->id, $id_array)) { array_push($nama_array, $row->nama); } } $nama_results = implode(', ', $nama_array); return $nama_results; }
public function catatan($id) { if (!Auth::isAllow(2, Session::get('role'))) { header('location:' . URL . 'home'); } if (isset($_POST['submit'])) { if ($this->rekamCatatan()) { $this->view->success = "Rekam catatan berhasil"; } else { $this->view->error = "Rekam catatan gagal"; } } $disposisi = new Disposisi(); $this->view->datad = $disposisi->getDisposisi(array('id_surat' => $id)); //$this->view->bagian = $this->view->datad->dist[0]; $sql = "SELECT kd_bagian FROM r_bagian WHERE id_bagian=" . Session::get('bagian'); $bagian = $this->model->select($sql); foreach ($bagian as $val) { $this->view->bagian = $val['kd_bagian']; } //dibawah ini bisa pake getSuratById $datas = $this->model->select("SELECT * FROM suratmasuk WHERE id_suratmasuk=" . $this->view->datad->id_surat); foreach ($datas as $value) { $this->view->data[0] = $value['id_suratmasuk']; $this->view->data[1] = $value['no_agenda']; $this->view->data[2] = $value['no_surat']; // var_dump($value['asal_surat']); $asal = $this->model->select('SELECT nama_satker FROM alamat WHERE kode_satker="' . trim($value['asal_surat']) . '"'); // var_dump('SELECT nama_satker FROM alamat WHERE kode_satker='.trim($value['asal_surat'])); foreach ($asal as $alamat) { $this->view->data[3] = $alamat['nama_satker']; } $this->view->data[4] = $value['perihal']; } $sql = "SELECT id_user, namaPegawai FROM user WHERE jabatan = 6 AND bagian = " . Session::get('bagian'); $this->view->peg = $this->model->select($sql); //var_dump($this->view->peg); $this->view->render('suratmasuk/catatan'); }
/** * Membuat query untuk fungsi search dan return bersama yang diinput user. */ public static function search_surat($input) { // jika limit berupa string atau lebih kecil dari 1, gunakan limit default // juga dibulatkan ke atas jika user mencoba menginput manual pecahan // untuk sanitasi, otomatis dilakukan oleh class paginator (default) $limit = $input['limit'] > 0 ? ceil($input['limit']) : Konfigurasi::find(7)->config_value; // sanitasi sort order $so = $input['sort_order']; $sort_order = $so == 'asc' || $so == 'desc' ? $so : 'desc'; $sk = Suratkeluarlain::order_by('id', $sort_order)->where('nomor_surat', 'LIKE', '%' . $input['nomor_surat'] . '%')->where('pengirim', 'LIKE', Suratkeluarlain::clean_id_pengirim($input['pengirim']))->where('tgl_surat', 'LIKE', '%' . $input['tanggal'] . '%')->where('tujuan', 'LIKE', '%' . $input['tujuan'] . '%')->where('hal', 'LIKE', '%' . $input['hal'] . '%')->paginate($limit); $sk->daftar_disposisi = Disposisi::order_by('nama')->get(); $sk->input = $input; // append filter terhadap pagination $filter = Suratkeluarlain::pagination_filter($input); $sk->appends($filter); return $sk; }
/** * -HELPER- * Cek apakah masih dapat menambahkan daftar baru. */ public static function check_if_can() { $max_entries = 16; $available_entries = $max_entries - 1; $disposisi_entries_aktif = Disposisi::where('aktif', '=', 1)->count(); // tidak dapat menambah daftar baru jika jumlah yang aktif mencapai batas maksimum // atau toggle status aktif dari nonaktif ke aktif if ($disposisi_entries_aktif <= $available_entries) { return true; } else { return false; } }