From d5212f1f896c5361ccd8b963d7d42d3d628566bf Mon Sep 17 00:00:00 2001 From: izuddin Date: Mon, 23 Sep 2024 17:22:15 +0700 Subject: [PATCH] Update --- .../Admin/UploadDataController.php | 119 ++++++++++ app/Imports/ImportDataBos.php | 69 ++++++ app/Models/DataUploadBosOmspan.php | 17 ++ ...4_09_23_110625_create_import_bos_table.php | 59 +++++ .../views/admin/upload_data/index.blade.php | 216 ++++++++++++++++++ routes/web.php | 10 +- 6 files changed, 489 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Admin/UploadDataController.php create mode 100644 app/Imports/ImportDataBos.php create mode 100644 app/Models/DataUploadBosOmspan.php create mode 100644 database/migrations/2024_09_23_110625_create_import_bos_table.php create mode 100644 resources/views/admin/upload_data/index.blade.php diff --git a/app/Http/Controllers/Admin/UploadDataController.php b/app/Http/Controllers/Admin/UploadDataController.php new file mode 100644 index 0000000..86b82ed --- /dev/null +++ b/app/Http/Controllers/Admin/UploadDataController.php @@ -0,0 +1,119 @@ +siteTitle = "Upload Data"; + parent::__construct(); + $this->setIconTitle("fa fa-share"); + } + + public function index(Request $request) + { + $method = $request->method(); + $this->setTitle("Upload Data"); + $this->setSubtitle("Upload File"); + $this->setIconTitle("fas fa-upload"); + if ($request->isMethod('post')) { + $req = $request->all(); + try{ + $this->validate($request, [ + 'file' => 'required|mimes:xls,xlsx', + ]); + + $file = $request->file('file'); + $subJenisDana = $request->optJenisDana; + $ta = $request->ta; + $tujuan_upload = 'uploadFiles'; + $file->move($tujuan_upload,$file->getClientOriginalName()); + + DB::beginTransaction(); + + // DataUploadBosOmspan::truncate(); + Excel::import(new ImportDataBos($ta), $tujuan_upload."/".$file->getClientOriginalName()); + + DB::commit(); + + return redirect(URL::to("/admin/upload-data/"))->with('success','Data berhasil diupload, Silahkan validasi data terlebih dahulu!'); + } + catch(\Exception $e) + { + // throw new \Exception($e->getMessage()); + DB::rollBack(); + abort(500, $e->getMessage()); + // return redirect(URL::to("/upload-data/".$typeDana))->with('error',$e->getMessage()); + } + } + $this->siteTitle = "Upload Data"; + return view('admin.upload_data.index'); + } + + public function uploadDatatable(Request $request) + { + $post = $request->all(); + $offset = $post["start"]; + $limit = $post["length"]; + $src = isset($post["search"])?$post["search"]["value"]:""; + + $dataFilter=0; + $data = DataUploadBosOmspan::orderBy("created_at","ASC"); + if (!empty($src)){ + // $data->whereRaw("(LOWER(kode_skpd) LIKE '%".strtolower($src)."%' + // OR LOWER(nama_skpd) LIKE '%".strtolower($src)."%' + // OR LOWER(kode_rekening) LIKE '%".strtolower($src)."%' + // OR LOWER(nama_rekening) LIKE '%".strtolower($src)."%')"); + } + $dataFilter = $data->count(); + $dataTotal = DataUploadBosOmspan::count(); + + return response()->json([ + "recordsTotal" => $dataTotal, + "recordsFiltered" => $dataFilter, + "data"=> $data->skip($offset)->take($limit)->get() + ]); + } + + public function uploadValidate(Request $request) + { + try{ + DB::beginTransaction(); + + UploadData::where("tahun",getTA())->delete(); + DB::statement("INSERT INTO upload_data(tahun,kode_skpd,kode_rekening,total_lra) + SELECT tahun,kode_skpd,kode_rekening,total_lra FROM tmp_upload_data "); + + $skpds = DB::table('tmp_upload_data')->distinct()->select('kode_skpd')->get(); + foreach($skpds as $skpd){ + // CEK MAIN INDIKATOR + $txIndikator = TxIndikator::firstOrCreate(["tahun"=>getTA(),"kode_skpd"=>$skpd->kode_skpd],[ + "status_approval"=>3, // Operator + ]); + + $calculation = new CalculationIndikator($txIndikator->id); + $calculation->rasio(); + $calculation->summary(); + } + TempUploadData::truncate(); + DB::commit(); + return redirect(URL::to("/admin/upload-data"))->with('success','Data Realisasi belanja berhasil diupload.'); + }catch(\Exception $e){ + throw new \Exception($e->getMessage()); + DB::rollBack(); + return redirect(URL::to("/admin/upload-data"))->with('error',$e->getMessage()); + } + } + +} \ No newline at end of file diff --git a/app/Imports/ImportDataBos.php b/app/Imports/ImportDataBos.php new file mode 100644 index 0000000..5b66627 --- /dev/null +++ b/app/Imports/ImportDataBos.php @@ -0,0 +1,69 @@ +ta = $ta; + } + + public function startRow(): int + { + return 2; + } + + public function model(array $row) + { + // if (!isset($row[0])) { + // return null; + // } + var_dump($row); exit; + $data = [ + "no"=>$row[0], + "kanwil"=>$row[1], + "kppn"=>$row[2], + "lokasi_kewenangan"=>$row[3], + "lokasi_sekolah"=>$row[4], + "no_tgl_sk"=>$row[5], + "jenis_bos"=>$row[6], + "tahap"=>$row[7], + "gelombang"=>$row[8], + "npsn_nama_sekolah"=>$row[9], + "jenis_satuan_pendidikan"=>$row[10], + "status_sekolah"=>$row[11], + "bank"=>$row[12], + "no_rekening_nama_rekening"=>$row[13], + "npsn"=>$row[14], + "rekening"=>$row[15], + "nama"=>$row[16], + "jenjang_sekolah"=>$row[17], + "no_tgl_sp2d_detail"=>$row[18], + "no_sp2d"=>$row[19], + "tgl_sp2d"=>$row[20], + "status"=>$row[21], + "nilai"=>$row[22], + "pagu"=>$row[23], + "jmlh_siswa"=>$row[24], + "ket_retur"=>$row[25] + ]; + + return new DataUploadBosOmspan($data); + } + + public function columnFormats(): array + { + return [ + 'Tgl' => NumberFormat::FORMAT_DATE_DDMMYYYY, + ]; + } +} diff --git a/app/Models/DataUploadBosOmspan.php b/app/Models/DataUploadBosOmspan.php new file mode 100644 index 0000000..8e4934a --- /dev/null +++ b/app/Models/DataUploadBosOmspan.php @@ -0,0 +1,17 @@ +id(); + + $table->smallInteger("no")->nullable(); + $table->string("kanwil",100); + $table->string('kppn',50); + $table->string('lokasi_kewenangan',50); + $table->string('lokasi_sekolah',20); + $table->string('no_tgl_sk',50); + $table->string('jenis_bos',20); + $table->smallInteger('tahap'); + $table->smallInteger('gelombang'); + $table->string('npsn_nama_sekolah',100); + $table->string('jenis_satuan_pendidikan',10); + $table->string('status_sekolah',30); + $table->string('bank',30); + $table->string('no_rekening_nama_rekening',150); + $table->string('npsn',30); + $table->string('rekening',30); + $table->string('nama',10); + $table->string('jenjang_sekolah',10); + $table->string('no_tgl_sp2d_detail',100); + $table->string('no_sp2d',50); + $table->date('tgl_sp2d'); + $table->string('status',50); + $table->decimal('nilai',18,2); + $table->decimal('pagu',18,2); + $table->integer('jmlh_siswa',50); + $table->string('ket_retur',100)->nullable(); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('data_upload_bos_omspan'); + } +} diff --git a/resources/views/admin/upload_data/index.blade.php b/resources/views/admin/upload_data/index.blade.php new file mode 100644 index 0000000..0ba0b4a --- /dev/null +++ b/resources/views/admin/upload_data/index.blade.php @@ -0,0 +1,216 @@ +@php + $siteBreadcumb = [ + ["url"=>"/realisasi-belanja","label"=>$siteTitle], + ["url"=>"/realisasi-belanja/create","label"=>$sitesubTitle] + ]; + + $jenisDana = ["All","CHT"]; +@endphp + +@extends('layouts.empty') +@section('styles') + + + + + +@endsection + +@section('content') +
+
+

{{ $sitesubTitle }}

+
+ +
+
+
+
+ @csrf +
+ + +
+
+ + +
+
+

+ Format:xlsx | Columns: + "no", + "kanwil", + "kppn", + "lokasi_kewenangan", + "lokasi_sekolah", + "no_tgl_sk", + "jenis_bos", + "tahap", + "gelombang", + "npsn_nama_sekolah", + "jenis_satuan_pendidikan", + "status_sekolah", + "bank", + "no_rekening_nama_rekening", + "npsn", + "rekening", + "nama", + "jenjang_sekolah", + "no_tgl_sp2d_detail", + "no_sp2d", + "tgl_sp2d", + "status", + "nilai", + "pagu", + "jmlh_siswa", + "ket_retur" +

+
+
+
+
+
+

Validasi Data

+
+ {{-- @if(auth()->user()->can('Tambah SKPP')) --}} + + {{-- @endif --}} +
+
+
+ + + + + $rowCol"; + } + ?> + + + +
No
+
+
+@endsection +@section('scripts') + + + + + + + + + + + + + + + +@endsection \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 33e1a39..6182d3f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,6 +21,7 @@ use App\Http\Controllers\Admin\MstJenisBelanjaController; use App\Http\Controllers\Admin\MstSubJenisBelanjaController; use App\Http\Controllers\Admin\MstSatuanController; use App\Http\Controllers\Admin\PengaturanController; +use App\Http\Controllers\Admin\UploadDataController; use App\Http\Controllers\NotifikasiController; Route::get('/', [AuthController::class, 'showFormLogin']); @@ -29,7 +30,7 @@ Route::post('login', [AuthController::class, 'login']); Route::get('register', [AuthController::class, 'showFormRegister'])->name('register'); Route::post('register', [AuthController::class, 'register']); Route::group(['middleware' => 'auth'], function () { - Route::group(['prefix' => 'admin', 'middleware'=>'role:admin|superadmin'], function () { + Route::group(['prefix' => 'admin', 'middleware'=>'role:admin|superadmin'], function () { Route::post('users/datatable', [MstPenggunaController::class,'datatable']); Route::get('users/{userId}/lock-upload/{reset}', [MstPenggunaController::class, 'lockUploadData']); Route::get('users/lock-upload-all/{userId}/{reset}', [MstPenggunaController::class, 'lockUploadData']); @@ -73,6 +74,13 @@ Route::group(['middleware' => 'auth'], function () { Route::post('Pengaturan/adjust-anggaran', [PengaturanController::class,'rekonAnggaran']); Route::post('Pengaturan/adjust-akb-pendapatan', [PengaturanController::class,'adjustAKBPendapatan']); + Route::group(['prefix' => 'upload-data'], function () { + Route::get('/', [UploadDataController::class,'index']); + Route::post('/', [UploadDataController::class,'index']); + Route::post('/datatable', [UploadDataController::class,'uploadDatatable']); + Route::get('/proses', [UploadDataController::class,'uploadValidate']); + }); + }); Route::get('users/change-password/{userId}', [MstPenggunaController::class,'changePass'])->name("users.changepass");