This commit is contained in:
2026-06-02 16:34:29 +07:00
40 changed files with 2321 additions and 396 deletions
@@ -54,11 +54,10 @@ class TabelBasisDataController extends Controller
abort(403);
}
$tabel = TabelBasisData::with('kolom')->findOrFail($id);
$tabel = TabelBasisData::with('kolom', 'form', 'form.form', 'form.form.form', 'form.form.form.kolom')->findOrFail($id);
return (new TabelBasisDataResource($tabel))
->response()
->setStatusCode(201);
->response();
}
/**
@@ -94,20 +94,24 @@ class TanamanController extends Controller
if (!Gate::any(['petani', 'fasilitator','super_admin'])) {
abort(403);
}
$profile = Auth::user()->profile;
$user = Auth::user();
$profile = $user->profile;
$profileId = $user->role === 'petani' ? $profile->id : $request->profile_id;
$request->merge([
'komoditas_id' => $request->input('komoditas.id') ?? $request->input('komoditas_id'),
'lahan_id' => $request->input('lahan.id') ?? $request->input('lahan_id'),
'profile_id' => $profile->id
'profile_id' => $profileId,
]);
$validated = $request->validate([
'nama' => ['required', 'string', 'max:255'],
'komoditas_id' => ['required', 'exists:master_komoditas,id'],
'lahan_id' => [
'required',
Rule::exists('map_lahan', 'id')->where(function ($query) use ($profile) {
$query->where('profile_id', $profile->id)
Rule::exists('map_lahan', 'id')->where(function ($query) use ($profileId) {
$query->where('profile_id', $profileId)
->whereNull('deleted_at');
}),
],
@@ -10,6 +10,7 @@ use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Illuminate\Http\RedirectResponse;
use App\Models\Ekosistem\TabelBasisData;
use App\Models\Ekosistem\FormBasisData;
@@ -12,6 +12,7 @@ use Illuminate\Support\Facades\Validator;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Illuminate\Support\Arr;
use App\Models\Ekosistem\TabelBasisData;
use App\Models\Ekosistem\KolomBasisData;
@@ -21,6 +22,13 @@ use App\Models\Core\Program;
class ValueBasisDataController extends Controller
{
private $tableModelClassMap = [
'master_provinsi' => \App\Models\Wilayah\Provinsi::class,
'master_kabupaten_kota' => \App\Models\Wilayah\KabupatenKota::class,
'master_kecamatan' => \App\Models\Wilayah\Kecamatan::class,
'master_desa_kelurahan' => \App\Models\Wilayah\DesaKelurahan::class,
];
public function index(Request $request, string $tabelId): View
{
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
@@ -166,7 +174,7 @@ class ValueBasisDataController extends Controller
if (!Gate::any(['super_admin', 'admin'])) {
abort(403);
}
$tabel = TabelBasisData::with('kolom')
->whereHas('kolom', function ($query) {
$query->where('is_active', true);
@@ -198,7 +206,12 @@ class ValueBasisDataController extends Controller
if ($k->tipe == 'foreign_key') {
$relasi['kolom_id'] = $k->id;
try {
$options_kolom = DB::table($k->relasi_tabel)->selectRaw($k->relasi_kolom_label . ' as label, ' . $k->relasi_kolom_id . ' as value')->whereNull('deleted_at');
$modelClass = Arr::get($this->tableModelClassMap, 'master_desa_kelurahan');
if ($modelClass) {
$options_kolom = $modelClass::select($k->relasi_kolom_label . ' as label', $k->relasi_kolom_id . ' as value')->limit(10000);
} else {
$options_kolom = DB::table($k->relasi_tabel)->selectRaw($k->relasi_kolom_label . ' as label, ' . $k->relasi_kolom_id . ' as value')->whereNull('deleted_at')->limit(10000);
}
$relasi['options'] = $options_kolom->get();
$relasi['sql'] = $options_kolom->toSql();
} catch (\Throwable $th) {
@@ -281,9 +294,6 @@ class ValueBasisDataController extends Controller
return redirect()->route('tabel.data.index', [$tabelId, 'program_id' => $program->id])->with('success', 'Data berhasil ditambahkan.');
}
/**
* Display the specified resource.
*/
public function show(Request $request, string $tabelId, string $id): View
{
if (!Gate::any(['super_admin', 'admin'])) {
@@ -329,7 +339,9 @@ class ValueBasisDataController extends Controller
foreach ($values as $v) {
$k = $kolom->where('id', $v->kolom_id)->first();
if ($k->tipe == 'foreign_key') {
$v->value_relasi_label = DB::table($k->relasi_tabel)->where($k->relasi_kolom_id, $v->value_relasi)->value($k->relasi_kolom_label);
$v->value_relasi_label = DB::table($k->relasi_tabel)
->where($k->relasi_kolom_id, $v->value_relasi)
->value($k->relasi_kolom_label);
} else if ($k->tipe == 'enum') {
$opsi = collect($k->enum_opsi);
$found = $opsi->first(function ($item) use ($v) {
@@ -393,7 +405,12 @@ class ValueBasisDataController extends Controller
if ($k->tipe == 'foreign_key') {
$relasi['kolom_id'] = $k->id;
try {
$options_kolom = DB::table($k->relasi_tabel)->selectRaw($k->relasi_kolom_label . ' as label, ' . $k->relasi_kolom_id . ' as value')->whereNull('deleted_at');
$modelClass = Arr::get($this->tableModelClassMap, 'master_desa_kelurahan');
if ($modelClass) {
$options_kolom = $modelClass::select($k->relasi_kolom_label . ' as label', $k->relasi_kolom_id . ' as value')->limit(10000);
} else {
$options_kolom = DB::table($k->relasi_tabel)->selectRaw($k->relasi_kolom_label . ' as label, ' . $k->relasi_kolom_id . ' as value')->whereNull('deleted_at')->limit(10000);
}
$relasi['options'] = $options_kolom->get();
$relasi['sql'] = $options_kolom->toSql();
} catch (\Throwable $th) {
@@ -0,0 +1,228 @@
<?php
namespace App\Http\Controllers\Web\Master;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Master\JenisKomoditas;
use App\Models\Pertanian\Komoditas;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
class JenisKomoditasController extends Controller
{
public function index(Request $request)
{
$perPage = $request->get('per_page', 10);
$search = $request->get('search');
$jenisKomoditas = JenisKomoditas::with('komoditas')
->when($search, function ($query) use ($search) {
$query->where(function ($q) use ($search) {
$q->where('nama', 'ILIKE', "%{$search}%")
->orWhere('path', 'ILIKE', "%{$search}%")
->orWhereHas('komoditas', function ($komoditasQuery) use ($search) {
$komoditasQuery->where('nama', 'ILIKE', "%{$search}%");
});
});
})
->latest()
->paginate($perPage);
$komoditas = Komoditas::orderBy('nama', 'asc')->get();
return view('master.jeniskomoditas.index', compact(
'jenisKomoditas',
'komoditas'
));
}
public function getByKomoditas($komoditas_id)
{
$jenisKomoditas = JenisKomoditas::where('komoditas_id', $komoditas_id)
->orderBy('nama', 'asc')
->get(['id', 'nama']);
return response()->json([
'status' => 'success',
'data' => $jenisKomoditas,
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$validated = $request->validate([
'komoditas_id' => [
'required',
'integer',
'exists:master_komoditas,id',
],
'nama' => [
'required',
'string',
'max:255',
Rule::unique('jenis_komoditas', 'nama')
->where('komoditas_id', $request->komoditas_id),
],
], [
'komoditas_id.required' => 'Komoditas wajib dipilih.',
'komoditas_id.exists' => 'Komoditas yang dipilih tidak valid.',
'nama.required' => 'Nama jenis komoditas wajib diisi.',
'nama.unique' => 'Nama jenis komoditas sudah tersedia pada komoditas ini.',
]);
try {
DB::beginTransaction();
$jenisKomoditas = JenisKomoditas::create([
'komoditas_id' => $validated['komoditas_id'],
'nama' => $validated['nama'],
'created_by' => auth()->id(),
'updated_by' => auth()->id(),
]);
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Data jenis komoditas berhasil disimpan.',
'data' => $jenisKomoditas,
]);
} catch (\Throwable $e) {
DB::rollBack();
Log::error('Gagal menyimpan jenis komoditas', [
'error' => $e->getMessage(),
'request' => $request->all(),
]);
return response()->json([
'status' => 'error',
'message' => 'Gagal menyimpan data: ' . $e->getMessage(),
], 500);
}
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
try {
$jenisKomoditas = JenisKomoditas::with('komoditas')->findOrFail($id);
return response()->json([
'status' => 'success',
'data' => $jenisKomoditas,
]);
} catch (\Throwable $e) {
return response()->json([
'status' => 'error',
'message' => 'Data jenis komoditas tidak ditemukan.',
], 404);
}
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
$jenisKomoditas = JenisKomoditas::findOrFail($id);
$validated = $request->validate([
'komoditas_id' => [
'required',
'integer',
'exists:master_komoditas,id',
],
'nama' => [
'required',
'string',
'max:255',
Rule::unique('jenis_komoditas', 'nama')
->where('komoditas_id', $request->komoditas_id)
->ignore($jenisKomoditas->id),
],
'path' => [
'nullable',
'string',
],
], [
'komoditas_id.required' => 'Komoditas wajib dipilih.',
'komoditas_id.exists' => 'Komoditas yang dipilih tidak valid.',
'nama.required' => 'Nama jenis komoditas wajib diisi.',
'nama.unique' => 'Nama jenis komoditas sudah tersedia pada komoditas ini.',
]);
try {
DB::beginTransaction();
$jenisKomoditas->update([
'komoditas_id' => $validated['komoditas_id'],
'nama' => $validated['nama'],
'updated_by' => auth()->id(),
]);
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Data jenis komoditas berhasil diperbarui.',
'data' => $jenisKomoditas->fresh('komoditas'),
]);
} catch (\Throwable $e) {
DB::rollBack();
Log::error('Gagal update jenis komoditas', [
'error' => $e->getMessage(),
'id' => $id,
'request' => $request->all(),
]);
return response()->json([
'status' => 'error',
'message' => 'Gagal mengupdate data: ' . $e->getMessage(),
], 500);
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
try {
DB::beginTransaction();
$jenisKomoditas = JenisKomoditas::findOrFail($id);
$jenisKomoditas->update(['deleted_by' => auth()->id()]);
$jenisKomoditas->delete();
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Data jenis komoditas berhasil dihapus.',
]);
} catch (\Throwable $e) {
DB::rollBack();
Log::error('Gagal hapus jenis komoditas', [
'error' => $e->getMessage(),
'id' => $id,
]);
return response()->json([
'status' => 'error',
'message' => 'Gagal menghapus data: ' . $e->getMessage(),
], 500);
}
}
}
@@ -0,0 +1,226 @@
<?php
namespace App\Http\Controllers\Web\Master;
use App\Http\Controllers\Controller;
use App\Models\Master\Varietas;
use App\Models\Pertanian\Komoditas;
use App\Models\Master\JenisKomoditas;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Illuminate\Http\Request;
class VarietasController extends Controller
{
public function index(Request $request)
{
$perPage = $request->get('per_page', 10);
$search = $request->get('search');
$varietas = Varietas::with(['komoditas', 'jenisKomoditas'])
->when($search, function ($query) use ($search) {
$query->where(function ($q) use ($search) {
$q->where('nama', 'ILIKE', "%{$search}%")
->orWhere('path', 'ILIKE', "%{$search}%")
->orWhereHas('komoditas', function ($komoditasQuery) use ($search) {
$komoditasQuery->where('nama', 'ILIKE', "%{$search}%");
})
->orWhereHas('jenisKomoditas', function ($jenisQuery) use ($search) {
$jenisQuery->where('nama', 'ILIKE', "%{$search}%");
});
});
})
->latest()
->paginate($perPage);
$komoditas = Komoditas::orderBy('nama', 'asc')->get();
return view('master.varietas.index', compact(
'varietas',
'komoditas'
));
}
public function store(Request $request)
{
$komoditasTable = (new Komoditas)->getTable();
$jenisKomoditasTable = (new JenisKomoditas)->getTable();
$varietasTable = (new Varietas)->getTable();
$validated = $request->validate([
'komoditas_id' => [
'required',
'integer',
Rule::exists($komoditasTable, 'id'),
],
'jenis_komoditas_id' => [
'required',
'integer',
Rule::exists($jenisKomoditasTable, 'id')
->where('komoditas_id', $request->komoditas_id),
],
'nama' => [
'required',
'string',
'max:255',
Rule::unique($varietasTable, 'nama')
->where('komoditas_id', $request->komoditas_id)
->where('jenis_komoditas_id', $request->jenis_komoditas_id),
],
'deskripsi' => [
'nullable',
'string',
],
]);
try {
DB::beginTransaction();
$varietas = Varietas::create([
'komoditas_id' => $validated['komoditas_id'],
'jenis_komoditas_id' => $validated['jenis_komoditas_id'],
'nama' => $validated['nama'],
'deskripsi' => $validated['deskripsi'] ?? null,
'created_by' => auth()->id(),
'updated_by' => auth()->id(),
]);
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Data varietas berhasil disimpan.',
'data' => $varietas,
]);
} catch (\Throwable $e) {
DB::rollBack();
Log::error('Gagal menyimpan varietas', [
'error' => $e->getMessage(),
'request' => $request->all(),
]);
return response()->json([
'status' => 'error',
'message' => 'Gagal menyimpan data: ' . $e->getMessage(),
], 500);
}
}
public function show(string $id)
{
try {
$varietas = Varietas::with(['komoditas', 'jenisKomoditas'])->findOrFail($id);
return response()->json([
'status' => 'success',
'data' => $varietas,
]);
} catch (\Throwable $e) {
return response()->json([
'status' => 'error',
'message' => 'Data varietas tidak ditemukan.',
], 404);
}
}
public function update(Request $request, string $id)
{
$komoditasTable = (new Komoditas)->getTable();
$jenisKomoditasTable = (new JenisKomoditas)->getTable();
$varietasTable = (new Varietas)->getTable();
$validated = $request->validate([
'komoditas_id' => [
'required',
'integer',
Rule::exists($komoditasTable, 'id'),
],
'jenis_komoditas_id' => [
'required',
'integer',
Rule::exists($jenisKomoditasTable, 'id')
->where('komoditas_id', $request->komoditas_id),
],
'nama' => [
'required',
'string',
'max:255',
Rule::unique($varietasTable, 'nama')
->where('komoditas_id', $request->komoditas_id)
->where('jenis_komoditas_id', $request->jenis_komoditas_id),
],
'deskripsi' => [
'nullable',
'string',
],
]);
try {
DB::beginTransaction();
$varietas = Varietas::findOrFail($id);
$varietas->update([
'komoditas_id' => $validated['komoditas_id'],
'jenis_komoditas_id' => $validated['jenis_komoditas_id'],
'nama' => $validated['nama'],
'deskripsi' => $validated['deskripsi'] ?? null,
'updated_by' => auth()->id(),
]);
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Data varietas berhasil diperbarui.',
'data' => $varietas->fresh(['komoditas', 'jenisKomoditas']),
]);
} catch (\Throwable $e) {
DB::rollBack();
Log::error('Gagal update varietas', [
'error' => $e->getMessage(),
'id' => $id,
'request' => $request->all(),
]);
return response()->json([
'status' => 'error',
'message' => 'Gagal mengupdate data: ' . $e->getMessage(),
], 500);
}
}
public function destroy(string $id)
{
try {
DB::beginTransaction();
$varietas = Varietas::findOrFail($id);
$varietas->update(['deleted_by' => auth()->id()]);
$varietas->delete();
DB::commit();
return response()->json([
'status' => 'success',
'message' => 'Data varietas berhasil dihapus.',
]);
} catch (\Throwable $e) {
DB::rollBack();
Log::error('Gagal hapus varietas', [
'error' => $e->getMessage(),
'id' => $id,
]);
return response()->json([
'status' => 'error',
'message' => 'Gagal menghapus data: ' . $e->getMessage(),
], 500);
}
}
}
@@ -7,6 +7,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use Illuminate\View\View;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;
use App\Models\Program\Framework;
use App\Models\Program\Realisasi;
@@ -26,7 +27,89 @@ class RealisasiController extends Controller
abort(404);
}
return view('program.realisasi.index', compact('framework'));
$ringkasanIsiRealisasi = DB::select('select count(pt.id) count_target, sum(case when rl.id > 0 then 1 else 0 end) count_realisasi
from program_target pt
inner join program_aktivitas pa on pt.aktivitas_id = pa.id
inner join program_transformasi ptr on pa.transformasi_id = ptr.id
inner join program_framework pf on ptr.framework_id = pf.id
left join
(select target_id, max(id) id from program_realisasi pr
group by target_id) rl on pt.id = rl.target_id
where
pt.deleted_at is null
and pa.deleted_at is null
and ptr.deleted_at is null
and pf.id = ?
', [$framework->id]);
$ringkasanIsiRealisasi = collect($ringkasanIsiRealisasi)->map(function ($item) {
$item->persentase = $item->count_target > 0 ? round(($item->count_realisasi / $item->count_target) * 100, 2) : 0;
return $item;
})->first();
$ringkasanCapaianRealisasi = DB::select("select round(avg(percent_realisasi)::numeric * 100, 2) persentase,
sum(case when percent_realisasi >= 0.8 then 1 else 0 end) capaian_80,
sum(case when percent_realisasi >= 0.5 and percent_realisasi < 0.8 then 1 else 0 end) capaian_50_80,
sum(case when percent_realisasi < 0.5 then 1 else 0 end) capaian_50
from
(select pt.id target_id, pr.id realisasi_id,
pt.tipe,
case
when pt.tipe = 'integer' then pt.target_integer
when pt.tipe = 'float' then pt.target_float
when pt.tipe = 'boolean' then pt.target_boolean::integer
end target,
case
when pt.tipe = 'integer' then pr.realisasi_integer
when pt.tipe = 'float' then pr.realisasi_float
when pt.tipe = 'boolean' then pr.realisasi_boolean::integer
end realisasi,
case
when pt.tipe = 'integer' then pr.realisasi_integer::float / pt.target_integer::float
when pt.tipe = 'float' then pr.realisasi_float / pt.target_float
when pt.tipe = 'boolean' then pr.realisasi_boolean::integer / pt.target_boolean::integer
end percent_realisasi
from program_target pt
inner join program_aktivitas pa on pt.aktivitas_id = pa.id
inner join program_transformasi ptr on pa.transformasi_id = ptr.id
inner join program_framework pf on ptr.framework_id = pf.id
left join
(select target_id, max(id) id from program_realisasi pr
group by target_id) rl on pt.id = rl.target_id
left join program_realisasi pr on rl.id = pr.id and pr.target_id = pt.id
where
pt.deleted_at is null
and pa.deleted_at is null
and ptr.deleted_at is null
and pf.id = ?) v",
[$framework->id]);
$ringkasanCapaianRealisasi = collect($ringkasanCapaianRealisasi)->first();
$ringkasanVerifikasi = DB::select("select count(pt.id) count_target,
sum(case when count_verifikasi > 0 then 1 else 0 end) count_verifikasi,
sum(case when count_verifikasi = 0 or count_verifikasi is null then 1 else 0 end) count_unverifikasi
from program_target pt
inner join program_aktivitas pa on pt.aktivitas_id = pa.id
inner join program_transformasi ptr on pa.transformasi_id = ptr.id
inner join program_framework pf on ptr.framework_id = pf.id
left join
(select target_id, max(id) id from program_realisasi pr
group by target_id) rl on pt.id = rl.target_id
left join
(select realisasi_id, count(pv.id) count_verifikasi from program_verifikasi pv
group by realisasi_id) rv
on rv.realisasi_id = rl.id
where
pt.deleted_at is null
and pa.deleted_at is null
and ptr.deleted_at is null
and pf.id = ?",
[$framework->id]);
$ringkasanVerifikasi = collect($ringkasanVerifikasi)->map(function ($item) {
$item->persentase = $item->count_target > 0 ? round(($item->count_verifikasi / $item->count_target) * 100, 2) : 0;
return $item;
})->first();
return view('program.realisasi.index', compact('framework', 'ringkasanIsiRealisasi', 'ringkasanCapaianRealisasi', 'ringkasanVerifikasi'));
}
public function create()
@@ -64,7 +147,7 @@ class RealisasiController extends Controller
abort(403);
}
$realisasi = Realisasi::with('target', 'target.aktivitas', 'target.aktivitas.transformasi')
$realisasi = Realisasi::with('target', 'target.aktivitas', 'target.aktivitas.transformasi', 'verifikasi')
->find($id);
if (!$realisasi) {
return response()->json([
@@ -17,9 +17,9 @@ class VerifikasiController extends Controller
/**
* Display a listing of the resource.
*/
public function index()
public function index(Request $request): JsonResponse
{
//
}
/**
@@ -83,8 +83,25 @@ class VerifikasiController extends Controller
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
public function destroy(string $id): JsonResponse
{
//
if (!Gate::any(['super_admin', 'admin'])) {
abort(403);
}
$verifikasi = Verifikasi::find($id);
if (!$verifikasi) {
return response()->json([
'status' => 'error',
'message' => 'Data verifikasi tidak ditemukan.'
], 404);
}
$verifikasi->update(['updated_by' => auth()->id()]);
$verifikasi->delete();
return response()->json([
'status' => 'success',
'message' => 'Dokumen bukti berhasil dihapus.'
]);
}
}
@@ -49,6 +49,7 @@ class ProgramController extends Controller
'sub_domain' => ['required', Rule::unique(Program::class, 'sub_domain')],
'tahun' => ['required', 'integer'],
'instansi' => ['nullable', 'string'],
'nama_singkat' => ['required', 'string'],
]);
if ($validator->fails()) {
@@ -94,6 +95,9 @@ class ProgramController extends Controller
$validator = Validator::make($request->all(), [
'nama' => ['required'],
'sub_domain' => ['required', Rule::unique(Program::class, 'sub_domain')->ignore($id)],
'tahun' => ['required', 'integer'],
'instansi' => ['nullable', 'string'],
'nama_singkat' => ['required', 'string'],
]);
if ($validator->fails()) {
@@ -106,9 +110,7 @@ class ProgramController extends Controller
return redirect()->route('program.index')->with('error', 'Data program tidak ditemukan!');
}
$program->update([
'nama' => $request->nama,
'sub_domain' => $request->sub_domain,
$program->update([...$validator->validated(),
'updated_by' => auth()->id(),
]);
@@ -22,6 +22,7 @@ class ProgramResource extends JsonResource
'sub_domain' => $this->sub_domain,
'tahun' => $this->tahun,
'instansi' => $this->instansi,
'nama_singkat' => $this->nama_singkat,
'komoditas' => $this->komoditas()->with('komoditas')->get()->map(function ($item) {
return new ProgramKomoditasResource($item);
}),
@@ -0,0 +1,32 @@
<?php
namespace App\Http\Resources\Ekosistem;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use App\Http\Resources\Ekosistem\KolomBasisDataResource;
class FormBasisDataResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'tabel_id' => $this->tabel_id,
'parent_id' => $this->parent_id,
'tipe' => $this->tipe,
'column_width' => $this->column_width,
'kolom_id' => $this->kolom_id,
'section_label' => $this->section_label,
'urutan' => $this->urutan,
'kolom' => new KolomBasisDataResource($this->whenLoaded('kolom')),
'form' => FormBasisDataResource::collection($this->whenLoaded('form')),
];
}
}
@@ -29,6 +29,7 @@ class TabelBasisDataResource extends JsonResource
// 'group' => new GroupBasisDataResource($this->whenLoaded('group')),
'kolom' => KolomBasisDataResource::collection($this->whenLoaded('kolom')),
//'ringkasan' => RingkasanBasisDataResource::collection($this->whenLoaded('ringkasan')),
'form' => FormBasisDataResource::collection($this->whenLoaded('form')),
];
}
}