623 lines
28 KiB
PHP
623 lines
28 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
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 InvestorController 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('investor.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('investor.index', ['projects' => $projects]);
|
|
// }
|
|
|
|
// public function index(Request $request)
|
|
// {
|
|
// // Mengambil preferensi pengguna
|
|
// $preferences = PreferencesPermohonan::where('user_id', Auth::id())->first();
|
|
|
|
// // Inisialisasi query untuk proyek
|
|
// $query = permohonanProject::query();
|
|
|
|
// // Memastikan preferensi ada
|
|
// if ($preferences) {
|
|
// // Filter proyek berdasarkan kategori jika kategori ada
|
|
// if (!empty($preferences->kategori)) {
|
|
// $kategoriPreferences = json_decode($preferences->kategori, true);
|
|
// if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) {
|
|
// $query->whereIn('kategori', $kategoriPreferences);
|
|
// } else {
|
|
// return view('investor.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('investor.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);
|
|
// })
|
|
// ->orWhereHas('riset', function ($subQuery) use ($statusPreferences) {
|
|
// $subQuery->whereIn('status_riset', $statusPreferences);
|
|
// });
|
|
// });
|
|
// } else {
|
|
// return view('investor.index', ['message' => 'Data Not Found: Status tidak valid.']);
|
|
// }
|
|
// }
|
|
// } else {
|
|
// return view('investor.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('investor.index', ['message' => 'Data Not Found: Tidak ada proyek yang ditemukan.']);
|
|
// }
|
|
|
|
// return view('investor.index', ['projects' => $projects]);
|
|
// }
|
|
public function index(Request $request)
|
|
{
|
|
// Mengambil preferensi pengguna
|
|
$preferences = Preference::where('user_id', Auth::id())->first();
|
|
|
|
// Inisialisasi query untuk proyek
|
|
$query = permohonanProject::query();
|
|
|
|
// Memastikan preferensi ada
|
|
if ($preferences) {
|
|
// Filter proyek berdasarkan kategori jika kategori ada
|
|
if (!empty($preferences->kategori)) {
|
|
$kategoriPreferences = json_decode($preferences->kategori, true);
|
|
if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) {
|
|
$query->whereIn('kategori', $kategoriPreferences);
|
|
}
|
|
}
|
|
|
|
// Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada
|
|
if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) {
|
|
$bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true);
|
|
if (is_array($bidangPreferences) && count($bidangPreferences) > 0) {
|
|
// Gunakan where untuk mencocokkan semua bidang
|
|
$query->where(function ($subQuery) use ($bidangPreferences) {
|
|
foreach ($bidangPreferences as $bidang) {
|
|
$subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
// Filter berdasarkan batas terima tawaran jika ada
|
|
// if (!empty($preferences->batas_terima_tawaran)) {
|
|
// $query->where('batas_terima_tawaran', '>=', now()); // Perbaikan: Memastikan batas tawaran masih berlaku
|
|
// }
|
|
|
|
if (!empty($preferences->batas_terima_tawaran)) {
|
|
$query->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran);
|
|
}
|
|
|
|
// Filter berdasarkan range nominal jika diberikan
|
|
if (isset($preferences->range_min, $preferences->range_max)) {
|
|
$rangeMin = $preferences->range_min;
|
|
$rangeMax = $preferences->range_max;
|
|
|
|
$query->where(function ($q) use ($rangeMin, $rangeMax) {
|
|
$q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('biaya', [$rangeMin, $rangeMax]);
|
|
})
|
|
->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]);
|
|
})
|
|
->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('anggaran', [$rangeMin, $rangeMax]);
|
|
})
|
|
->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('nominal', [$rangeMin, $rangeMax]);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Filter berdasarkan status jika diberikan
|
|
if (!empty($preferences->status)) {
|
|
$statusPreferences = json_decode($preferences->status, true);
|
|
if (is_array($statusPreferences) && count($statusPreferences) > 0) {
|
|
$query->where(function ($q) use ($statusPreferences) {
|
|
$q->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) {
|
|
$subQuery->whereIn('status_pelatihan', $statusPreferences);
|
|
})
|
|
->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) {
|
|
$subQuery->whereIn('status_pendanaan', $statusPreferences);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
// Tambahan filter berdasarkan audiens
|
|
if (!empty($preferences->audiens)) {
|
|
$query->whereHas('pelatihan', function ($pelatihanQuery) use ($preferences) {
|
|
// Filter audiens di relasi pelatihan
|
|
$pelatihanQuery->where('audiens', 'LIKE', '%' . $preferences->audiens . '%');
|
|
});
|
|
}
|
|
|
|
|
|
// Tambahan filter berdasarkan benefit
|
|
if (!empty($preferences->benefit)) {
|
|
$query->where(function ($q) use ($preferences) {
|
|
// Filter benefit dari tabel utama
|
|
$q->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) {
|
|
$pelatihanQuery->where('benefit_pelatihan', 'LIKE', '%' . $preferences->benefit . '%');
|
|
})
|
|
|
|
// Filter benefit dari relasi riset
|
|
->orWhereHas('riset', function ($risetQuery) use ($preferences) {
|
|
$risetQuery->where('benefit_riset', 'LIKE', '%' . $preferences->benefit . '%');
|
|
})
|
|
|
|
// Filter benefit dari relasi pendanaan
|
|
->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) {
|
|
$pendanaanQuery->where('benefit_pendanaan', 'LIKE', '%' . $preferences->benefit . '%');
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
// Tambahan filter berdasarkan lokasi
|
|
if (!empty($preferences->lokasi)) {
|
|
$query->where(function ($q) use ($preferences) {
|
|
// Filter lokasi dari tabel utama
|
|
$q->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) {
|
|
$pelatihanQuery->where('lokasi_pelatihan', 'LIKE', '%' . $preferences->lokasi . '%');
|
|
})
|
|
|
|
// Filter lokasi dari relasi pendanaan
|
|
->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) {
|
|
$pendanaanQuery->where('lokasi_pendanaan', 'LIKE', '%' . $preferences->lokasi . '%');
|
|
})
|
|
|
|
// Filter lokasi dari relasi riset
|
|
->orWhereHas('riset', function ($risetQuery) use ($preferences) {
|
|
$risetQuery->where('lokasi_riset', 'LIKE', '%' . $preferences->lokasi . '%');
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
// Tambahan filter berdasarkan metodologi
|
|
if (!empty($preferences->metodologi)) {
|
|
$query->where(function ($q) use ($preferences) {
|
|
// Filter metodologi dari tabel utama
|
|
$q->orWhereHas('riset', function ($risetQuery) use ($preferences) {
|
|
$risetQuery->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%');
|
|
});
|
|
});
|
|
}
|
|
|
|
// Tambahan filter berdasarkan rincian kebutuhan
|
|
if (!empty($preferences->rincian_kebutuhan)) {
|
|
$query->where('rincian_kebutuhan', 'LIKE', '%' . $preferences->rincian_kebutuhan . '%');
|
|
}
|
|
|
|
// Tambahan filter berdasarkan penerima manfaat
|
|
if (!empty($preferences->penerima_manfaat)) {
|
|
$query->where('penerima_manfaat_pengguna_project', 'LIKE', '%' . $preferences->penerima_manfaat . '%');
|
|
}
|
|
} else {
|
|
return view('investor.index', ['message' => 'Data Rekomendasi tidak ditemukan. Silahkan perbarui preferensi anda di profil']);
|
|
}
|
|
|
|
// Mengambil proyek sesuai dengan filter yang diterapkan
|
|
$projects = $query->paginate(6);
|
|
|
|
// Cek jika proyek ditemukan
|
|
if ($projects->isEmpty()) {
|
|
return view('investor.index', ['message' => 'Data Not Found: Tidak ada program yang ditemukan.']);
|
|
}
|
|
|
|
return view('investor.index', ['projects' => $projects]);
|
|
}
|
|
|
|
public function search(Request $request)
|
|
{
|
|
// Ambil input pencarian dari request
|
|
$search = $request->input('search');
|
|
|
|
// Inisialisasi query untuk proyek
|
|
$query = permohonanProject::query();
|
|
|
|
// Filter proyek berdasarkan input pencarian jika ada
|
|
if (!empty($search)) {
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('judul_project', 'LIKE', '%' . $search . '%')
|
|
->orWhere('latar_belakang', 'LIKE', '%' . $search . '%')
|
|
->orWhere('kategori', 'LIKE', '%' . $search . '%')
|
|
->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $search . '%')
|
|
->orWhere('penerima_manfaat_pengguna_project', 'LIKE', '%' . $search . '%')
|
|
->orWhere('parameter_kesuksesan', 'LIKE', '%' . $search . '%')
|
|
->orWhere('rincian_kebutuhan', 'LIKE', '%' . $search . '%')
|
|
->orWhere('deskripsi_kolaborasi', 'LIKE', '%' . $search . '%')
|
|
->orWhere('kata_kunci', 'LIKE', '%' . $search . '%')
|
|
->orWhere('solusi_project', 'LIKE', '%' . $search . '%');
|
|
});
|
|
}
|
|
|
|
// Mengambil preferensi pengguna
|
|
$preferences = Preference::where('user_id', Auth::id())->first();
|
|
|
|
// Memastikan preferensi ada
|
|
if ($preferences) {
|
|
// Filter proyek berdasarkan kategori jika kategori ada
|
|
if (!empty($preferences->kategori)) {
|
|
$kategoriPreferences = json_decode($preferences->kategori, true);
|
|
if (is_array($kategoriPreferences) && count($kategoriPreferences) > 0) {
|
|
$query->whereIn('kategori', $kategoriPreferences);
|
|
}
|
|
}
|
|
|
|
// Filter proyek berdasarkan bidang sub sektor ekonomi kreatif jika ada
|
|
if (!empty($preferences->bidang_sub_sektor_ekonomi_kreatif)) {
|
|
$bidangPreferences = json_decode($preferences->bidang_sub_sektor_ekonomi_kreatif, true);
|
|
if (is_array($bidangPreferences) && count($bidangPreferences) > 0) {
|
|
$query->where(function ($subQuery) use ($bidangPreferences) {
|
|
foreach ($bidangPreferences as $bidang) {
|
|
$subQuery->orWhere('bidang_sub_sektor_ekonomi_kreatif', 'LIKE', '%' . $bidang . '%');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
// Filter berdasarkan batas terima tawaran jika ada
|
|
if (!empty($preferences->batas_terima_tawaran)) {
|
|
$query->where('batas_terima_tawaran', '<=', $preferences->batas_terima_tawaran);
|
|
}
|
|
|
|
// Filter berdasarkan range nominal jika diberikan
|
|
if (isset($preferences->range_min, $preferences->range_max)) {
|
|
$rangeMin = $preferences->range_min;
|
|
$rangeMax = $preferences->range_max;
|
|
|
|
$query->where(function ($q) use ($rangeMin, $rangeMax) {
|
|
$q->whereHas('pelatihan', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('biaya', [$rangeMin, $rangeMax]);
|
|
})
|
|
->orWhereHas('pendanaan', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('jumlah_dana', [$rangeMin, $rangeMax]);
|
|
})
|
|
->orWhereHas('riset', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('anggaran', [$rangeMin, $rangeMax]);
|
|
})
|
|
->orWhereHas('proyekInvestor', function ($query) use ($rangeMin, $rangeMax) {
|
|
$query->whereBetween('nominal', [$rangeMin, $rangeMax]);
|
|
});
|
|
});
|
|
}
|
|
|
|
// Filter berdasarkan status jika diberikan
|
|
if (!empty($preferences->status)) {
|
|
$statusPreferences = json_decode($preferences->status, true);
|
|
if (is_array($statusPreferences) && count($statusPreferences) > 0) {
|
|
$query->where(function ($q) use ($statusPreferences) {
|
|
$q->whereHas('pelatihan', function ($subQuery) use ($statusPreferences) {
|
|
$subQuery->whereIn('status_pelatihan', $statusPreferences);
|
|
})
|
|
->orWhereHas('pendanaan', function ($subQuery) use ($statusPreferences) {
|
|
$subQuery->whereIn('status_pendanaan', $statusPreferences);
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
// Tambahan filter berdasarkan audiens
|
|
if (!empty($preferences->audiens)) {
|
|
$query->whereHas('pelatihan', function ($pelatihanQuery) use ($preferences) {
|
|
$pelatihanQuery->where('audiens', 'LIKE', '%' . $preferences->audiens . '%');
|
|
});
|
|
}
|
|
|
|
// Tambahan filter berdasarkan benefit
|
|
if (!empty($preferences->benefit)) {
|
|
$query->where(function ($q) use ($preferences) {
|
|
$q->where('benefit', 'LIKE', '%' . $preferences->benefit . '%')
|
|
->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) {
|
|
$pelatihanQuery->where('benefit_pelatihan', 'LIKE', '%' . $preferences->benefit . '%');
|
|
})
|
|
->orWhereHas('riset', function ($risetQuery) use ($preferences) {
|
|
$risetQuery->where('benefit_riset', 'LIKE', '%' . $preferences->benefit . '%');
|
|
})
|
|
->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) {
|
|
$pendanaanQuery->where('benefit_pendanaan', 'LIKE', '%' . $preferences->benefit . '%');
|
|
});
|
|
});
|
|
}
|
|
|
|
// Tambahan filter berdasarkan lokasi
|
|
if (!empty($preferences->lokasi)) {
|
|
$query->where(function ($q) use ($preferences) {
|
|
$q->where('lokasi', 'LIKE', '%' . $preferences->lokasi . '%')
|
|
->orWhereHas('pelatihan', function ($pelatihanQuery) use ($preferences) {
|
|
$pelatihanQuery->where('lokasi_pelatihan', 'LIKE', '%' . $preferences->lokasi . '%');
|
|
})
|
|
->orWhereHas('pendanaan', function ($pendanaanQuery) use ($preferences) {
|
|
$pendanaanQuery->where('lokasi_pendanaan', 'LIKE', '%' . $preferences->lokasi . '%');
|
|
})
|
|
->orWhereHas('riset', function ($risetQuery) use ($preferences) {
|
|
$risetQuery->where('lokasi_riset', 'LIKE', '%' . $preferences->lokasi . '%');
|
|
});
|
|
});
|
|
}
|
|
|
|
// Tambahan filter berdasarkan metodologi
|
|
if (!empty($preferences->metodologi)) {
|
|
$query->where(function ($q) use ($preferences) {
|
|
$q->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%')
|
|
->orWhereHas('riset', function ($risetQuery) use ($preferences) {
|
|
$risetQuery->where('metodologi', 'LIKE', '%' . $preferences->metodologi . '%');
|
|
});
|
|
});
|
|
}
|
|
|
|
// Tambahan filter berdasarkan rincian kebutuhan
|
|
if (!empty($preferences->rincian_kebutuhan)) {
|
|
$query->where('rincian_kebutuhan', 'LIKE', '%' . $preferences->rincian_kebutuhan . '%');
|
|
}
|
|
|
|
// Tambahan filter berdasarkan penerima manfaat
|
|
if (!empty($preferences->penerima_manfaat)) {
|
|
$query->where('penerima_manfaat', 'LIKE', '%' . $preferences->penerima_manfaat . '%');
|
|
}
|
|
}
|
|
|
|
// Jalankan query dan ambil hasilnya
|
|
$projects = $query->paginate(6);
|
|
|
|
// Tampilkan hasil jika ada proyek yang ditemukan
|
|
if ($projects->isEmpty()) {
|
|
return view('investor.index', ['message' => 'Tidak ada proyek yang ditemukan.']);
|
|
}
|
|
|
|
return view('investor.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)
|
|
{
|
|
//
|
|
}
|
|
}
|