Exemplo n.º 1
0
 /**
  * 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'];
     }
 }
Exemplo n.º 2
0
 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');
     }
 }
Exemplo n.º 3
0
 /**
  * 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;
 }
Exemplo n.º 4
0
 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');
 }
Exemplo n.º 5
0
 /**
  * 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;
 }
Exemplo n.º 6
0
 /**
  * -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;
     }
 }