diff --git a/app/Helpers/custom.php b/app/Helpers/custom.php index 7cc60b1..c2ccab1 100644 --- a/app/Helpers/custom.php +++ b/app/Helpers/custom.php @@ -410,6 +410,7 @@ if (!function_exists('valueUnitKonversion')) { $value = UnitKonversi::where('kategori_id',$kategori) ->where('from_id',$from) ->where('to_id',$to) + ->orderBy('UnitKonversiId','ASC') ->first(); return $value->value; diff --git a/app/Http/Controllers/Pengaturan/SumberDataEFController.php b/app/Http/Controllers/Pengaturan/SumberDataEFController.php index f35438c..d78f392 100644 --- a/app/Http/Controllers/Pengaturan/SumberDataEFController.php +++ b/app/Http/Controllers/Pengaturan/SumberDataEFController.php @@ -4,15 +4,73 @@ namespace App\Http\Controllers\Pengaturan; use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use App\Models\SumberDataEF; class SumberDataEFController extends Controller { + protected $title = 'Sumber Data EF'; + protected $template = 'modules.pengaturan.sumberdata-ef'; + protected $route = 'modules.pengaturan.sumberdata-ef'; + /** * Display a listing of the resource. */ public function index() { - // + permission('is_read', $this->route, 'module',true); + + $data['breadcrumbs'] = [ + ['name' => 'Dashboard'], + ['name' => 'Pengaturan'], + ['name' => 'AR','active' => true], + ]; + $data['title'] = $this->title; + $data['route'] = $this->route; + return view($this->template.'.index',$data); + } + + public function grid(Request $request) + { + + $data = SumberDataEF::orderBy('nomor_baris','ASC')->get(); + $_data = []; + + + foreach ($data as $key => $row) { + + + $action = ''; + $status = ''; + if($row->status == 0){ + $status = ' Tidak Aktif '; + }else{ + $status = ' Aktif '; + } + $action .= '
'; + if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){ + $action .= ''; + if(session('group_id') == 1){ + $action .= ''; + } + } + $action .= '
'; + + $_data[] = [ + 'no' => $key+1, + 'id' => encode_id($row->SumberDataId), + 'kode' => @$row->kode, + 'nama' => @$row->nama, + 'deskripsi' => @$row->deskripsi, + 'nomor_baris' => @$row->nomor_baris, + 'status' => @$status, + 'action' => @$action, + ]; + + } + + // return response()->json($_data); // Return the data as a JSON response + return response()->json($_data); + } /** @@ -28,7 +86,52 @@ class SumberDataEFController extends Controller */ public function store(Request $request) { - // + $request->validate([ + 'kode' => 'required|string|max:255|unique:p_sumberdata_ef,kode', + 'nama' => 'required|string|max:255', + 'deskripsi' => 'required|string', + 'nomor_baris' => 'required|numeric', + ],[ + 'kode.unique' => 'Kode Tidak Boleh Sama', + 'nomor_baris.numeric' => 'Nomor Baris Harus Berupa Angka', + + 'kode.required' => 'Tidak Boleh Kosong', + 'nama.required' => 'Tidak Boleh Kosong', + 'deskripsi.required' => 'Tidak Boleh Kosong', + 'nomor_baris.required' => 'Tidak Boleh Kosong', + ]); + + try { + if(@request()->secure_id){ + $keyId = decode_id(@request()->secure_id); + $data = SumberDataEF::find($keyId); + $data->kode = $request->kode; + $data->nama = $request->nama; + $data->deskripsi = $request->deskripsi; + $data->nomor_baris = $request->nomor_baris; + $data->status = $request->status; + $data->save(); + }else{ + $data = new SumberDataEF; + $data->kode = $request->kode; + $data->nama = $request->nama; + $data->deskripsi = $request->deskripsi; + $data->nomor_baris = $request->nomor_baris; + $data->status = $request->status; + $data->save(); + } + + + return redirect()->back()->with([ + 'message' => 'Berhasil update data', + 'type' => 'success', + ]); + } catch (\Exception $e) { + return redirect()->back()->with([ + 'message' => 'Gagal disimpan. Silakan coba lagi. Error: ' . $e->getMessage(), + 'type' => 'error', + ]); + } } /** @@ -50,9 +153,28 @@ class SumberDataEFController extends Controller /** * Update the specified resource in storage. */ - public function update(Request $request, string $id) + public function update($id = null) { - // + $data['breadcrumbs'] = [ + ['name' => 'Dashboard'], + ['name' => 'Pengaturan'], + ['name' => 'AR','active' => true], + ]; + $keyId = decode_id($id); + $data['title'] = $this->title; + $data['route'] = $this->route; + $data['keyId'] = $id; + $data['item'] = SumberDataEF::where('SumberDataId',$keyId)->first(); + return view($this->template.'.form',$data); + } + + public function delete($id) + { + $keyId = decode_id($id); + + $data = SumberDataEF::where('SumberDataId',$keyId)->delete(); + + return response()->json(['success' => true,'message' => 'Berhasil update data','type' => 'success']); } /** diff --git a/app/Http/Controllers/Pengaturan/UnitKonversiController.php b/app/Http/Controllers/Pengaturan/UnitKonversiController.php index b9daa51..e5829bf 100644 --- a/app/Http/Controllers/Pengaturan/UnitKonversiController.php +++ b/app/Http/Controllers/Pengaturan/UnitKonversiController.php @@ -33,14 +33,7 @@ class UnitKonversiController extends Controller $data['unit'] = Unit::where('kategori_id',decode_id(@request()->kategori_id))->get(); return view($this->template.'.index',$data); } - - function valueKonversion($kategori,$from,$to) { - $value = valueUnitKonversion(decode_id($kategori),decode_id($from),decode_id($to)); - // return ; - - return response()->json(['value' => $value]); - } - + public function grid(Request $request) { if(@$request->kategori_id){ @@ -53,6 +46,11 @@ class UnitKonversiController extends Controller foreach ($data as $key => $row) { + //unit to + foreach ($data as $keyAr => $rowAr) { + $_ardata['input_'.$rowAr->UnitId.'_'.strtolower($rowAr->kode)] = ''; + } + $action = ''; $status = ''; @@ -63,7 +61,9 @@ class UnitKonversiController extends Controller } $unit = Unit::where('kode',$row->kode)->first(); - $input = '
'; + // $input = '
'; + // $input = ''; + // $input .= ''; $action .= '
'; if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){ @@ -74,18 +74,18 @@ class UnitKonversiController extends Controller } } $action .= '
'; - - $_data[] = [ + + $_data[] = array_merge([ 'no' => $key+1, 'id' => encode_id($row->UnitId), 'kategori' => @$row->kategori->nama, 'nama' => @$row->nama, - 'kategoriID' => encode_id(@$row->kategori->KategoriId), - 'UnitId' => encode_id($unit->UnitId), + 'kategoriID' => @$row->kategori->KategoriId, + 'UnitId' => $unit->UnitId, 'status' => @$status, 'input' => @$input, 'action' => @$action, - ]; + ],$_ardata); } @@ -108,32 +108,34 @@ class UnitKonversiController extends Controller public function store(Request $request) { $kategoriId = decode_id($request->kategori_id); - $toRaw = array_values($request->input('to')); - $codes = array_values(array_filter($toRaw, fn($v) => !is_numeric($v))); - $codeToId = !empty($codes) ? Unit::whereIn('kode', $codes)->pluck('UnitId','kode')->toArray() : []; - $toIds = array_map(fn($v) => is_numeric($v) ? (int)$v : ($codeToId[$v] ?? null), $toRaw); - DB::transaction(function() use ($request, $kategoriId, $toIds) { - foreach ($request->all() as $key => $vals) { - if (!str_starts_with($key, 'val_')) continue; - - $fromId = (int) substr($key, 4); - if (!$fromId || !is_array($vals)) continue; - - foreach ($toIds as $col => $toId) { - if (!$toId) continue; - - $raw = $vals[$col] ?? null; - // skip empty if you want: if ($raw === null || $raw === '') continue; - $value = ($raw === null || $raw === '') ? 0 : (float)$raw; - - UnitKonversi::updateOrCreate( - ['kategori_id' => $kategoriId, 'from_id' => $fromId, 'to_id' => $toId], - ['value' => $value, 'updated_at' => now()] - ); - } + foreach ($request->all() as $key => $value) { + // pastikan key diawali "val_" + if (!str_starts_with($key, 'val_')) { + continue; } - }); + + // pecah: "val_6_17" -> ["val", "6", "17"] + $parts = explode('_', $key); + + // jaga-jaga kalau format gak sesuai + if (count($parts) !== 3) { + continue; + } + + $fromId = (int) $parts[1]; + $toId = (int) $parts[2]; + + // skip kalau value kosong (opsional) + if ($value === null || $value === '') { + continue; + } + + UnitKonversi::updateOrCreate( + ['kategori_id' => $kategoriId, 'from_id' => $fromId, 'to_id' => $toId], + ['value' => $value, 'updated_at' => now()] + ); + } return redirect()->back()->with([ 'message' => 'Berhasil update data', diff --git a/app/Models/SumberDataEF.php b/app/Models/SumberDataEF.php new file mode 100644 index 0000000..27ab6de --- /dev/null +++ b/app/Models/SumberDataEF.php @@ -0,0 +1,12 @@ +id('SumberDataId'); + $table->string('kode')->nullable(); + $table->string('nama')->nullable(); + $table->integer('nomor_baris'); + $table->text('deskripsi')->nullable(); + $table->integer('status')->default(0); + $table->timestampsTz(); + $table->softdeletesTz(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('p_sumberdata_ef'); + } +}; diff --git a/resources/views/modules/pengaturan/ar/form.blade.php b/resources/views/modules/pengaturan/ar/form.blade.php index f53a0d2..51a8661 100644 --- a/resources/views/modules/pengaturan/ar/form.blade.php +++ b/resources/views/modules/pengaturan/ar/form.blade.php @@ -97,24 +97,4 @@ @endsection @section('js') - @endsection \ No newline at end of file diff --git a/resources/views/modules/pengaturan/sumberdata-ef/form.blade.php b/resources/views/modules/pengaturan/sumberdata-ef/form.blade.php new file mode 100644 index 0000000..51a8661 --- /dev/null +++ b/resources/views/modules/pengaturan/sumberdata-ef/form.blade.php @@ -0,0 +1,100 @@ +@extends('layouts.master') +@section('content') +
+
+
+
+
+
+ {{$title}} +
+
+ {{csrf_field()}} +
+
+
+ +
+ +
+
+ +
+ + @error('kode') + {{$message}} + @enderror +
+
+
+ +
+
+ +
+ + @error('nama') + {{$message}} + @enderror +
+
+
+ +
+
+ +
+ + @error('deskripsi') + {{$message}} + @enderror +
+
+
+ +
+
+ +
+ + @error('nomor_baris') + {{$message}} + @enderror +
+
+
+ +
+
+ +
+ + @error('status') + {{$message}} + @enderror +
+
+
+ +
+
+ +
+
+
+
+
+
+@endsection +@section('js') +@endsection \ No newline at end of file diff --git a/resources/views/modules/pengaturan/sumberdata-ef/index.blade.php b/resources/views/modules/pengaturan/sumberdata-ef/index.blade.php new file mode 100644 index 0000000..416a20a --- /dev/null +++ b/resources/views/modules/pengaturan/sumberdata-ef/index.blade.php @@ -0,0 +1,93 @@ +@extends('layouts.master') + +@section('css') +@endsection +@section('content') +
+
+
+
+
+
+ + + + + + + + + + + + + +
#KodeNamaNomor BarisStatus
+
+
+
+
+
+
+@endsection +@section('js') + +@endsection \ No newline at end of file diff --git a/resources/views/modules/pengaturan/unit-conversion/index.blade.php b/resources/views/modules/pengaturan/unit-conversion/index.blade.php index cce6c99..c754afc 100644 --- a/resources/views/modules/pengaturan/unit-conversion/index.blade.php +++ b/resources/views/modules/pengaturan/unit-conversion/index.blade.php @@ -47,9 +47,8 @@ {{-- # --}} Nama @foreach ($unit as $dataUnit) - + {{ $dataUnit->kode }} - @endforeach @@ -97,23 +96,6 @@ function ajaxRequest(params) { }) } - function commandInput(value, row) { - var kategoriID = row['kategoriID']; - var unitID = row['UnitId']; - var to = $('.commandInput').attr('data-key'); - var key = "{{ url('pengaturan/unit-conversion/value') }}/"+kategoriID + '/' + unitID + '/' + to; - var input = ''; - var val = 0; - - $.get(key, function(res){ - val = res.value; - }); - - input += ''; - - return input; - } - $("#grid-data").on("click", ".remove_data", function() { var base_url = $(this).attr('data-href'); var id = $(this).attr('data-id'); diff --git a/routes/modules/modules.php b/routes/modules/modules.php index 9f5d9db..36b8264 100644 --- a/routes/modules/modules.php +++ b/routes/modules/modules.php @@ -15,15 +15,22 @@ use App\Http\Controllers\Pengaturan\GWPController; use App\Http\Controllers\Pengaturan\KategoriController; use App\Http\Controllers\Pengaturan\UnitController; use App\Http\Controllers\Pengaturan\UnitKonversiController; +use App\Http\Controllers\Pengaturan\SumberDataEFController; Route::get('dashboard',[HomeController::class,'index'])->name('index'); Route::name('pengaturan.')->prefix('pengaturan')->group(function () { + Route::name('sumberdata-ef.')->prefix('sumberdata-ef')->group(function () { + Route::resource('/',SumberDataEFController::class); + Route::get('grid',[SumberDataEFController::class,'grid'])->name('grid'); + Route::get('update/{id?}',[SumberDataEFController::class,'update'])->name('update'); + Route::get('delete/{id?}',[SumberDataEFController::class,'delete'])->name('delete'); + }); + Route::name('unit-conversion.')->prefix('unit-conversion')->group(function () { Route::resource('/',UnitKonversiController::class); Route::get('grid',[UnitKonversiController::class,'grid'])->name('grid'); - Route::get('value/{kategori}/{from}/{to}',[UnitKonversiController::class,'valueKonversion'])->name('valueKonversion'); Route::get('update/{id?}',[UnitKonversiController::class,'update'])->name('update'); Route::get('delete/{id?}',[UnitKonversiController::class,'delete'])->name('delete'); });