role; // // Menentukan kategori yang diizinkan berdasarkan peran pengguna // $allowedCategories = []; // switch ($userRole) { // case 'umkm': // $allowedCategories = ['Riset', 'Pelatihan', 'Project Investor']; // break; // case 'akademisi': // $allowedCategories = ['Pelatihan']; // break; // case 'komunitas': // $allowedCategories = ['Pelatihan']; // break; // case 'pemerintah': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // case 'investor': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // default: // $allowedCategories = []; // } // // Query builder untuk proyek // $query = Project::query(); // // Menambahkan filter kategori jika kategori yang diizinkan ditentukan // if (!empty($allowedCategories)) { // $query->whereIn('kategori', $allowedCategories); // } // // Menambahkan filter jika ada parameter // if ($request->has('judul_project') && $request->input('judul_project') != '') { // $query->where('judul_project', 'like', '%' . $request->input('judul_project') . '%'); // } // if ($request->has('bidang') && $request->input('bidang') != '') { // $query->where('bidang_sub_sektor_ekonomi_kreatif', 'like', '%' . $request->input('bidang') . '%'); // } // if ($request->has('tanggal_mulai') && $request->input('tanggal_mulai') != '') { // $query->whereDate('tanggal_mulai', '>=', $request->input('tanggal_mulai')); // } // if ($request->has('tanggal_berakhir') && $request->input('tanggal_berakhir') != '') { // $query->whereDate('tanggal_berakhir', '<=', $request->input('tanggal_berakhir')); // } // if ($request->has('kategori') && $request->input('kategori') != '') { // $query->where('kategori', $request->input('kategori')); // } // if ($request->has('batas_terima_tawaran') && $request->input('batas_terima_tawaran') != '') { // $query->whereDate('batas_terima_tawaran', '<=', $request->input('batas_terima_tawaran')); // } // // Mengambil proyek yang sudah difilter // $projects = $query->get(); // return view('akademisi.index', ['projects' => $projects]); // } // public function index(Request $request) // { // // Mendapatkan peran pengguna yang terautentikasi // $userRole = Auth::user()->role; // // Menentukan kategori yang diizinkan berdasarkan peran pengguna // $allowedCategories = []; // switch ($userRole) { // case 'umkm': // $allowedCategories = ['Riset', 'Pelatihan', 'Project Investor']; // break; // case 'akademisi': // $allowedCategories = ['Pelatihan','Riset']; // break; // case 'komunitas': // $allowedCategories = ['Pelatihan']; // break; // case 'pemerintah': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // case 'investor': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // default: // $allowedCategories = []; // } // // Inisialisasi query untuk proyek // $query = permohonanProject::query(); // // Filter hanya proyek yang sesuai dengan kategori yang diizinkan jika ada // if (!empty($allowedCategories)) { // $query->whereIn('kategori', $allowedCategories); // } // // Filter berdasarkan bidang sub sektor ekonomi kreatif jika diberikan // if ($request->has('bidang_sub_sektor_ekonomi_kreatif') && !empty($request->input('bidang_sub_sektor_ekonomi_kreatif'))) { // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $request->input('bidang_sub_sektor_ekonomi_kreatif')); // } // // Filter berdasarkan kategori jika diberikan // if ($request->has('kategori') && !empty($request->input('kategori'))) { // $query->whereIn('kategori', $request->input('kategori')); // } // // Filter berdasarkan batas terima tawaran jika diberikan // if ($request->has('batas_terima_tawaran') && !empty($request->input('batas_terima_tawaran'))) { // $query->where('batas_terima_tawaran', $request->input('batas_terima_tawaran')); // } // // Filter berdasarkan nominal kebutuhan jika diberikan // if ($request->has('nominal_min') && $request->has('nominal_max') && !empty($request->input('nominal_min')) && !empty($request->input('nominal_max'))) { // $query->whereBetween('nominal_kebutuhan', [$request->input('nominal_min'), $request->input('nominal_max')]); // } // // Filter berdasarkan status jika diberikan // if ($request->has('status') && !empty($request->input('status'))) { // $status = $request->input('status'); // $query->whereHas('pelatihan', function ($subQuery) use ($status) { // $subQuery->where('status_pelatihan', $status); // })->orWhereHas('pendanaan', function ($subQuery) use ($status) { // $subQuery->where('status_pendanaan', $status); // }); // } // // Mengambil proyek sesuai dengan filter yang diterapkan // // Jika tidak ada filter yang diterapkan, ambil semua proyek // $projects = $query->get(); // return view('akademisi.index', ['projects' => $projects]); // } // public function index(Request $request) // { // // Mendapatkan peran pengguna yang terautentikasi // $userRole = Auth::user()->role; // // Menentukan kategori yang diizinkan berdasarkan peran pengguna // $allowedCategories = []; // switch ($userRole) { // case 'umkm': // $allowedCategories = ['Riset', 'Pelatihan', 'Project Investor']; // break; // case 'akademisi': // $allowedCategories = ['Pelatihan', 'Riset']; // break; // case 'komunitas': // $allowedCategories = ['Pelatihan']; // break; // case 'pemerintah': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // case 'investor': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // default: // $allowedCategories = []; // } // // Inisialisasi query untuk proyek permohonan // $permohonanQuery = permohonanProject::query(); // // Filter hanya proyek yang sesuai dengan kategori yang diizinkan // if (!empty($allowedCategories)) { // $permohonanQuery->whereIn('kategori', $allowedCategories); // } // // Filter berdasarkan bidang sub sektor ekonomi kreatif jika diberikan // if ($request->has('bidang_sub_sektor_ekonomi_kreatif') && !empty($request->input('bidang_sub_sektor_ekonomi_kreatif'))) { // $permohonanQuery->whereIn('bidang_sub_sektor_ekonomi_kreatif', $request->input('bidang_sub_sektor_ekonomi_kreatif')); // } // // Filter berdasarkan batas terima tawaran jika diberikan // if ($request->has('batas_terima_tawaran') && !empty($request->input('batas_terima_tawaran'))) { // $permohonanQuery->where('batas_terima_tawaran', $request->input('batas_terima_tawaran')); // } // if ($request->has('kategori') && $request->input('kategori') != '') { // $permohonanQuery->where('kategori', $request->input('kategori')); // } // // Filter berdasarkan nominal kebutuhan jika diberikan // if ( // $request->has('nominal_min') && $request->has('nominal_max') && // !empty($request->input('nominal_min')) && !empty($request->input('nominal_max')) // ) { // $permohonanQuery->whereBetween('nominal_kebutuhan', [ // $request->input('nominal_min'), // $request->input('nominal_max') // ]); // } // // Mengambil proyek permohonan // $projectsPermohonan = $permohonanQuery->get(); // // Debugging untuk proyek permohonan // // dd('Proyek Permohonan:', $projectsPermohonan); // // Inisialisasi query untuk proyek penawaran // $penawaranQuery = PenawaranProject::query(); // // Filter hanya proyek yang sesuai dengan kategori Pendanaan // $penawaranQuery->where('jenis_penawaran', 'pendanaan'); // // Filter berdasarkan bidang sub sektor ekonomi kreatif jika diberikan // if ($request->has('bidang_sub_sektor_ekonomi_kreatif') && !empty($request->input('bidang_sub_sektor_ekonomi_kreatif'))) { // $penawaranQuery->whereIn('bidang_sub_sektor_ekonomi_kreatif', $request->input('bidang_sub_sektor_ekonomi_kreatif')); // } // // Filter berdasarkan status jika diberikan // if ($request->has('status') && !empty($request->input('status'))) { // $penawaranQuery->where('status', $request->input('status')); // } // if ($request->has('jenis_penawaran') && $request->input('jenis_penawaran') != '') { // $penawaranQuery->where('jenis_penawaran', $request->input('jenis_penawaran')); // } // if ($request->has('batas_terima_tawaran') && !empty($request->input('batas_terima_tawaran'))) { // $penawaranQuery->where('batas_terima_tawaran', $request->input('batas_terima_tawaran')); // } // // Mengambil proyek penawaran // $projectsPenawaran = $penawaranQuery->get(); // // Gabungkan hasil proyek permohonan dan penawaran // $projects = $projectsPermohonan->concat($projectsPenawaran); // Menggunakan concat // // Tampilkan hasil proyek // return view('akademisi.index', ['projects' => $projects]); // } // public function index(Request $request) // { // // Mendapatkan peran pengguna yang terautentikasi // $userRole = Auth::user()->role; // // Menentukan kategori yang diizinkan berdasarkan peran pengguna // $allowedCategories = []; // switch ($userRole) { // case 'umkm': // $allowedCategories = ['Riset', 'Pelatihan', 'Project Investor']; // break; // case 'akademisi': // $allowedCategories = ['Pelatihan', 'Riset']; // break; // case 'komunitas': // $allowedCategories = ['Pelatihan']; // break; // case 'pemerintah': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // case 'investor': // $allowedCategories = ['Pendanaan', 'Pelatihan']; // break; // default: // $allowedCategories = []; // } // // Inisialisasi query untuk proyek permohonan // $permohonanQuery = permohonanProject::query(); // // Filter kategori yang diizinkan // if (!empty($allowedCategories)) { // $permohonanQuery->whereIn('kategori', $allowedCategories); // } // // Filter berdasarkan bidang sub sektor ekonomi kreatif jika diberikan // if ($request->filled('bidang_sub_sektor_ekonomi_kreatif')) { // $permohonanQuery->whereIn('bidang_sub_sektor_ekonomi_kreatif', $request->input('bidang_sub_sektor_ekonomi_kreatif')); // } // // Filter berdasarkan batas terima tawaran jika diberikan // if ($request->filled('batas_terima_tawaran')) { // $permohonanQuery->where('batas_terima_tawaran', $request->input('batas_terima_tawaran')); // } // // Filter kategori tambahan jika diberikan // if ($request->filled('kategori')) { // $permohonanQuery->where('kategori', $request->input('kategori')); // } // // Filter berdasarkan nominal kebutuhan jika diberikan // if ($request->filled('nominal_min') && $request->filled('nominal_max')) { // $permohonanQuery->whereBetween('nominal_kebutuhan', [ // $request->input('nominal_min'), // $request->input('nominal_max') // ]); // } // // Mengambil proyek permohonan // $projectsPermohonan = $permohonanQuery->get(); // // Inisialisasi query untuk proyek penawaran // $penawaranQuery = PenawaranProject::query(); // // Filter hanya proyek yang sesuai dengan kategori Pendanaan // $penawaranQuery->where('jenis_penawaran', 'pendanaan'); // // Filter berdasarkan bidang sub sektor ekonomi kreatif jika diberikan // if ($request->filled('bidang_sub_sektor_ekonomi_kreatif')) { // $penawaranQuery->whereIn('bidang_sub_sektor_ekonomi_kreatif', $request->input('bidang_sub_sektor_ekonomi_kreatif')); // } // // Filter berdasarkan status jika diberikan // if ($request->filled('status')) { // $penawaranQuery->where('status', $request->input('status')); // } // // Filter berdasarkan jenis penawaran jika diberikan // if ($request->filled('jenis_penawaran')) { // $penawaranQuery->where('jenis_penawaran', $request->input('jenis_penawaran')); // } // // Filter berdasarkan batas terima tawaran jika diberikan // if ($request->filled('batas_terima_tawaran')) { // $penawaranQuery->where('batas_terima_tawaran', $request->input('batas_terima_tawaran')); // } // // Mengambil proyek penawaran // $projectsPenawaran = $penawaranQuery->get(); // // Gabungkan hasil proyek permohonan dan penawaran // $projects = $projectsPermohonan->concat($projectsPenawaran); // // Tampilkan hasil proyek // return view('akademisi.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(); // $penawaran = PenawaranProject::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('akademisi.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('akademisi.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('akademisi.index', ['message' => 'Data Not Found: Status tidak valid.']); // } // } // } else { // return view('akademisi.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('akademisi.index', ['message' => 'Data Not Found: Tidak ada proyek yang ditemukan.']); // } // return view('akademisi.index', ['projects' => $projects]); // } // public function index(Request $request) // { // // Mengambil preferensi pengguna // $preferences = PreferencesPermohonan::where('user_id', Auth::id())->first(); // // Inisialisasi query untuk proyek permohonan dan penawaran // $queryPermohonan = permohonanProject::query(); // $queryPenawaran = PenawaranProject::query(); // // Memastikan preferensi ada // if ($preferences) { // // Filter berdasarkan kategori jika ada // if (!empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori, true); // if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { // $queryPermohonan->whereIn('kategori', $kategoriPreferences); // $queryPenawaran->whereIn('jenis_penawaran', $kategoriPreferences); // } else { // return view('akademisi.index', ['message' => 'Data Not Found: Kategori tidak valid.']); // } // } // // Filter 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) { // $queryPermohonan->where(function ($subQuery) use ($bidangPreferences) { // foreach ($bidangPreferences as $bidang) { // $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); // } // }); // $queryPenawaran->where(function ($subQuery) use ($bidangPreferences) { // foreach ($bidangPreferences as $bidang) { // $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); // } // }); // } else { // return view('akademisi.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)) { // $queryPermohonan->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); // $queryPenawaran->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; // $queryPermohonan->whereBetween('nominal', [$rangeMin, $rangeMax]); // $queryPenawaran->whereBetween('nominal', [$rangeMin, $rangeMax]); // } // // Filter berdasarkan status permohonan // if (!empty($preferences->status)) { // $statusPreferences = json_decode($preferences->status, true); // if (is_array($statusPreferences) && count($statusPreferences) > 0) { // // Untuk proyek permohonan, filter berdasarkan subquery pelatihan dan pendanaan // $queryPermohonan->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); // }); // }); // // Untuk proyek penawaran, filter berdasarkan kolom status // $queryPenawaran->whereIn('status', $statusPreferences); // } else { // return view('akademisi.index', ['message' => 'Data Not Found: Status tidak valid.']); // } // } // } else { // return view('akademisi.index', ['message' => 'Data Not Found: Preferensi tidak ditemukan.']); // } // // Gabungkan hasil dari query permohonan dan penawaran menggunakan concat // $projects = $queryPermohonan->get()->concat($queryPenawaran->get()); // // Cek jika proyek ditemukan // if ($projects->isEmpty()) { // return view('akademisi.index', ['message' => 'Data Not Found: Tidak ada proyek yang ditemukan.']); // } // return view('akademisi.index', ['projects' => $projects]); // } public function index(Request $request) { // Mengambil preferensi pengguna $preferences = Preference::where('user_id', Auth::id())->first(); // Inisialisasi query untuk proyek $queryPermohonan = permohonanProject::query(); $queryPenawaran = PenawaranProject::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) { $queryPermohonan->whereIn('kategori', $kategoriPreferences); $queryPenawaran->whereIn('jenis_penawaran', $kategoriPreferences); } else { return view('akademisi.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); if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { $queryPermohonan->where(function ($subQuery) use ($bidangPreferences) { foreach ($bidangPreferences as $bidang) { $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); } }); $queryPenawaran->where(function ($subQuery) use ($bidangPreferences) { foreach ($bidangPreferences as $bidang) { $subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); } }); } else { return view('akademisi.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)) { $queryPermohonan->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); $queryPenawaran->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; // $queryPermohonan->whereBetween('nominal', [$rangeMin, $rangeMax]); // $queryPenawaran->whereBetween('nominal', [$rangeMin, $rangeMax]); // } // Filter berdasarkan range nominal jika diberikan if (isset($preferences->range_min, $preferences->range_max)) { $rangeMin = $preferences->range_min; $rangeMax = $preferences->range_max; // Filter untuk permohonan $queryPermohonan->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 untuk penawaran $queryPenawaran->where(function ($q) use ($rangeMin, $rangeMax) { $q->whereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) { $query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]); }); }); } // Filter berdasarkan status jika diberikan if (!empty($preferences->status)) { $statusPreferences = json_decode($preferences->status, true); if (is_array($statusPreferences) && count($statusPreferences) > 0) { // Untuk proyek permohonan, filter berdasarkan subquery pelatihan dan pendanaan $queryPermohonan->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); }); }); // Untuk proyek penawaran, filter berdasarkan kolom status $queryPenawaran->whereIn('status', $statusPreferences); } } // Tambahan filter berdasarkan audiens if (!empty($preferences->audiens)) { $queryPermohonan->whereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { $pelatihanQuery->where('audiens', 'LIKE', '%' . $preferences->audiens . '%'); }); $queryPenawaran->where('audiens', 'LIKE', '%' . $preferences->audiens . '%'); } // Tambahan filter berdasarkan benefit if (!empty($preferences->benefit)) { $queryPermohonan->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 . '%'); }); }); $queryPenawaran->where('benefit', 'LIKE', '%' . $preferences->benefit . '%'); } // Tambahan filter berdasarkan durasi if (isset($preferences->durasi_min, $preferences->durasi_max)) { $queryPermohonan->whereHas('pelatihan', function ($pelatihanQuery) use ($preferences) { // Filter durasi pelatihan $pelatihanQuery->whereBetween('durasi_pelatihan', [$preferences->durasi_min, $preferences->durasi_max]); }); } // Tambahan filter berdasarkan lokasi if (!empty($preferences->lokasi)) { // Filter untuk permohonan proyek $queryPermohonan->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 riset ->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('lokasi_riset', 'LIKE', '%' . $preferences->lokasi . '%'); }); }); // Filter untuk penawaran proyek $queryPenawaran->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 riset ->orWhereHas('riset', function ($risetQuery) use ($preferences) { $risetQuery->where('lokasi_riset', 'LIKE', '%' . $preferences->lokasi . '%'); }); }); } // Tambahan filter berdasarkan metodologi if (!empty($preferences->metodologi)) { // Filter berdasarkan metodologi pada tabel utama atau relasi riset $queryPermohonan->where(function ($q) use ($preferences) { $q->orWhereHas('riset', function ($risetQuery) use ($preferences) { // Filter metodologi di dalam tabel relasi riset $risetQuery->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%'); }); }); $queryPenawaran->where(function ($q) use ($preferences) { $q->orWhereHas('riset', function ($risetQuery) use ($preferences) { // Filter metodologi di dalam tabel relasi riset $risetQuery->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%'); }); }); } // Tambahan filter berdasarkan rincian kebutuhan if (!empty($preferences->rincian_kebutuhan)) { $queryPermohonan->where('rincian_kebutuhan', 'LIKE', '%' . $preferences->rincian_kebutuhan . '%'); $queryPenawaran->where('rincian_kebutuhan', 'LIKE', '%' . $preferences->rincian_kebutuhan . '%'); } // Tambahan filter berdasarkan penerima manfaat if (!empty($preferences->penerima_manfaat)) { $queryPermohonan->where('penerima_manfaat', 'LIKE', '%' . $preferences->penerima_manfaat . '%'); $queryPenawaran->where('penerima_manfaat', 'LIKE', '%' . $preferences->penerima_manfaat . '%'); } } else { return view('akademisi.index', ['message' => 'Data Rekomendasi tidak ditemukan. Silahkan perbarui preferensi anda di profil']); } // Mengambil proyek sesuai dengan filter yang diterapkan $projects = $queryPermohonan->get()->concat($queryPenawaran->get()); // $projects = $combinedProjects->paginate(6); // $projects = $queryPermohonan->union($queryPenawaran)->paginate(6); // Cek jika proyek ditemukan if ($projects->isEmpty()) { return view('akademisi.index', ['message' => 'Data Not Found: Tidak ada program yang ditemukan.']); } return view('akademisi.index', ['projects' => $projects]); } public function search(Request $request) { // Ambil input pencarian dari request $search = $request->input('search'); // Inisialisasi query untuk proyek permohonan dan penawaran $queryPermohonan = permohonanProject::query(); $queryPenawaran = PenawaranProject::query(); // Filter proyek berdasarkan input pencarian jika ada if (!empty($search)) { $queryPermohonan->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 . '%'); }); $queryPenawaran->where(function ($q) use ($search) { $q->where('judul_project', 'LIKE', '%' . $search . '%') ->orWhere('benefit', 'LIKE', '%' . $search . '%') ->orWhere('deskripsi_project', 'LIKE', '%' . $search . '%'); }); } // Mengambil preferensi pengguna $preferences = Preference::where('user_id', Auth::id())->first(); // Memastikan preferensi ada sebelum melakukan filter if ($preferences) { // Filter berdasarkan kategori if (!empty($preferences->kategori)) { $kategoriPreferences = json_decode($preferences->kategori, true); if (is_array($kategoriPreferences)) { $queryPermohonan->whereIn('kategori', $kategoriPreferences); $queryPenawaran->whereIn('jenis_penawaran', $kategoriPreferences); } } // Filter berdasarkan bidang sub sektor ekonomi kreatif if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true); if (is_array($bidangPreferences)) { $queryPermohonan->where(function ($q) use ($bidangPreferences) { foreach ($bidangPreferences as $bidang) { $q->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); } }); $queryPenawaran->where(function ($q) use ($bidangPreferences) { foreach ($bidangPreferences as $bidang) { $q->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%'); } }); } } // Filter berdasarkan batas terima tawaran if (!empty($preferences->batas_terima_tawaran)) { $queryPermohonan->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); $queryPenawaran->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran); } // Filter berdasarkan nominal kebutuhan if (isset($preferences->range_min, $preferences->range_max)) { $queryPermohonan->whereBetween('nominal', [$preferences->range_min, $preferences->range_max]); $queryPenawaran->whereBetween('nominal', [$preferences->range_min, $preferences->range_max]); } // Filter berdasarkan status if (!empty($preferences->status)) { $statusPreferences = json_decode($preferences->status, true); if (is_array($statusPreferences)) { $queryPermohonan->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); }); }); $queryPenawaran->whereIn('status', $statusPreferences); } } // Filter tambahan berdasarkan preferensi lain (audiens, benefit, durasi, lokasi, metodologi) $additionalFilters = [ 'audiens' => 'audiens', 'benefit' => 'benefit', 'rincian_kebutuhan' => 'rincian_kebutuhan', 'penerima_manfaat' => 'penerima_manfaat', 'lokasi' => 'lokasi', 'metodologi' => 'metodologi' ]; foreach ($additionalFilters as $prefKey => $column) { if (!empty($preferences->$prefKey)) { $queryPermohonan->where($column, 'LIKE', '%' . $preferences->$prefKey . '%'); $queryPenawaran->where($column, 'LIKE', '%' . $preferences->$prefKey . '%'); } } // Filter berdasarkan durasi pelatihan if (isset($preferences->durasi_min, $preferences->durasi_max)) { $queryPermohonan->whereHas('pelatihan', function ($q) use ($preferences) { $q->whereBetween('durasi_pelatihan', [$preferences->durasi_min, $preferences->durasi_max]); }); } } // Ambil proyek sesuai dengan filter yang diterapkan $projects = $queryPermohonan->get()->concat($queryPenawaran->get()); // Tampilkan hasil atau pesan jika tidak ada proyek if ($projects->isEmpty()) { return view('akademisi.index', ['message' => 'Tidak ada program yang ditemukan.']); } return view('akademisi.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) { // } }