diff --git a/app/Http/Controllers/FrontController.php b/app/Http/Controllers/FrontController.php
index e3894d0..cd2cde4 100644
--- a/app/Http/Controllers/FrontController.php
+++ b/app/Http/Controllers/FrontController.php
@@ -12,6 +12,7 @@ class FrontController extends Controller
{
function index() {
$data['title'] = 'Beranda';
- return view('index',$data);
+ return redirect('login');
+ // return view('index',$data);
}
}
diff --git a/app/Http/Controllers/Pengaturan/KategoriController.php b/app/Http/Controllers/Pengaturan/KategoriController.php
index 3528e3e..18e145d 100644
--- a/app/Http/Controllers/Pengaturan/KategoriController.php
+++ b/app/Http/Controllers/Pengaturan/KategoriController.php
@@ -4,15 +4,71 @@ namespace App\Http\Controllers\Pengaturan;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
+use App\Models\Kategori;
class KategoriController extends Controller
{
+ protected $title = 'Kategori';
+ protected $template = 'modules.pengaturan.kategori';
+ protected $route = 'modules.pengaturan.kategori';
+
/**
* Display a listing of the resource.
*/
public function index()
{
- //
+ permission('is_read', $this->route, 'module',true);
+
+ $data['breadcrumbs'] = [
+ ['name' => 'Dashboard'],
+ ['name' => 'Pengaturan'],
+ ['name' => 'Kategori','active' => true],
+ ];
+ $data['title'] = $this->title;
+ $data['route'] = $this->route;
+ return view($this->template.'.index',$data);
+ }
+
+ public function grid(Request $request)
+ {
+
+ $data = Kategori::all();
+ $_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->KategoriId),
+ 'alias' => @$row->alias,
+ 'nama' => @$row->nama,
+ 'status' => @$status,
+ 'action' => @$action,
+ ];
+
+ }
+
+ // return response()->json($_data); // Return the data as a JSON response
+ return response()->json($_data);
+
}
/**
@@ -28,7 +84,37 @@ class KategoriController extends Controller
*/
public function store(Request $request)
{
- //
+ $request->validate([
+ 'nama' => 'required|string|max:255',
+ ]);
+
+ try {
+ if(@request()->secure_id){
+ $keyId = decode_id(@request()->secure_id);
+ $data = Kategori::find($keyId);
+ $data->alias = str_replace(' ','_',strtolower($request->nama));
+ $data->nama = $request->nama;
+ $data->status = $request->status;
+ $data->save();
+ }else{
+ $data = new Kategori;
+ $data->alias = str_replace(' ','_',strtolower($request->nama));
+ $data->nama = $request->nama;
+ $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 +136,28 @@ class KategoriController 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' => 'Kategori','active' => true],
+ ];
+ $keyId = decode_id($id);
+ $data['title'] = $this->title;
+ $data['route'] = $this->route;
+ $data['keyId'] = $id;
+ $data['item'] = Kategori::where('KategoriId',$keyId)->first();
+ return view($this->template.'.form',$data);
+ }
+
+ public function delete($id)
+ {
+ $keyId = decode_id($id);
+
+ $data = Kategori::where('KategoriId',$keyId)->delete();
+
+ return response()->json(['success' => true,'message' => 'Berhasil update data','type' => 'success']);
}
/**
diff --git a/app/Http/Controllers/Pengaturan/UnitController.php b/app/Http/Controllers/Pengaturan/UnitController.php
index 94d909b..4bb8929 100644
--- a/app/Http/Controllers/Pengaturan/UnitController.php
+++ b/app/Http/Controllers/Pengaturan/UnitController.php
@@ -4,15 +4,74 @@ namespace App\Http\Controllers\Pengaturan;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
+use App\Models\Unit;
+use App\Models\Kategori;
class UnitController extends Controller
{
+ protected $title = 'Unit';
+ protected $template = 'modules.pengaturan.unit';
+ protected $route = 'modules.pengaturan.unit';
+
/**
* Display a listing of the resource.
*/
public function index()
{
- //
+ permission('is_read', $this->route, 'module',true);
+
+ $data['breadcrumbs'] = [
+ ['name' => 'Dashboard'],
+ ['name' => 'Pengaturan'],
+ ['name' => 'Unit','active' => true],
+ ];
+ $data['title'] = $this->title;
+ $data['route'] = $this->route;
+ return view($this->template.'.index',$data);
+ }
+
+ public function grid(Request $request)
+ {
+
+ $data = Unit::all();
+ $_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->UnitId),
+ 'kode' => @$row->kode,
+ 'kategori' => @$row->kategori->nama,
+ 'nama' => @$row->nama,
+ '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 +87,43 @@ class UnitController extends Controller
*/
public function store(Request $request)
{
- //
+ $request->validate([
+ 'nama' => 'required|string|max:255',
+ ]);
+
+ try {
+ if(@request()->secure_id){
+ $keyId = decode_id(@request()->secure_id);
+ $data = Unit::find($keyId);
+ $data->kategori_id = decode_id($request->kategori_id);
+ $data->nama = $request->nama;
+ $data->deskripsi = $request->deskripsi;
+ $data->kode = $request->kode;
+ $data->nomor_baris = $request->nomor_baris;
+ $data->status = $request->status;
+ $data->save();
+ }else{
+ $data = new Unit;
+ $data->kategori_id = decode_id($request->kategori_id);
+ $data->nama = $request->nama;
+ $data->deskripsi = $request->deskripsi;
+ $data->kode = $request->kode;
+ $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 +145,29 @@ class UnitController 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' => 'Unit','active' => true],
+ ];
+ $keyId = decode_id($id);
+ $data['title'] = $this->title;
+ $data['route'] = $this->route;
+ $data['keyId'] = $id;
+ $data['item'] = Unit::where('UnitId',$keyId)->first();
+ $data['kategori'] = Kategori::all();
+ return view($this->template.'.form',$data);
+ }
+
+ public function delete($id)
+ {
+ $keyId = decode_id($id);
+
+ $data = Unit::where('UnitId',$keyId)->delete();
+
+ return response()->json(['success' => true,'message' => 'Berhasil update data','type' => 'success']);
}
/**
diff --git a/app/Models/Kategori.php b/app/Models/Kategori.php
index bea1270..778dd9c 100644
--- a/app/Models/Kategori.php
+++ b/app/Models/Kategori.php
@@ -3,8 +3,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\SoftDeletes;
class Kategori extends Model
{
- //
+ use SoftDeletes;
+
+ protected $table = 'p_kategori';
+ protected $primaryKey = 'KategoriId';
+ protected $guarded = [];
}
diff --git a/app/Models/Unit.php b/app/Models/Unit.php
new file mode 100644
index 0000000..124fabf
--- /dev/null
+++ b/app/Models/Unit.php
@@ -0,0 +1,19 @@
+belongsTo(\App\Models\Kategori::class,'kategori_id','KategoriId');
+ }
+}
diff --git a/database/migrations/2025_11_24_062815_create_kategoris_table.php b/database/migrations/2025_11_24_062815_create_kategoris_table.php
index c1bcdd4..c740da8 100644
--- a/database/migrations/2025_11_24_062815_create_kategoris_table.php
+++ b/database/migrations/2025_11_24_062815_create_kategoris_table.php
@@ -11,9 +11,13 @@ return new class extends Migration
*/
public function up(): void
{
- Schema::create('kategoris', function (Blueprint $table) {
- $table->id();
- $table->timestamps();
+ Schema::create('p_kategori', function (Blueprint $table) {
+ $table->id('KategoriId');
+ $table->string('nama');
+ $table->string('alias');
+ $table->integer('status')->default(1);
+ $table->timestampsTz();
+ $table->softdeletesTz();
});
}
@@ -22,6 +26,6 @@ return new class extends Migration
*/
public function down(): void
{
- Schema::dropIfExists('kategoris');
+ Schema::dropIfExists('p_kategori');
}
};
diff --git a/database/migrations/2025_11_25_021046_create_units_table.php b/database/migrations/2025_11_25_021046_create_units_table.php
new file mode 100644
index 0000000..cc1683b
--- /dev/null
+++ b/database/migrations/2025_11_25_021046_create_units_table.php
@@ -0,0 +1,36 @@
+id('UnitId');
+ $table->integer('kategori_id');
+ $table->string('kode');
+ $table->string('nama');
+ $table->text('deskripsi')->nullable();
+ $table->integer('nomor_baris')->default(0);
+ $table->integer('status')->default(1);
+ $table->timestampsTz();
+ $table->softdeletesTz();
+
+ $table->foreign('kategori_id')->references('KategoriId')->on('p_kategori')->cascadeOnDelete();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('p_unit');
+ }
+};
diff --git a/resources/views/layouts/master.blade.php b/resources/views/layouts/master.blade.php
index 017485d..fd306f7 100644
--- a/resources/views/layouts/master.blade.php
+++ b/resources/views/layouts/master.blade.php
@@ -21,6 +21,7 @@
+
@@ -69,8 +70,12 @@
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/modules/pengaturan/unit/index.blade.php b/resources/views/modules/pengaturan/unit/index.blade.php
new file mode 100644
index 0000000..560cf4c
--- /dev/null
+++ b/resources/views/modules/pengaturan/unit/index.blade.php
@@ -0,0 +1,94 @@
+@extends('layouts.master')
+
+@section('css')
+@endsection
+@section('content')
+
+
+
+
+
+
+
+
+
+
+
+ | # |
+ Kategori |
+ Kode |
+ Nama |
+ Nomor Baris |
+ Status |
+
+
+
+
+
+
+
+
+
+
+@endsection
+@section('js')
+
+@endsection
\ No newline at end of file
diff --git a/routes/modules/modules.php b/routes/modules/modules.php
index a64c4dc..e72e059 100644
--- a/routes/modules/modules.php
+++ b/routes/modules/modules.php
@@ -13,11 +13,19 @@ use App\Http\Controllers\Pengaturan\ARController;
use App\Http\Controllers\Pengaturan\GHGController;
use App\Http\Controllers\Pengaturan\GWPController;
use App\Http\Controllers\Pengaturan\KategoriController;
+use App\Http\Controllers\Pengaturan\UnitController;
Route::get('dashboard',[HomeController::class,'index'])->name('index');
Route::name('pengaturan.')->prefix('pengaturan')->group(function () {
+ Route::name('unit.')->prefix('unit')->group(function () {
+ Route::resource('/',UnitController::class);
+ Route::get('grid',[UnitController::class,'grid'])->name('grid');
+ Route::get('update/{id?}',[UnitController::class,'update'])->name('update');
+ Route::get('delete/{id?}',[UnitController::class,'delete'])->name('delete');
+ });
+
Route::name('kategori.')->prefix('kategori')->group(function () {
Route::resource('/',KategoriController::class);
Route::get('grid',[KategoriController::class,'grid'])->name('grid');