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') +
+
+
+
+
+
+ + + + + + + + + + + + + + +
#KategoriKodeNamaNomor BarisStatus
+
+
+
+
+
+
+@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');