'Layanan Perizinan Lingkungan', 'subtitle' => 'Informasi terkini mengenai berbagai layanan perizinan dan penilaian dampak lingkungan' ]; // Tabs data $tabs = [ ['id' => 'amdal', 'label' => 'AMDAL'], ['id' => 'uklupl', 'label' => 'UKL-UPL'], ['id' => 'addendum', 'label' => 'Addendum'], ['id' => 'audit', 'label' => 'AUDIT'] ]; // Contents data from database $contents = [ 'amdal' => $this->getKegiatanByJenis('AMDAL'), 'uklupl' => $this->getKegiatanByJenis('UKL-UPL'), 'addendum' => $this->getKegiatanByJenis('Addendum'), 'audit' => $this->getKegiatanByJenis('AUDIT', true) // Special format for audit ]; return response()->json([ 'header' => $header, 'tabs' => $tabs, 'contents' => $contents ]); } /** * Get kegiatan data by document type */ private function getKegiatanByJenis($jenis, $isAudit = false) { $kegiatan = InformasiKegiatan::where('JenisDokumen', $jenis) ->where('Status', 'aktif') ->whereDate('TanggalSelesaiPeriode', '>=', Carbon::now()) ->orderBy('TanggalMulaiPeriode', 'desc') ->take(10) ->get(); if ($isAudit) { // Format untuk audit table return $kegiatan->map(function ($item, $index) { return [ 'no' => $index + 1, 'company' => $item->Pemrakarsa, 'title' => $item->NamaKegiatan, 'description' => $item->DeskripsiKegiatan, 'link' => route('layanan.detail', $item->KegiatanID) ]; })->toArray(); } else { // Format untuk standard items return $kegiatan->map(function ($item) { return [ 'id' => $item->KegiatanID, 'title' => $item->NamaKegiatan, 'description' => $item->DeskripsiKegiatan, 'periode' => $this->formatPeriode($item->TanggalMulaiPeriode, $item->TanggalSelesaiPeriode), 'link' => route('layanan.detail', $item->KegiatanID), 'status' => $item->Status, 'pemrakarsa' => $item->Pemrakarsa, 'jenis_dokumen' => $item->JenisDokumen, 'no_registrasi' => $item->NoRegistrasi ]; })->toArray(); } } /** * Format periode display */ private function formatPeriode($tanggalMulai, $tanggalSelesai) { $mulai = Carbon::parse($tanggalMulai); $selesai = Carbon::parse($tanggalSelesai); return $mulai->format('d M') . ' - ' . $selesai->format('d M Y'); } /** * Get detail kegiatan for feedback form */ public function getDetailKegiatan($id) { $kegiatan = InformasiKegiatan::findOrFail($id); return response()->json([ 'id' => $kegiatan->KegiatanID, 'no_registrasi' => $kegiatan->NoRegistrasi, 'jenis_dokumen' => $kegiatan->JenisDokumen, 'nama_kegiatan' => $kegiatan->NamaKegiatan, 'bidang_usaha' => $kegiatan->BidangUsaha, 'skala_besaran' => $kegiatan->SkalaBesaran, 'lokasi_kegiatan' => $kegiatan->LokasiKegiatan, 'kewenangan' => $kegiatan->Kewenangan, 'pemrakarsa' => $kegiatan->Pemrakarsa, 'provinsi_kota' => $kegiatan->ProvinsiKota, 'deskripsi_kegiatan' => $kegiatan->DeskripsiKegiatan, 'dampak_potensial' => $kegiatan->DampakPotensial, 'deskripsi_lokasi' => $kegiatan->DeskripsiLokasi, 'latitude' => $kegiatan->Latitude, 'longitude' => $kegiatan->Longitude, 'periode' => $this->formatPeriode($kegiatan->TanggalMulaiPeriode, $kegiatan->TanggalSelesaiPeriode) ]); } /** * Get wilayah data (Kabupaten, Kecamatan, Kelurahan) */ public function getWilayahData() { $kabupaten = Kabupaten::orderBy('NamaKabupaten')->get(); $kecamatan = Kecamatan::orderBy('NamaKecamatan')->get(); $kelurahan = Kelurahan::orderBy('NamaKelurahan')->get(); return response()->json([ 'kabkota' => $kabupaten->map(function($item) { return [ 'value' => $item->KabupatenId, 'label' => $item->NamaKabupaten ]; }), 'kecamatan' => $kecamatan->map(function($item) { return [ 'value' => $item->KecamatanId, 'label' => $item->NamaKecamatan, 'kabupaten_id' => $item->KabupatenId ]; }), 'kelurahan' => $kelurahan->map(function($item) { return [ 'value' => $item->KelurahanId, 'label' => $item->NamaKelurahan, 'kecamatan_id' => $item->KecamatanId ]; }) ]); } /** * Get filtered kegiatan data */ public function getFilteredKegiatan(Request $request) { $query = InformasiKegiatan::where('Status', 'aktif') ->whereDate('TanggalSelesaiPeriode', '>=', Carbon::now()); // Filter by search term if ($request->search) { $query->where(function($q) use ($request) { $q->where('NamaKegiatan', 'ILIKE', '%' . $request->search . '%') ->orWhere('DeskripsiKegiatan', 'ILIKE', '%' . $request->search . '%') ->orWhere('Pemrakarsa', 'ILIKE', '%' . $request->search . '%'); }); } // Filter by document type if ($request->jenis_dokumen) { $allowedTypes = ['AMDAL', 'UKL-UPL', 'Addendum', 'AUDIT']; if (in_array($request->jenis_dokumen, $allowedTypes)) { $query->where('JenisDokumen', $request->jenis_dokumen); } } // Filter by location (you can extend this based on your needs) if ($request->kabkota) { $query->where('ProvinsiKota', 'ILIKE', '%' . $request->kabkota . '%'); } $kegiatan = $query->orderBy('TanggalMulaiPeriode', 'desc')->get(); // Group by document type $groupedKegiatan = $kegiatan->groupBy('JenisDokumen'); $contents = []; foreach ($groupedKegiatan as $jenis => $items) { $key = strtolower($jenis); if ($jenis === 'AUDIT') { $contents[$key] = $items->map(function ($item, $index) { return [ 'no' => $index + 1, 'company' => $item->Pemrakarsa, 'title' => $item->NamaKegiatan, 'description' => $item->DeskripsiKegiatan, 'link' => route('layanan.detail', $item->KegiatanID) ]; })->toArray(); } else { $contents[$key] = $items->map(function ($item) { return [ 'id' => $item->KegiatanID, 'title' => $item->NamaKegiatan, 'description' => $item->DeskripsiKegiatan, 'periode' => $this->formatPeriode($item->TanggalMulaiPeriode, $item->TanggalSelesaiPeriode), 'link' => route('layanan.detail', $item->KegiatanID), 'status' => $item->Status, 'pemrakarsa' => $item->Pemrakarsa, 'jenis_dokumen' => $item->JenisDokumen, 'no_registrasi' => $item->NoRegistrasi ]; })->toArray(); } } return response()->json($contents); } }