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 // $projects = Project::query(); // // Mengambil proyek yang sudah difilter // $projects = $projects->get(); // return view('pemerintah.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']; // 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('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(); // // Pastikan preferensi ada dan kategori tidak kosong // if ($preferences && !empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori); // // Filter proyek berdasarkan kategori yang sesuai dengan preferensi // $query->whereIn('kategori', $kategoriPreferences); // } // // Filter berdasarkan bidang sub sektor ekonomi kreatif jika ada // if ($preferences && !empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { // $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif); // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $bidangPreferences); // } // // 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 untuk nominal_min dan nominal_max // if ( // $request->has('nominal_min') && $request->has('nominal_max') && // !empty($request->input('nominal_min')) && !empty($request->input('nominal_max')) // ) { // $nominalMin = $request->input('nominal_min'); // $nominalMax = $request->input('nominal_max'); // // Menggunakan whereHas untuk memfilter proyek berdasarkan biaya, jumlah_dana, anggaran, dan nominal // $query->where(function ($q) use ($nominalMin, $nominalMax) { // $q->whereHas('pelatihan', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('biaya', [$nominalMin, $nominalMax]); // }) // ->orWhereHas('pendanaan', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('jumlah_dana', [$nominalMin, $nominalMax]); // }) // ->orWhereHas('riset', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('anggaran', [$nominalMin, $nominalMax]); // }) // ->orWhereHas('proyekInvestor', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('nominal', [$nominalMin, $nominalMax]); // }); // }); // } // // Filter berdasarkan status jika diberikan // if ($request->has('status') && !empty($request->input('status'))) { // $statusPreferences = $request->input('status'); // $query->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pelatihan', $statusPreferences); // })->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pendanaan', $statusPreferences); // }); // } // // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); // 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(); // // Jika preferensi dan kategori ada // if ($preferences && !empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori); // // Filter proyek berdasarkan kategori yang sesuai dengan preferensi // $query->whereIn('kategori', $kategoriPreferences); // // Jika setelah filter kategori tidak ada data, hentikan eksekusi // // if ($query->count() == 0) { // // return response()->json(['message' => 'Data kategori Not Found'], 404); // // } // // Jika bidang_sub_sektor_ekonomi_kreatif ada // if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { // $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif); // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $bidangPreferences); // // Jika setelah filter bidang tidak ada data, hentikan eksekusi // // if ($query->count() == 0) { // // return response()->json(['message' => 'Data bidang Not Found'], 404); // // } // // Jika batas_terima_tawaran diberikan // if ($preferences && !empty($preferences->batas_terima_tawaran)) { // $batas_terima_tawaranPreferences = $preferences->batas_terima_tawaran; // // Pastikan format tanggal yang diambil dari preferensi benar // $formattedDate = date('Y-m-d', strtotime($batas_terima_tawaranPreferences)); // // Filter proyek berdasarkan batas_terima_tawaran // $query->whereDate('batas_terima_tawaran', $formattedDate); // // Debug query SQL yang dihasilkan untuk memverifikasi // // dd($formattedDate, $query->toSql(), $query->getBindings()); // // Jika setelah filter tidak ada data, hentikan eksekusi // // if ($query->count() == 0) { // // return response()->json(['message' => 'Data batas Not Found'], 404); // // } // } // // Jika nominal_min dan nominal_max diberikan // if ($preferences && !empty($preferences->range_min) && !empty($preferences->range_max)) { // // Mengambil range_min dan range_max dari preferensi // $rangeMin = $preferences->range_min; // $rangeMax = $preferences->range_max; // // Filter proyek berdasarkan biaya dalam rentang yang diberikan // $query->where(function ($q) use ($rangeMin, $rangeMax) { // $q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) { // // Filter pelatihan berdasarkan biaya // $query->whereBetween('biaya', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) { // // Filter pendanaan berdasarkan jumlah_dana // $query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) { // // Filter riset berdasarkan anggaran // $query->whereBetween('anggaran', [$rangeMin, $rangeMax]); // }) // ->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) { // // Filter proyek investor berdasarkan nominal // $query->whereBetween('nominal', [$rangeMin, $rangeMax]); // }); // }); // // // Debugging untuk memastikan range_min dan range_max bekerja // // dd($query->toSql(), $query->getBindings()); // // Jika setelah filter tidak ada data, hentikan eksekusi // // if ($query->count() == 0) { // // return response()->json(['message' => 'Data nominal Not Found'], 404); // // } // // Jika status diberikan // if (!empty($preferences->status)) { // $statusPreferences = json_decode($preferences->status); // Pastikan ini adalah array // // Filter proyek berdasarkan status yang relevan dengan kategori // $query->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pelatihan', $statusPreferences); // }) // ->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pendanaan', $statusPreferences); // }); // // Jika setelah filter status tidak ada data, hentikan eksekusi // // if ($query->count() == 0) { // // return response()->json(['message' => 'Data status Not Found'], 404); // // } // } // } // } // } // // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); // // Jika tidak ada proyek yang ditemukan // // if ($projects->isEmpty()) { // // return response()->json(['message' => 'Data Not Found'], 404); // // } // 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); // 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); // if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $bidangPreferences); // // 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 untuk nominal_min dan nominal_max // if ($request->has('nominal_min') && $request->has('nominal_max')) { // $nominalMin = $request->input('nominal_min'); // $nominalMax = $request->input('nominal_max'); // // Memastikan nominal_min dan nominal_max tidak kosong // if (!empty($nominalMin) && !empty($nominalMax)) { // // Menggunakan whereHas untuk memfilter proyek berdasarkan biaya, jumlah_dana, anggaran, dan nominal // $query->where(function ($q) use ($nominalMin, $nominalMax) { // $q->whereHas('pelatihan', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('biaya', [$nominalMin, $nominalMax]); // }) // ->orWhereHas('pendanaan', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('jumlah_dana', [$nominalMin, $nominalMax]); // }) // ->orWhereHas('riset', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('anggaran', [$nominalMin, $nominalMax]); // }) // ->orWhereHas('proyekInvestor', function ($query) use ($nominalMin, $nominalMax) { // $query->whereBetween('nominal', [$nominalMin, $nominalMax]); // }); // }); // // Filter berdasarkan status jika diberikan // if ($request->has('status') && !empty($request->input('status'))) { // $statusPreferences = $request->input('status'); // $query->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pelatihan', $statusPreferences); // }) // ->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) { // $subQuery->whereIn('status_pendanaan', $statusPreferences); // }); // } // } else { // // Jika nominal_min dan nominal_max tidak valid, tampilkan Data Not Found // return view('pemerintah.index', ['message' => 'Data Not Found']); // } // } else { // // Jika nominal_min dan nominal_max tidak diberikan, tampilkan Data Not Found // return view('pemerintah.index', ['message' => 'Data Not Found']); // } // } else { // // Jika batas_terima_tawaran tidak diberikan, tampilkan Data Not Found // return view('pemerintah.index', ['message' => 'Data Not Found']); // } // } else { // // Jika bidangPreferences kosong, tampilkan pesan Data Not Found // return view('pemerintah.index', ['message' => 'Data Not Found']); // } // } else { // // Jika bidang_sub_sektor_ekonomi_kreatif tidak ada, tampilkan pesan Data Not Found // return view('pemerintah.index', ['message' => 'Data Not Found']); // } // } else { // // Jika kategoriPreferences kosong, tampilkan pesan Data Not Found // return view('pemerintah.index', ['message' => 'Data Not Found']); // } // } // } // // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); // // Memeriksa apakah proyek ditemukan // if ($projects->isEmpty()) { // return view('pemerintah.index', ['message' => 'Data Not Found']); // } // 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 (isset($preferences->kategori) && !empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori); // if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { // $query->whereIn('kategori', $kategoriPreferences); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Kategori tidak valid.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Kategori tidak diberikan.']); // } // // Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada // if (isset($preferences->bidang_sub_sektor_ekonomi_kreatif) && !empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { // $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif); // if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $bidangPreferences); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang tidak valid.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang tidak diberikan.']); // } // if (isset($preferences->batas_terima_tawaran) && !empty($preferences->batas_terima_tawaran)) { // $batasTerimaTawaranPreferences = json_decode($preferences->batas_terima_tawaran); // // Tambahkan filter ke query jika nilai ada // if (is_array($batasTerimaTawaranPreferences) && count($batasTerimaTawaranPreferences) > 0) { // $query->whereIn('batas_terima_tawaran', $batasTerimaTawaranPreferences); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: batas tidak diberikan.']); // } // // Memeriksa preferensi nominal_min dan nominal_max // if (isset($preferences->range_min) && isset($preferences->range_max)) { // $rangeMin = json_decode($preferences->range_min); // $rangeMax = json_decode($preferences->range_max); // // Memastikan range_min dan range_max tidak null // if ($rangeMin !== null && $rangeMax !== null) { // // 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]); // }); // }); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Nominal tidak valid.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Nominal tidak diberikan.']); // } // // Filter berdasarkan status jika diberikan // if (isset($preferences->status) && !empty($preferences->status)) { // $statusPreferences = json_decode($preferences->status); // // Memeriksa apakah statusPreferences adalah array dan tidak kosong // if (is_array($statusPreferences) && count($statusPreferences) > 0) { // $query->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: Status tidak diberikan.']); // } // } // // 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 (isset($preferences->kategori) && !empty($preferences->kategori)) { // $kategoriPreferences = json_decode($preferences->kategori); // if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) { // $query->whereIn('kategori', $kategoriPreferences); // // Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada // if (isset($preferences->bidang_sub_sektor_ekonomi_kreatif) && !empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) { // $bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif); // if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $bidangPreferences); // // Filter batas terima tawaran jika ada // if (isset($preferences->batas_terima_tawaran) && !empty($preferences->batas_terima_tawaran)) { // $batasTerimaTawaranPreferences = json_decode($preferences->batas_terima_tawaran); // if (is_array($batasTerimaTawaranPreferences) && count($batasTerimaTawaranPreferences) > 0) { // $query->where('batas_terima_tawaran', $batasTerimaTawaranPreferences); // // Memeriksa preferensi nominal_min dan nominal_max // if (isset($preferences->range_min) && isset($preferences->range_max)) { // $rangeMin = json_decode($preferences->range_min); // $rangeMax = json_decode($preferences->range_max); // // Memastikan range_min dan range_max tidak null // if ($rangeMin !== null && $rangeMax !== null) { // // 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 (isset($preferences->status) && !empty($preferences->status)) { // $statusPreferences = json_decode($preferences->status); // if (is_array($statusPreferences) && count($statusPreferences) > 0) { // $query->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: Batas tidak valid.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang tidak valid.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Kategori tidak valid.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Status tidak diberikan.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Nominal tidak valid.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Nominal tidak diberikan.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Batas tidak diberikan.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang tidak diberikan.']); // } // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Kategori tidak diberikan.']); // } // } 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]); // } //ini kurang benar sedikit 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); // if (is_array($bidangPreferences) && count($bidangPreferences) > 0) { // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $bidangPreferences); // } else { // return view('pemerintah.index', ['message' => 'Data Not Found: Bidang sub sektor ekonomi kreatif 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(); // // Cek apakah ada preferensi // if ($preferences) { // // Mengambil kategori dan bidang dari preferensi // $kategoriPreferences = !empty($preferences->kategori) ? json_decode($preferences->kategori) : []; // $bidangPreferences = !empty($preferences->bidang_sub_sektor_ekonomi_kreatif) ? json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif) : []; // // Mengambil input dari request // $batasTerimaTawaran = $request->input('batas_terima_tawaran'); // $nominalMin = $request->input('nominal_min'); // $nominalMax = $request->input('nominal_max'); // $statusPreferences = $request->input('status'); // // Cek semua kondisi filter // if ( // (!empty($kategoriPreferences) && !empty($bidangPreferences)) && // (!is_null($batasTerimaTawaran) || !empty($batasTerimaTawaran)) && // (!empty($nominalMin) && !empty($nominalMax)) && // (!empty($statusPreferences)) // ) { // // Filter berdasarkan kategori // $query->whereIn('kategori', $kategoriPreferences); // // Filter berdasarkan bidang sub sektor ekonomi kreatif // $query->whereIn('bidang_sub_sektor_ekonomi_kreatif', $bidangPreferences); // // Filter berdasarkan batas terima tawaran // $query->where('batas_terima_tawaran', '<=', $batasTerimaTawaran); // // Filter untuk nominal_min dan nominal_max // $query->whereHas('pelatihan', function ($q) use ($nominalMin, $nominalMax) { // $q->whereBetween('biaya', [$nominalMin, $nominalMax]); // }) // ->whereHas('pendanaan', function ($q) use ($nominalMin, $nominalMax) { // $q->whereBetween('jumlah_dana', [$nominalMin, $nominalMax]); // }) // ->whereHas('riset', function ($q) use ($nominalMin, $nominalMax) { // $q->whereBetween('anggaran', [$nominalMin, $nominalMax]); // }) // ->whereHas('proyekInvestor', function ($q) use ($nominalMin, $nominalMax) { // $q->whereBetween('nominal', [$nominalMin, $nominalMax]); // }); // // Filter berdasarkan status jika diberikan // $query->whereHas('pelatihan', function ($q) use ($statusPreferences) { // $q->whereIn('status_pelatihan', $statusPreferences); // }) // ->whereHas('pendanaan', function ($q) use ($statusPreferences) { // $q->whereIn('status_pendanaan', $statusPreferences); // }) // ->whereHas('riset', function ($q) use ($statusPreferences) { // $q->whereIn('status_riset', $statusPreferences); // }); // } // } // // Mengambil proyek sesuai dengan filter yang diterapkan // $projects = $query->get(); // // Jika tidak ada proyek yang ditemukan, tampilkan pesan atau redirect // if ($projects->isEmpty()) { // return view('pemerintah.no_results'); // Ganti dengan tampilan yang sesuai // } // return view('pemerintah.index', ['projects' => $projects]); // } // public function index(Request $request) // { // // Ambil ID pengguna yang sedang login // $userId = auth()->id(); // Menggunakan auth helper untuk mengambil ID pengguna yang login // // Ambil semua proyek // $projects = permohonanProject::all(); // $userPreferences = PreferencesPermohonan::all(); // // Membangun matriks preferensi pengguna-proyek // $matrix = []; // foreach ($userPreferences as $preference) { // $userId = $preference->user_id; // $kategoriPreferences = json_decode($preference->kategori); // foreach ($projects as $project) { // // Cek jika proyek dalam kategori yang disukai pengguna // if (in_array($project->kategori, $kategoriPreferences)) { // $matrix[$userId][$project->id] = 1; // Menyukai // } else { // $matrix[$userId][$project->id] = 0; // Tidak menyukai // } // } // } // // Menghitung similarity antara pengguna yang berbeda // $similarities = []; // foreach ($matrix as $otherUserId => $preferences) { // if ($otherUserId != $userId) { // $similarities[$otherUserId] = $this->cosineSimilarity($matrix[$userId], $preferences); // } // } // // Menyortir pengguna berdasarkan kesamaan // arsort($similarities); // // Mengambil rekomendasi berdasarkan pengguna yang paling mirip // $recommendedProjects = []; // foreach ($similarities as $otherUserId => $similarity) { // foreach ($projects as $project) { // if ($matrix[$otherUserId][$project->id] == 1 && !isset($matrix[$userId][$project->id])) { // // Jika proyek disukai oleh pengguna mirip tapi belum disukai oleh pengguna saat ini // $recommendedProjects[$project->id] = $project; // } // } // // Batasi jumlah rekomendasi jika perlu // if (count($recommendedProjects) >= 5) break; // Misalnya, batasi 5 rekomendasi // } // return view('pemerintah.index', ['projects' => array_values($recommendedProjects)]); // } // private function cosineSimilarity($vecA, $vecB) // { // $dotProduct = 0; // $magnitudeA = 0; // $magnitudeB = 0; // foreach ($vecA as $key => $value) { // if (isset($vecB[$key])) { // $dotProduct += $value * $vecB[$key]; // } // $magnitudeA += $value * $value; // } // foreach ($vecB as $value) { // $magnitudeB += $value * $value; // } // if ($magnitudeA == 0 || $magnitudeB == 0) { // return 0; // Menghindari pembagian dengan nol // } // return $dotProduct / (sqrt($magnitudeA) * sqrt($magnitudeB)); // } /** * 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) { // } }