diff --git a/app/Http/Controllers/Web/Program/AktivitasController.php b/app/Http/Controllers/Web/Program/AktivitasController.php new file mode 100644 index 0000000..9c34155 --- /dev/null +++ b/app/Http/Controllers/Web/Program/AktivitasController.php @@ -0,0 +1,167 @@ +find($transformasiId); + if (!$transformasi) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data transformasi tidak ditemukan.' + ], 404); + } + + $validated = $request->validate([ + 'kode' => ['required','string','max:255'], + 'nama' => ['required','string','max:255'], + 'jenis_aktivitas' => ['required','string','max:255', Rule::in(['tujuan', 'aktivitas']),], + 'indikator' => ['required','string'], + 'deskripsi' => ['required','string'], + ]); + + Aktivitas::create([...$validated, + 'transformasi_id' => $transformasiId, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Aktivitas berhasil ditambahkan.' + ], 201); + } + + /** + * Display the specified resource. + */ + public function show(string $frameworkId, string $transformasiId, string $id) + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $aktivitas = Aktivitas::whereHas('transformasi', function ($query) use ($frameworkId) { + $query->where('framework_id', $frameworkId); + })->where('transformasi_id', $transformasiId)->find($id); + + if (!$aktivitas) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data aktivitas tidak ditemukan.' + ], 404); + } + + return response()->json(['data' => $aktivitas, 'status' => 'success']); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $frameworkId, string $transformasiId, string $id) + { + // + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $frameworkId, string $transformasiId, string $id) + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $aktivitas = Aktivitas::whereHas('transformasi', function ($query) use ($frameworkId) { + $query->where('framework_id', $frameworkId); + })->where('transformasi_id', $transformasiId)->find($id); + + if (!$aktivitas) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data aktivitas tidak ditemukan.' + ], 404); + } + + $validated = $request->validate([ + 'kode' => ['required','string','max:255'], + 'nama' => ['required','string','max:255'], + 'jenis_aktivitas' => ['required','string','max:255', Rule::in(['tujuan', 'aktivitas']),], + 'indikator' => ['required','string'], + 'deskripsi' => ['required','string'], + ]); + + $aktivitas->update([...$validated, + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Aktivitas berhasil diperbarui.' + ], 200); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $frameworkId, string $transformasiId, string $id) + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $aktivitas = Aktivitas::whereHas('transformasi', function ($query) use ($frameworkId) { + $query->where('framework_id', $frameworkId); + })->where('transformasi_id', $transformasiId)->find($id); + + if (!$aktivitas) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data aktivitas tidak ditemukan.' + ], 404); + } + + $aktivitas->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Aktivitas berhasil dihapus.' + ], 200); + } +} diff --git a/app/Http/Controllers/Web/Program/FrameworkController.php b/app/Http/Controllers/Web/Program/FrameworkController.php new file mode 100644 index 0000000..365d6fe --- /dev/null +++ b/app/Http/Controllers/Web/Program/FrameworkController.php @@ -0,0 +1,164 @@ +query('per_page', 10); + $search = $request->query('search', ''); + + $framework = Framework::where('nama', 'like', "%$search%") + ->paginate($perPage); + + return view('program.framework.index', compact('title', 'framework')); + } + + /** + * Show the form for creating a new resource. + */ + public function create(): View + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $program = Program::all(); + + return view('program.framework.add', compact('program')); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request): RedirectResponse + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + if (app()->has('SystemProgram')) { + $program = app('SystemProgram'); + } else { + if ($request->has('program_id') && $request->input('program_id')) { + $programId = $request->input('program_id'); + $program = Program::find($programId); + if (!$program) { + abort(400, 'Program tidak ditemukan.'); + } + } else { + abort(400, 'Program tidak ditemukan.'); + } + } + + $validatedData = $request->validate([ + 'nama' => ['required','string','max:255'], + 'tahun' => ['required','integer'] + ]); + $framework = Framework::create( + [...$validatedData, + 'program_id' => $program->id, + ] + ); + return redirect()->route('framework.index')->with('success', 'Data berhasil ditambahkan.'); + } + + /** + * Display the specified resource. + */ + public function show(Request $request, string $id): View + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $framework = Framework::findOrFail($id); + + return view('program.framework.view', compact('framework')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Request $request, string $id): View + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $framework = Framework::findOrFail($id); + $program = Program::all(); + + return view('program.framework.edit', compact('framework', 'program')); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $id): RedirectResponse + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $framework = Framework::findOrFail($id); + + if (app()->has('SystemProgram')) { + $program = app('SystemProgram'); + } else { + if ($request->has('program_id') && $request->input('program_id')) { + $programId = $request->input('program_id'); + $program = Program::find($programId); + if (!$program) { + abort(400, 'Program tidak ditemukan.'); + } + } else { + abort(400, 'Program tidak ditemukan.'); + } + } + + $validatedData = $request->validate([ + 'nama' => ['required','string','max:255'], + 'tahun' => ['required','integer'] + ]); + + $framework->update( + [...$validatedData, + 'program_id' => $program->id, + ] + ); + + return redirect()->route('framework.index')->with('success', 'Data berhasil diperbarui.'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id): RedirectResponse + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $framework = Framework::findOrFail($id); + $framework->delete(); + + return redirect()->route('framework.index')->with('success', 'Data berhasil dihapus.'); + } +} diff --git a/app/Http/Controllers/Web/Program/TargetController.php b/app/Http/Controllers/Web/Program/TargetController.php new file mode 100644 index 0000000..b47ee4f --- /dev/null +++ b/app/Http/Controllers/Web/Program/TargetController.php @@ -0,0 +1,143 @@ +validate([ + 'variabel' => ['required','string','max:255'], + 'tipe' => ['required','string','max:255', Rule::in(['integer', 'float', 'boolean']),], + 'target_integer' => [ + Rule::requiredIf($request->tipe === 'integer'), + 'nullable', + 'integer' + ], + 'target_float' => [ + Rule::requiredIf($request->tipe === 'float'), + 'nullable', + 'numeric' + ], + 'target_boolean' => [ + Rule::requiredIf($request->tipe === 'boolean'), + 'nullable', + 'boolean' + ], + 'baseline_integer' => [ + Rule::requiredIf($request->tipe === 'integer'), + 'nullable', + 'integer' + ], + 'baseline_float' => [ + Rule::requiredIf($request->tipe === 'float'), + 'nullable', + 'numeric' + ], + 'baseline_boolean' => [ + Rule::requiredIf($request->tipe === 'boolean'), + 'nullable', + 'boolean' + ], + 'realisasi_integer' => [ + 'nullable', + 'integer' + ], + 'realisasi_float' => [ + 'nullable', + 'numeric' + ], + 'realisasi_boolean' => [ + 'nullable', + 'boolean' + ], + ]); + } + + public function create(string $frameworkId, string $transformasiId, string $aktivitasId) + { + + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request, string $frameworkId, string $transformasiId, string $aktivitasId): JsonResponse + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $aktivitas = Aktivitas::whereHas('transformasi', function ($query) use ($frameworkId) { + $query->where('framework_id', $frameworkId); + })->where('transformasi_id', $transformasiId)->find($aktivitasId); + if (!$aktivitas) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data aktivitas tidak ditemukan.' + ], 404); + } + + $validated = $this->validated($request); + Target::create([...$validated, + 'aktivitas_id' => $aktivitasId, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Target berhasil ditambahkan.' + ], 201); + } + + /** + * Display the specified resource. + */ + public function show(string $id) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $id) + { + // + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $id) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + // + } +} diff --git a/app/Http/Controllers/Web/Program/TransformasiController.php b/app/Http/Controllers/Web/Program/TransformasiController.php new file mode 100644 index 0000000..dca73fb --- /dev/null +++ b/app/Http/Controllers/Web/Program/TransformasiController.php @@ -0,0 +1,129 @@ +json([ + 'status' => 'error', + 'message' => 'Data kerangka kerja tidak ditemukan.' + ], 404); + } + + $validated = $request->validate([ + 'kode' => ['required','string','max:255'], + 'nama' => ['required','string','max:255'], + ]); + + Transformasi::create([...$validated, + 'framework_id' => $frameworkId, + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Transformasi berhasil ditambahkan.' + ], 201); + } + + public function show(string $frameworkId, string $id) + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $transformasi = Transformasi::where('framework_id', $frameworkId)->find($id); + if (!$transformasi) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data transformasi tidak ditemukan.' + ], 404); + } + + return response()->json(['data' => $transformasi, 'status' => 'success']); + } + + public function edit(string $frameworkId, string $id) + { + // + } + + public function update(Request $request, string $frameworkId, string $id) + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $transformasi = Transformasi::where('framework_id', $frameworkId)->find($id); + if (!$transformasi) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data transformasi tidak ditemukan.' + ], 404); + } + + $validated = $request->validate([ + 'kode' => ['required','string','max:255'], + 'nama' => ['required','string','max:255'], + ]); + + $transformasi->update([...$validated, + 'framework_id' => $frameworkId, + 'updated_by' => auth()->id(), + ]); + + return response()->json([ + 'status' => 'success', + 'message' => 'Transformasi berhasil diperbarui.' + ], 200); + } + + public function destroy(string $frameworkId, string $id) + { + if (!Gate::any(['super_admin', 'admin'])) { + abort(403); + } + + $transformasi = Transformasi::where('framework_id', $frameworkId)->find($id); + if (!$transformasi) { + return response()->json([ + 'status' => 'error', + 'message' => 'Data transformasi tidak ditemukan.' + ], 404); + } + + $transformasi->delete(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Transformasi berhasil dihapus.' + ], 200); + } +} diff --git a/app/Models/Program/Aktivitas.php b/app/Models/Program/Aktivitas.php new file mode 100644 index 0000000..4e471d0 --- /dev/null +++ b/app/Models/Program/Aktivitas.php @@ -0,0 +1,37 @@ +belongsTo(Transformasi::class, 'transformasi_id', 'id'); + } + + public function target(): HasMany + { + return $this->hasMany(Target::class, 'aktivitas_id', 'id'); + } +} diff --git a/app/Models/Program/Framework.php b/app/Models/Program/Framework.php new file mode 100644 index 0000000..5740a89 --- /dev/null +++ b/app/Models/Program/Framework.php @@ -0,0 +1,34 @@ +belongsTo(Program::class, 'program_id', 'id'); + } + + public function transformasi(): HasMany + { + return $this->hasMany(Transformasi::class, 'framework_id', 'id'); + } +} diff --git a/app/Models/Program/Target.php b/app/Models/Program/Target.php new file mode 100644 index 0000000..a1a791a --- /dev/null +++ b/app/Models/Program/Target.php @@ -0,0 +1,36 @@ +belongsTo(Aktivitas::class, 'aktivitas_id', 'id'); + } +} diff --git a/app/Models/Program/Transformasi.php b/app/Models/Program/Transformasi.php new file mode 100644 index 0000000..9e2bd68 --- /dev/null +++ b/app/Models/Program/Transformasi.php @@ -0,0 +1,34 @@ +belongsTo(Framework::class, 'framework_id', 'id'); + } + + public function aktivitas(): HasMany + { + return $this->hasMany(Aktivitas::class, 'transformasi_id', 'id'); + } +} diff --git a/database/migrations/2026_04_23_154710_create_frameworks_table.php b/database/migrations/2026_04_23_154710_create_frameworks_table.php new file mode 100644 index 0000000..1eec177 --- /dev/null +++ b/database/migrations/2026_04_23_154710_create_frameworks_table.php @@ -0,0 +1,140 @@ +id(); + + $table->string('nama'); + $table->integer('tahun'); + + $table->foreignId('program_id')->nullable()->constrained('core_program')->nullOnDelete(); + + $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('deleted_by')->nullable()->constrained('users')->onDelete('set null'); + + $table->timestamps(); + $table->softDeletes(); + }); + + Schema::create('program_transformasi', function (Blueprint $table) { + $table->id(); + + $table->string('kode'); + $table->string('nama'); + + $table->foreignId('framework_id')->nullable()->constrained('program_framework')->nullOnDelete(); + + $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('deleted_by')->nullable()->constrained('users')->onDelete('set null'); + + $table->timestamps(); + $table->softDeletes(); + }); + + Schema::create('program_aktivitas', function (Blueprint $table) { + $table->id(); + + $table->string('kode'); + $table->string('nama', length: 1000); + $table->enum('jenis_aktivitas', ['tujuan', 'aktivitas'])->default('aktivitas'); + $table->string('indikator', length: 1000); + + $table->text('deskripsi')->nullable(); + + $table->foreignId('transformasi_id')->nullable()->constrained('program_transformasi')->nullOnDelete(); + + $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('deleted_by')->nullable()->constrained('users')->onDelete('set null'); + + $table->timestamps(); + $table->softDeletes(); + }); + + Schema::create('program_target', function (Blueprint $table) { + $table->id(); + + $table->string('variabel'); + $table->enum('tipe', ['integer', 'float', 'boolean'])->default('integer'); + + $table->integer('target_integer')->nullable(); + $table->float('target_float', 10, 2)->nullable(); + $table->boolean('target_boolean')->nullable(); + + $table->integer('baseline_integer')->nullable(); + $table->float('baseline_float', 10, 2)->nullable(); + $table->boolean('baseline_boolean')->nullable(); + + $table->integer('realisasi_integer')->nullable(); + $table->float('realisasi_float', 10, 2)->nullable(); + $table->boolean('realisasi_boolean')->nullable(); + + $table->foreignId('aktivitas_id')->nullable()->constrained('program_aktivitas')->nullOnDelete(); + + $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('deleted_by')->nullable()->constrained('users')->onDelete('set null'); + + $table->timestamps(); + $table->softDeletes(); + }); + + Schema::create('program_verifikasi', function (Blueprint $table) { + $table->id(); + + $table->string('dokumen'); + $table->string('link_dokumen', length: 1000)->nullable(); + + $table->foreignId('aktivitas_id')->nullable()->constrained('program_aktivitas')->nullOnDelete(); + + $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('deleted_by')->nullable()->constrained('users')->onDelete('set null'); + + $table->timestamps(); + $table->softDeletes(); + }); + + Schema::create('program_realisasi', function (Blueprint $table) { + $table->id(); + + $table->integer('realisasi_integer')->nullable(); + $table->float('realisasi_float', 10, 2)->nullable(); + $table->boolean('realisasi_boolean')->nullable(); + + $table->foreignId('target_id')->nullable()->constrained('program_target')->nullOnDelete(); + + $table->foreignId('created_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('updated_by')->nullable()->constrained('users')->onDelete('set null'); + $table->foreignId('deleted_by')->nullable()->constrained('users')->onDelete('set null'); + + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('program_realisasi'); + Schema::dropIfExists('program_target'); + Schema::dropIfExists('program_verifikasi'); + Schema::dropIfExists('program_aktivitas'); + Schema::dropIfExists('program_transformasi'); + Schema::dropIfExists('program_framework'); + } +}; diff --git a/resources/views/program/aktivitas/add.blade.php b/resources/views/program/aktivitas/add.blade.php new file mode 100644 index 0000000..dcf4a96 --- /dev/null +++ b/resources/views/program/aktivitas/add.blade.php @@ -0,0 +1,99 @@ +
+
+
Tambah Aktivitas
+ +
+
+
+ @csrf + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/aktivitas/edit.blade.php b/resources/views/program/aktivitas/edit.blade.php new file mode 100644 index 0000000..ac3e5ac --- /dev/null +++ b/resources/views/program/aktivitas/edit.blade.php @@ -0,0 +1,118 @@ +
+
+
Update Aktivitas
+ +
+
+
+ @csrf + @method('PUT') + + + + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/framework/add.blade.php b/resources/views/program/framework/add.blade.php new file mode 100644 index 0000000..b61d368 --- /dev/null +++ b/resources/views/program/framework/add.blade.php @@ -0,0 +1,80 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Tambah Kerangka Kerja Baru
+
+ +
+
+ @csrf + +
Informasi Kerangka Kerja
+
+
+ + + @error('nama')
{{ $message }}
@enderror +
+
+ + + @error('tahun')
{{ $message }}
@enderror +
+
+ + + @error('program_id')
{{ $message }}
@enderror +
+
+ +
+ Kembali + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/framework/edit.blade.php b/resources/views/program/framework/edit.blade.php new file mode 100644 index 0000000..b35f5c7 --- /dev/null +++ b/resources/views/program/framework/edit.blade.php @@ -0,0 +1,81 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Edit Kerangka Kerja
+
+ +
+
+ @csrf + @method('PUT') + +
Informasi Kerangka Kerja
+
+
+ + + @error('nama')
{{ $message }}
@enderror +
+
+ + + @error('tahun')
{{ $message }}
@enderror +
+
+ + + @error('program_id')
{{ $message }}
@enderror +
+
+ +
+ Kembali + +
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/framework/index.blade.php b/resources/views/program/framework/index.blade.php new file mode 100644 index 0000000..56cd1cd --- /dev/null +++ b/resources/views/program/framework/index.blade.php @@ -0,0 +1,111 @@ +@extends('layout.main') + +@section('content') +
+
+
+
+
+
+ + + +
+
+
+
+ + +
+ + Tambah + +
+
+
+ +
+ + + + + + + + + + + + @forelse($framework as $index => $frm) + + + + + + + + @empty + + + + @endforelse + +
NoNama FrameworkTahunProgramAksi
{{ $loop->iteration }}{{ $frm->nama }}{{ $frm->tahun }}{{ $frm->program?->nama }} +
+ + + +
+
Tidak ada data ditemukan.
+
+ + +
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/framework/view.blade.php b/resources/views/program/framework/view.blade.php new file mode 100644 index 0000000..f97466b --- /dev/null +++ b/resources/views/program/framework/view.blade.php @@ -0,0 +1,237 @@ +@extends('layout.main') + +@section('content') +
+
+
+
Edit Kerangka Kerja
+
+ +
+
+ @csrf + +
Informasi Kerangka Kerja
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
Informasi Rencana Kerja
+ +
+
+
+ +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + @forelse($framework->transformasi as $transformasi) + @foreach($transformasi->aktivitas as $aktivitas) + @foreach($aktivitas->target as $target) + + + + + + + + + + + @endforeach + @endforeach + @empty + + + + @endforelse + +
TransformasiTujuan Jangka Pendek/AktivitasDeskripsiIndikatorVariabelTargetBaselineAksi
{{ $transformasi->kode }} {{ $transformasi->nama }}{{ $aktivitas->nama }}{{ $aktivitas->deskripsi }}{{ $aktivitas->indikator }}{{ $target->variabel }} + @if($target->tipe === 'integer') + {{ $target->target_integer }} + @elseif($target->tipe === 'float') + {{ $target->target_float }} + @elseif($target->tipe === 'boolean') + {{ $target->target_boolean ? 'Ya' : 'Tidak' }} + @endif + + @if($target->tipe === 'integer') + {{ $target->baseline_integer }} + @elseif($target->tipe === 'float') + {{ $target->baseline_float }} + @elseif($target->tipe === 'boolean') + {{ $target->baseline_boolean ? 'Ya' : 'Tidak' }} + @endif + + +
Tidak ada data ditemukan.
+
+ +
+
+ +
+ Kembali +
+
+
+
+ @include('program.transformasi.add') + @include('program.transformasi.edit') + @include('program.aktivitas.add') + @include('program.aktivitas.edit') + @include('program.target.add') +
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/target/add.blade.php b/resources/views/program/target/add.blade.php new file mode 100644 index 0000000..dded5ec --- /dev/null +++ b/resources/views/program/target/add.blade.php @@ -0,0 +1,150 @@ +
+
+
Tambah Target
+ +
+
+
+ @csrf + + + + +
+ + +
+
+ + +
+
+ + + + + +
+
+ + + + + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/transformasi/add.blade.php b/resources/views/program/transformasi/add.blade.php new file mode 100644 index 0000000..3f2bf84 --- /dev/null +++ b/resources/views/program/transformasi/add.blade.php @@ -0,0 +1,76 @@ +
+
+
Tambah Transformasi
+ +
+
+
+ @csrf + +
+ + +
+
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/resources/views/program/transformasi/edit.blade.php b/resources/views/program/transformasi/edit.blade.php new file mode 100644 index 0000000..1a847ab --- /dev/null +++ b/resources/views/program/transformasi/edit.blade.php @@ -0,0 +1,97 @@ +
+
+
Edit Transformasi
+ +
+
+
+ @csrf + @method('PUT') + + + +
+ + +
+
+ + +
+ + + +
+
+
+ +@push('scripts') + +@endpush \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 1640d75..35232b8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -117,4 +117,10 @@ Route::middleware('auth') Route::put('tabel/{tabelId}/kolom/{id}/move-down', [App\Http\Controllers\Web\Ekosistem\KolomBasisDataController::class, 'moveDown'])->name('tabel.kolom.move-down'); Route::resource('tabel.kolom', App\Http\Controllers\Web\Ekosistem\KolomBasisDataController::class)->only(['show', 'store', 'update', 'destroy']); Route::resource('tabel.data', App\Http\Controllers\Web\Ekosistem\ValueBasisDataController::class); + + // Monev + Route::resource('framework', App\Http\Controllers\Web\Program\FrameworkController::class); + Route::resource('framework.transformasi', App\Http\Controllers\Web\Program\TransformasiController::class)->only(['show', 'store', 'update', 'destroy']); + Route::resource('framework.transformasi.aktivitas', App\Http\Controllers\Web\Program\AktivitasController::class)->only(['show', 'store', 'update', 'destroy']); + Route::resource('framework.transformasi.aktivitas.target', App\Http\Controllers\Web\Program\TargetController::class)->only(['show', 'store', 'update', 'destroy']); }); \ No newline at end of file