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')
+
+@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')
+
+
+
+
+
+
+
+
+
+
+
+ | # |
+ Kode |
+ Nama |
+ Nomor Baris |
+ Status |
+
+
+
+
+
+
+
+
+
+
+@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');
});