<?php

namespace App\Http\Controllers;

use App\Models\permohonanProject;
use App\Models\PreferencesPermohonan;
use App\Models\Project;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

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