first(); // // Inisialisasi query untuk proyek // $query = permohonanProject::query(); // // Memastikan preferensi ada // if ($preferences) { // // Filter proyek berdasarkan kategori jika kategori ada // if (!empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori, true); // if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { // $query->whereIn('kategori', $kategoriPreferences); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Kategori tidak valid.']); // } // } // // Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada // if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { // $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true); // // Memastikan $bidangPreferences adalah array dan tidak kosong // if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // // Membuat query untuk mencocokkan kata kunci dalam bidang_sub_sektor_ekonomi_kreatif // $query->where(function ($subQuery) use ($bidangPreferences) { // foreach ($bidangPreferences as $bidang) { // $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); // } // }); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang sub sektor ekonomi kreatif tidak valid.']); // } // } // // Filter berdasarkan batas terima tawaran jika ada // if (!empty($preferences->batas_terima_tawaran)) { // $query->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); // } // // Memeriksa preferensi nominal_min dan nominal_max // if (isset($preferences->range_min, $preferences->range_max)) { // $rangeMin = $preferences->range_min; // $rangeMax = $preferences->range_max; // // Menambahkan filter untuk range_min dan range_max // $query->where(function ($q) use ($rangeMin, $rangeMax) { // $q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('biaya', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('anggaran', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('nominal', [$rangeMin, $rangeMax]); // }); // }); // } // // Filter berdasarkan status jika diberikan // if (!empty($preferences->status)) { // $statusPreferences = json_decode($preferences->status, true); // if (is_array($statusPreferences) && count($statusPreferences) > 0) { // $query->where(function ($q) use ($statusPreferences) { // $q->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pelatihan', $statusPreferences); // }) // ->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pendanaan', $statusPreferences); // }); // }); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Status tidak valid.']); // } // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Preferensi tidak ditemukan.']); // } // // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); // // Cek jika proyek ditemukan // if ($projects->isEmpty()) { // return view('pemerintah.index', ['message' => 'Data Not Found: Tidak ada proyek yang ditemukan.']); // } // return view('pemerintah.index', ['projects' => $projects]); // } // public function index(Request $request) // { // // Mengambil preferensi pengguna // $preferences = PreferencesPermohonan::where('user_id', Auth::id())->first(); // // Inisialisasi query untuk proyek // $query = permohonanProject::query(); // // Memastikan preferensi ada // if ($preferences) { // // Filter proyek berdasarkan kategori jika kategori ada // if (!empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori, true); // if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { // $query->whereIn('kategori', $kategoriPreferences); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Kategori tidak valid.']); // } // } // // Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada // if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { // $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true); // // Memastikan $bidangPreferences adalah array dan tidak kosong // if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // // Membuat query untuk mencocokkan kata kunci dalam bidang_sub_sektor_ekonomi_kreatif // $query->where(function ($subQuery) use ($bidangPreferences) { // foreach ($bidangPreferences as $bidang) { // $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); // } // }); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang sub sektor ekonomi kreatif tidak valid.']); // } // } // // Filter berdasarkan batas terima tawaran jika ada // if (!empty($preferences->batas_terima_tawaran)) { // $query->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); // } // // Filter berdasarkan range nominal jika diberikan // if (isset($preferences->range_min, $preferences->range_max)) { // $rangeMin = $preferences->range_min; // $rangeMax = $preferences->range_max; // // Menambahkan filter untuk range_min dan range_max di berbagai kategori // $query->where(function ($q) use ($rangeMin, $rangeMax) { // $q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('biaya', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('anggaran', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('nominal', [$rangeMin, $rangeMax]); // }); // }); // } // // Filter berdasarkan status jika diberikan // if (!empty($preferences->status)) { // $statusPreferences = json_decode($preferences->status, true); // if (is_array($statusPreferences) && count($statusPreferences) > 0) { // $query->where(function ($q) use ($statusPreferences) { // $q->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pelatihan', $statusPreferences); // }) // ->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pendanaan', $statusPreferences); // }); // }); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Status tidak valid.']); // } // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Preferensi tidak ditemukan.']); // } // // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); // // Cek jika proyek ditemukan // if ($projects->isEmpty()) { // return view('pemerintah.index', ['message' => 'Data Not Found: Tidak ada proyek yang ditemukan.']); // } // return view('pemerintah.index', ['projects' => $projects]); // } // public function index(Request $request) // { // // Mengambil preferensi pengguna // $preferences = PreferencesPermohonan::where('user_id', Auth::id())->first(); // // Inisialisasi query untuk proyek // $query = permohonanProject::query(); // // Memastikan preferensi ada // if ($preferences) { // // Filter proyek berdasarkan kategori jika kategori ada // if (!empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori, true); // if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { // $query->whereIn('kategori', $kategoriPreferences); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Kategori tidak valid.']); // } // } // // Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada // if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { // $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true); // // Memastikan $bidangPreferences adalah array dan tidak kosong // if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // // Membuat query untuk mencocokkan kata kunci dalam bidang_sub_sektor_ekonomi_kreatif // $query->where(function ($subQuery) use ($bidangPreferences) { // foreach ($bidangPreferences as $bidang) { // $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); // } // }); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang sub sektor ekonomi kreatif tidak valid.']); // } // } // // Filter berdasarkan batas terima tawaran jika ada // if (!empty($preferences->batas_terima_tawaran)) { // $query->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); // } // // Filter berdasarkan range nominal jika diberikan // if (isset($preferences->range_min, $preferences->range_max)) { // $rangeMin = $preferences->range_min; // $rangeMax = $preferences->range_max; // // Menambahkan filter untuk range_min dan range_max di berbagai kategori // $query->where(function ($q) use ($rangeMin, $rangeMax) { // $q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('biaya', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('anggaran', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) { // $query->whereBetween('nominal', [$rangeMin, $rangeMax]); // }); // }); // } // // Filter berdasarkan status jika diberikan // if (!empty($preferences->status)) { // $statusPreferences = json_decode($preferences->status, true); // if (is_array($statusPreferences) && count($statusPreferences) > 0) { // $query->where(function ($q) use ($statusPreferences) { // $q->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pelatihan', $statusPreferences); // }) // ->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pendanaan', $statusPreferences); // }); // }); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Status tidak valid.']); // } // } // // Ambil semua preferensi pengguna lain untuk perhitungan cosine similarity // $allPreferences = PreferencesPermohonan::where('user_id', '!=', Auth::id())->get(); // // Buat matriks preferensi // $userPreferencesMatrix = []; // foreach ($allPreferences as $pref) { // $userPreferencesMatrix[$pref->user_id] = json_decode($pref->kategori, true); // } // // Menghitung Cosine Similarity dengan preferensi pengguna yang sedang login // $currentUserPreferences = json_decode($preferences->kategori, true); // $similarities = []; // foreach ($userPreferencesMatrix as $userId => $projectIds) { // $similarity = $this->cosineSimilarity($currentUserPreferences, $projectIds); // $similarities[$userId] = $similarity; // } // // Mengurutkan pengguna berdasarkan kesamaan tertinggi // arsort($similarities); // $topUsers = array_keys(array_slice($similarities, 0, 5, true)); // Ambil 5 pengguna teratas // // Mengumpulkan proyek yang direkomendasikan dari pengguna teratas // $recommendedProjects = []; // foreach ($topUsers as $userId) { // $userProjectIds = $userPreferencesMatrix[$userId]; // foreach ($userProjectIds as $projectId) { // if (!in_array($projectId, json_decode($preferences->kategori, true))) { // $recommendedProjects[$projectId] = true; // Menyimpan proyek yang belum dilihat // } // } // } // // Mengambil proyek yang direkomendasikan // if (!empty($recommendedProjects)) { // $query->orWhereIn('id', array_keys($recommendedProjects)); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Preferensi tidak ditemukan.']); // } // // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); // // Cek jika proyek ditemukan // if ($projects->isEmpty()) { // return view('pemerintah.index', ['message' => 'Data Not Found: Tidak ada proyek yang ditemukan.']); // } // return view('pemerintah.index', ['projects' => $projects]); // } // // Fungsi untuk menghitung cosine similarity // private function cosineSimilarity($currentUserPrefs, $otherUserPrefs) // { // // Membuat vektor dari preferensi // $currentUserVector = array_fill_keys(array_keys($otherUserPrefs), 0); // foreach ($currentUserPrefs as $pref) { // $currentUserVector[$pref] = 1; // Atau gunakan rating jika ada // } // // Menghitung dot product dan magnitudes // $dotProduct = 0; // $magnitudeA = 0; // $magnitudeB = 0; // foreach ($currentUserVector as $projectId => $value) { // if (isset($otherUserPrefs[$projectId])) { // $dotProduct += $value * 1; // Asumsikan preferensi pengguna lain adalah 1 jika ada // } // $magnitudeA += $value * $value; // $magnitudeB += (isset($otherUserPrefs[$projectId]) ? 1 : 0) * (isset($otherUserPrefs[$projectId]) ? 1 : 0); // } // if ($magnitudeA == 0 || $magnitudeB == 0) { // return 0; // Mencegah pembagian dengan nol // } // return $dotProduct / (sqrt($magnitudeA) * sqrt($magnitudeB)); // } public function index(Request $request) { // Mengambil preferensi pengguna $preferences = Preference::where('user_id', Auth::id())->first(); // Inisialisasi query untuk proyek $query = permohonanProject::query(); // Memastikan preferensi ada if ($preferences) { // Filter proyek berdasarkan kategori jika kategori ada if (!empty($preferences->kategori)) { $kategoriPreferences = json_decode($preferences->kategori, true); if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { $query->whereIn('kategori', $kategoriPreferences); } } // Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true); if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // Gunakan where untuk mencocokkan semua bidang $query->where(function ($subQuery) use ($bidangPreferences) { foreach ($bidangPreferences as $bidang) { $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); } }); } } // Filter berdasarkan batas terima tawaran jika ada // if (!empty($preferences->batas_terima_tawaran)) { // $query->where('batas_terima_tawaran', '>=', now()); // Perbaikan: Memastikan batas tawaran masih berlaku // } if (!empty($preferences->batas_terima_tawaran)) { $query->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); } // Filter berdasarkan range nominal jika diberikan if (isset($preferences->range_min, $preferences->range_max)) { $rangeMin = $preferences->range_min; $rangeMax = $preferences->range_max; $query->where(function ($q) use ($rangeMin, $rangeMax) { $q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('biaya', [$rangeMin, $rangeMax]); }) ->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]); }) ->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('anggaran', [$rangeMin, $rangeMax]); }) ->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('nominal', [$rangeMin, $rangeMax]); }); }); } // Filter berdasarkan status jika diberikan if (!empty($preferences->status)) { $statusPreferences = json_decode($preferences->status, true); if (is_array($statusPreferences) && count($statusPreferences) > 0) { $query->where(function ($q) use ($statusPreferences) { $q->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { $subQuery->whereIn('status_pelatihan', $statusPreferences); }) ->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { $subQuery->whereIn('status_pendanaan', $statusPreferences); }); }); } } // Tambahan filter berdasarkan audiens if (!empty($preferences->audiens)) { $query->whereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { // Filter audiens di relasi pelatihan $pelatihanQuery->where('audiens', 'LIKE', '%' . $preferences->audiens . '%'); }); } // Tambahan filter berdasarkan benefit if (!empty($preferences->benefit)) { $query->where(function ($q) use ($preferences) { // Filter benefit dari tabel utama $q->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { $pelatihanQuery->where('benefit_pelatihan', 'LIKE', '%' . $preferences->benefit . '%'); }) // Filter benefit dari relasi riset ->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('benefit_riset', 'LIKE', '%' . $preferences->benefit . '%'); }) // Filter benefit dari relasi pendanaan ->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) { $pendanaanQuery->where('benefit_pendanaan', 'LIKE', '%' . $preferences->benefit . '%'); }); }); } // Tambahan filter berdasarkan lokasi if (!empty($preferences->lokasi)) { $query->where(function ($q) use ($preferences) { // Filter lokasi dari tabel utama $q->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { $pelatihanQuery->where('lokasi_pelatihan', 'LIKE', '%' . $preferences->lokasi . '%'); }) // Filter lokasi dari relasi pendanaan ->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) { $pendanaanQuery->where('lokasi_pendanaan', 'LIKE', '%' . $preferences->lokasi . '%'); }) // Filter lokasi dari relasi riset ->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('lokasi_riset', 'LIKE', '%' . $preferences->lokasi . '%'); }); }); } // Tambahan filter berdasarkan metodologi if (!empty($preferences->metodologi)) { $query->where(function ($q) use ($preferences) { // Filter metodologi dari tabel utama $q->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%'); }); }); } // Tambahan filter berdasarkan rincian kebutuhan if (!empty($preferences->rincian_kebutuhan)) { $query->where('rincian_kebutuhan', 'LIKE', '%' . $preferences->rincian_kebutuhan . '%'); } // Tambahan filter berdasarkan penerima manfaat if (!empty($preferences->penerima_manfaat)) { $query->where('penerima_manfaat_pengguna_project', 'LIKE', '%' . $preferences->penerima_manfaat . '%'); } } else { return view('pemerintah.index', ['message' => 'Data Rekomendasi tidak ditemukan. Silahkan perbarui preferensi anda di profil']); } // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); $projects = $query->paginate(6); // Cek jika proyek ditemukan if ($projects->isEmpty()) { return view('pemerintah.index', ['message' => 'Data Not Found: Tidak ada program yang ditemukan.']); } return view('pemerintah.index', ['projects' => $projects]); } public function search(Request $request) { // Ambil input pencarian dari request $search = $request->input('search'); // Inisialisasi query untuk proyek $query = permohonanProject::query(); // Filter proyek berdasarkan input pencarian jika ada if (!empty($search)) { $query->where(function ($q) use ($search) { $q->where('judul_project', 'LIKE', '%' . $search . '%') ->orWhere('latar_belakang', 'LIKE', '%' . $search . '%') ->orWhere('kategori', 'LIKE', '%' . $search . '%') ->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $search . '%') ->orWhere('penerima_manfaat_pengguna_project', 'LIKE', '%' . $search . '%') ->orWhere('parameter_kesuksesan', 'LIKE', '%' . $search . '%') ->orWhere('rincian_kebutuhan', 'LIKE', '%' . $search . '%') ->orWhere('deskripsi_kolaborasi', 'LIKE', '%' . $search . '%') ->orWhere('kata_kunci', 'LIKE', '%' . $search . '%') ->orWhere('solusi_project', 'LIKE', '%' . $search . '%'); }); } // Mengambil preferensi pengguna $preferences = Preference::where('user_id', Auth::id())->first(); // Memastikan preferensi ada if ($preferences) { // Filter proyek berdasarkan kategori jika kategori ada if (!empty($preferences->kategori)) { $kategoriPreferences = json_decode($preferences->kategori, true); if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { $query->whereIn('kategori', $kategoriPreferences); } } // Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true); if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { $query->where(function ($subQuery) use ($bidangPreferences) { foreach ($bidangPreferences as $bidang) { $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); } }); } } // Filter berdasarkan batas terima tawaran jika ada if (!empty($preferences->batas_terima_tawaran)) { $query->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); } // Filter berdasarkan range nominal jika diberikan if (isset($preferences->range_min, $preferences->range_max)) { $rangeMin = $preferences->range_min; $rangeMax = $preferences->range_max; $query->where(function ($q) use ($rangeMin, $rangeMax) { $q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('biaya', [$rangeMin, $rangeMax]); }) ->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]); }) ->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('anggaran', [$rangeMin, $rangeMax]); }) ->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('nominal', [$rangeMin, $rangeMax]); }); }); } // Filter berdasarkan status jika diberikan if (!empty($preferences->status)) { $statusPreferences = json_decode($preferences->status, true); if (is_array($statusPreferences) && count($statusPreferences) > 0) { $query->where(function ($q) use ($statusPreferences) { $q->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { $subQuery->whereIn('status_pelatihan', $statusPreferences); }) ->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { $subQuery->whereIn('status_pendanaan', $statusPreferences); }); }); } } // Tambahan filter berdasarkan audiens if (!empty($preferences->audiens)) { $query->whereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { $pelatihanQuery->where('audiens', 'LIKE', '%' . $preferences->audiens . '%'); }); } // Tambahan filter berdasarkan benefit if (!empty($preferences->benefit)) { $query->where(function ($q) use ($preferences) { $q->where('benefit', 'LIKE', '%' . $preferences->benefit . '%') ->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { $pelatihanQuery->where('benefit_pelatihan', 'LIKE', '%' . $preferences->benefit . '%'); }) ->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('benefit_riset', 'LIKE', '%' . $preferences->benefit . '%'); }) ->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) { $pendanaanQuery->where('benefit_pendanaan', 'LIKE', '%' . $preferences->benefit . '%'); }); }); } // Tambahan filter berdasarkan lokasi if (!empty($preferences->lokasi)) { $query->where(function ($q) use ($preferences) { $q->where('lokasi', 'LIKE', '%' . $preferences->lokasi . '%') ->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { $pelatihanQuery->where('lokasi_pelatihan', 'LIKE', '%' . $preferences->lokasi . '%'); }) ->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) { $pendanaanQuery->where('lokasi_pendanaan', 'LIKE', '%' . $preferences->lokasi . '%'); }) ->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('lokasi_riset', 'LIKE', '%' . $preferences->lokasi . '%'); }); }); } // Tambahan filter berdasarkan metodologi if (!empty($preferences->metodologi)) { $query->where(function ($q) use ($preferences) { $q->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%') ->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%'); }); }); } // Tambahan filter berdasarkan rincian kebutuhan if (!empty($preferences->rincian_kebutuhan)) { $query->where('rincian_kebutuhan', 'LIKE', '%' . $preferences->rincian_kebutuhan . '%'); } // Tambahan filter berdasarkan penerima manfaat if (!empty($preferences->penerima_manfaat)) { $query->where('penerima_manfaat', 'LIKE', '%' . $preferences->penerima_manfaat . '%'); } } // Jalankan query dan ambil hasilnya $projects = $query->paginate(6); // Tampilkan hasil jika ada proyek yang ditemukan if ($projects->isEmpty()) { return view('pemerintah.index', ['message' => 'Tidak ada program yang ditemukan.']); } return view('pemerintah.index', ['projects' => $projects]); } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(Request $request) { // } /** * 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) { // } }