<?php

namespace App\Http\Controllers;

use App\Models\PenawaranProject;
use App\Models\permohonanProject;
use App\Models\Preference;
use App\Models\PreferencesPermohonan;
use App\Models\Project;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AkademisiController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    // 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 = [];
    //     }

    //     // 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)
    {
        //
    }
}
