user(); // Mengambil proyek yang terkait dengan pengguna yang sedang login $projects = permohonanProject::where('user_id', $user->id)->get(); // Mengembalikan tampilan dengan data proyek return view('project.index', ['projects' => $projects]); } // Menampilkan halaman pelatihan public function pelatihan(Request $request) { $search = $request->input('search'); // Ambil parameter pencarian // Query dengan pagination dan pencarian $projects = PermohonanProject::with('pelatihan') ->whereHas('pelatihan', function ($query) use ($search) { if ($search) { $query->where('judul_project', 'like', "%{$search}%") ->orWhere('deskripsi_kolaborasi', 'like', "%{$search}%"); } }) ->paginate(6); // Mengambil 6 proyek per halaman return view('project.pelatihan', compact('projects', 'search')); } // Menampilkan halaman pendanaan public function pendanaan(Request $request) { $search = $request->input('search'); // Ambil parameter pencarian // Query dengan pagination dan pencarian $projects = PermohonanProject::with('pendanaan') ->whereHas('pendanaan', function ($query) use ($search) { if ($search) { $query->where('judul_project', 'like', "%{$search}%") ->orWhere('deskripsi_kolaborasi', 'like', "%{$search}%"); } }) ->paginate(6); // Mengambil 6 proyek per halaman return view('project.pendanaan', compact('projects', 'search')); } // Menampilkan halaman riset public function riset(Request $request) { $search = $request->input('search'); // Ambil parameter pencarian // Query dengan pagination dan pencarian $projects = PermohonanProject::with('riset') ->whereHas('riset', function ($query) use ($search) { if ($search) { $query->where('judul_project', 'like', "%{$search}%") ->orWhere('deskripsi_kolaborasi', 'like', "%{$search}%"); } }) ->paginate(6); // Mengambil 6 proyek per halaman return view('project.riset', compact('projects', 'search')); } // Menampilkan halaman proyek investor public function proyekInvestor() { $projects = permohonanProject::with('proyekInvestor')->whereHas('proyekInvestor')->get(); return view('project.proyekInvestor', compact('projects')); } /** * Show the form for creating a new resource. */ public function create() { return view('project.create'); } /** * Store a newly created resource in storage. */ // ProjectController.php // public function store(Request $request) // { // // Validasi input // $request->validate([ // 'judul_project' => 'required|string|max:255', // 'bidang_sub_sektor_ekonomi_kreatif' => 'required|string|max:255', // 'latar_belakang' => 'required|string', // 'penerima_manfaat_pengguna_project' => 'required|string', // 'solusi_project' => 'required|string', // 'parameter_kesuksesan' => 'required|string', // 'rincian_kebutuhan' => 'required|string', // 'deskripsi_kolaborasi' => 'required|string', // 'kata_kunci' => 'required|string|max:255', // 'batas_terima_tawaran' => 'required|date', // 'tanggal_mulai' => 'required|date', // 'tanggal_berakhir' => 'required|date', // 'nominal_kebutuhan' => 'required|numeric', // 'kategori' => 'required|string|max:255', // 'kontak' => 'required|string|max:255', // 'dokumen_pendukung' => 'nullable|file|mimes:pdf,doc,docx', // 'foto_proyek' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', // 'checklist_komitmen' => 'required|accepted', // 'checklist_persetujuan' => 'required|accepted', // ]); // // Handle file uploads // $dokumen_pendukung = $request->file('dokumen_pendukung') // ? $request->file('dokumen_pendukung')->storeAs('dokumen_pendukung', $request->file('dokumen_pendukung')->getClientOriginalName(), 'public') // : null; // $foto_proyek = $request->file('foto_proyek') // ? $request->file('foto_proyek')->storeAs('foto_proyek', $request->file('foto_proyek')->getClientOriginalName(), 'public') // : null; // // Simpan data ke database // Project::create([ // 'judul_project' => $request->input('judul_project'), // 'bidang_sub_sektor_ekonomi_kreatif' => $request->input('bidang_sub_sektor_ekonomi_kreatif'), // 'latar_belakang' => $request->input('latar_belakang'), // 'penerima_manfaat_pengguna_project' => $request->input('penerima_manfaat_pengguna_project'), // 'solusi_project' => $request->input('solusi_project'), // 'parameter_kesuksesan' => $request->input('parameter_kesuksesan'), // 'rincian_kebutuhan' => $request->input('rincian_kebutuhan'), // 'deskripsi_kolaborasi' => $request->input('deskripsi_kolaborasi'), // 'kata_kunci' => $request->input('kata_kunci'), // 'batas_terima_tawaran' => $request->input('batas_terima_tawaran'), // 'tanggal_mulai' => $request->input('tanggal_mulai'), // 'tanggal_berakhir' => $request->input('tanggal_berakhir'), // 'nominal_kebutuhan' => $request->input('nominal_kebutuhan'), // 'kategori' => $request->input('kategori'), // 'kontak' => $request->input('kontak'), // 'dokumen_pendukung' => $dokumen_pendukung, // 'foto_proyek' => $foto_proyek, // 'user_id' => auth()->id(), // 'checklist_komitmen' => $request->has('checklist_komitmen'), // 'checklist_persetujuan' => $request->has('checklist_persetujuan'), // ]); // return redirect()->route('projects.index')->with('success', 'Project created successfully.'); // } public function store(Request $request) { // Validasi input $rules = [ 'judul_project' => 'required|string|max:255', // 'bidang_sub_sektor_ekonomi_kreatif' => 'required|string|max:255', 'bidang_sub_sektor_ekonomi_kreatif' => 'required|array', 'bidang_sub_sektor_ekonomi_kreatif.*' => 'string', 'latar_belakang' => 'required|string', 'penerima_manfaat_pengguna_project' => 'required|string', 'solusi_project' => 'required|string', 'parameter_kesuksesan' => 'required|string', 'rincian_kebutuhan' => 'required|string', 'deskripsi_kolaborasi' => 'required|string', 'kata_kunci' => 'required|string|max:255', 'batas_terima_tawaran' => 'required|date', 'tanggal_mulai' => 'required|date', 'tanggal_berakhir' => 'required|date', 'kategori' => 'required|string|max:255', 'kontak' => 'required|string|max:255', 'dokumen_pendukung' => 'nullable|file|mimes:pdf,doc,docx', 'foto_proyek' => 'nullable|image|mimes:jpeg,png,jpg', 'checklist_komitmen' => 'required|accepted', 'checklist_persetujuan' => 'required|accepted', ]; // Tambahkan validasi dinamis sesuai kategori switch ($request->input('kategori')) { case 'Pelatihan': $rules = array_merge($rules, [ 'audiens' => 'required|string', 'biaya' => 'required|numeric', 'jumlah_peserta' => 'required|numeric', 'benefit_pelatihan' => 'required|string', 'lokasi_pelatihan' => 'required|string', 'status_pelatihan' => 'required|string', ]); break; case 'Pendanaan': $rules = array_merge($rules, [ 'jumlah_dana' => 'required|numeric', 'lokasi_pendanaan' => 'required|string', 'rencana_penggunaan_dana' => 'required|string', 'status_pendanaan' => 'required|string', 'benefit_pendanaan' => 'required|string', ]); break; case 'Riset': $rules = array_merge($rules, [ 'anggaran' => 'required|numeric', 'lokasi_riset' => 'required|string', 'metodologi' => 'required|string', 'hasil' => 'required|string', 'status_riset' => 'required|string', 'benefit_riset' => 'required|string', ]); break; case 'Project Investor': $rules = array_merge($rules, [ 'nominal' => 'required|numeric', 'rencana_implementasi' => 'required|string', 'status_project' => 'required|string', 'lokasi_project' => 'required|string', 'benefit_project' => 'required|string', ]); break; } // $request->validate($rules); $validatedData = $request->validate($rules); // // Handle file uploads // $dokumen_pendukung = $request->file('dokumen_pendukung') // ? $request->file('dokumen_pendukung')->storeAs('dokumen_pendukung', $request->file('dokumen_pendukung')->getClientOriginalName(), 'public') // : null; // $foto_proyek = $request->file('foto_proyek') // ? $request->file('foto_proyek')->storeAs('foto_proyek', $request->file('foto_proyek')->getClientOriginalName(), 'public') // : null; $foto_proyek_path = null; if ($request->hasFile('foto_proyek')) { $foto_proyek = $request->file('foto_proyek'); // Menghasilkan nama file unik dengan timestamp $uniquefoto_proyekName = time() . '_' . $foto_proyek->getClientOriginalName(); $foto_proyek_path = $foto_proyek->storeAs('foto_proyek', $uniquefoto_proyekName, 'public'); } // Handle laporan keuangan upload $dokumen_pendukung_path = null; // Inisialisasi path untuk laporan keuangan if ($request->hasFile('dokumen_pendukung')) { $dokumen_pendukung = $request->file('dokumen_pendukung'); // Menghasilkan nama file unik untuk laporan keuangan $uniqueDokumenPendukungName = time() . '_' . $dokumen_pendukung->getClientOriginalName(); $dokumen_pendukung_path = $dokumen_pendukung->storeAs('dokumen_pendukung', $uniqueDokumenPendukungName, 'public'); } $bidangSubSektor = $validatedData['bidang_sub_sektor_ekonomi_kreatif']; $bidangSubSektorString = implode(',', $bidangSubSektor); // Simpan data ke database // $project = permohonanProject::create([ // 'judul_project' => $request->input('judul_project'), // 'bidang_sub_sektor_ekonomi_kreatif' => $request->input('bidang_sub_sektor_ekonomi_kreatif'), // 'latar_belakang' => $request->input('latar_belakang'), // 'penerima_manfaat_pengguna_project' => $request->input('penerima_manfaat_pengguna_project'), // 'solusi_project' => $request->input('solusi_project'), // 'parameter_kesuksesan' => $request->input('parameter_kesuksesan'), // 'rincian_kebutuhan' => $request->input('rincian_kebutuhan'), // 'deskripsi_kolaborasi' => $request->input('deskripsi_kolaborasi'), // 'kata_kunci' => $request->input('kata_kunci'), // 'batas_terima_tawaran' => $request->input('batas_terima_tawaran'), // 'tanggal_mulai' => $request->input('tanggal_mulai'), // 'tanggal_berakhir' => $request->input('tanggal_berakhir'), // 'kategori' => $request->input('kategori'), // 'kontak' => $request->input('kontak'), // 'dokumen_pendukung' => $dokumen_pendukung, // 'foto_proyek' => $foto_proyek, // 'user_id' => auth()->id(), // 'checklist_komitmen' => $request->input('checklist_komitmen') === 'on', // 'checklist_persetujuan' => $request->input('checklist_persetujuan') === 'on', // ]); $project = permohonanProject::create([ 'judul_project' => $validatedData['judul_project'], 'bidang_sub_sektor_ekonomi_kreatif' => $bidangSubSektorString, 'latar_belakang' => $validatedData['latar_belakang'], 'penerima_manfaat_pengguna_project' => $validatedData['penerima_manfaat_pengguna_project'], 'solusi_project' => $validatedData['solusi_project'], 'parameter_kesuksesan' => $validatedData['parameter_kesuksesan'], 'rincian_kebutuhan' => $validatedData['rincian_kebutuhan'], 'deskripsi_kolaborasi' => $validatedData['deskripsi_kolaborasi'], 'kata_kunci' => $validatedData['kata_kunci'], 'batas_terima_tawaran' => $validatedData['batas_terima_tawaran'], 'tanggal_mulai' => $validatedData['tanggal_mulai'], 'tanggal_berakhir' => $validatedData['tanggal_berakhir'], 'kategori' => $validatedData['kategori'], 'kontak' => $validatedData['kontak'], 'dokumen_pendukung' => $dokumen_pendukung_path, 'foto_proyek' => $foto_proyek_path, 'user_id' => auth()->id(), 'checklist_komitmen' => $validatedData['checklist_komitmen'] === 'on', 'checklist_persetujuan' => $validatedData['checklist_persetujuan'] === 'on', ]); // Simpan data tambahan berdasarkan kategori // switch ($request->input('kategori')) { // case 'Pelatihan': // permohonanPelatihan::create([ // 'permohonan_project_id' => $project->id, // 'audiens' => $request->input('audiens'), // 'biaya' => $request->input('biaya'), // 'jumlah_peserta' => $request->input('jumlah_peserta'), // 'benefit_pelatihan' => $request->input('benefit_pelatihan'), // 'lokasi_pelatihan' => $request->input('lokasi_pelatihan'), // 'status_pelatihan' => $request->input('status_pelatihan'), // ]); // break; // case 'Pendanaan': // permohonanPendanaan::create([ // 'permohonan_project_id' => $project->id, // 'jumlah_dana' => $request->input('jumlah_dana'), // 'lokasi_pendanaan' => $request->input('lokasi_pendanaan'), // 'rencana_penggunaan_dana' => $request->input('rencana_penggunaan_dana'), // 'status_pendanaan' => $request->input('status_pendanaan'), // 'benefit_pendanaan' => $request->input('benefit_pendanaan'), // ]); // break; // case 'Riset': // permohonanRiset::create([ // 'permohonan_project_id' => $project->id, // 'anggaran' => $request->input('anggaran'), // 'lokasi_riset' => $request->input('lokasi_riset'), // 'metodologi' => $request->input('metodologi'), // 'hasil' => $request->input('hasil'), // 'status_riset' => $request->input('status_riset'), // 'benefit_riset' => $request->input('benefit_riset'), // ]); // break; // case 'Project Investor': // permohonanProyekInvestor::create([ // 'permohonan_project_id' => $project->id, // 'nominal' => $request->input('nominal'), // 'rencana_implementasi' => $request->input('rencana_implementasi'), // 'status_project' => $request->input('status_project'), // 'lokasi_project' => $request->input('lokasi_project'), // 'benefit_project' => $request->input('benefit_project'), // ]); // break; // } switch ($validatedData['kategori']) { case 'Pelatihan': permohonanPelatihan::create([ 'permohonan_project_id' => $project->id, 'audiens' => $validatedData['audiens'], 'biaya' => $validatedData['biaya'], 'jumlah_peserta' => $validatedData['jumlah_peserta'], 'benefit_pelatihan' => $validatedData['benefit_pelatihan'], 'lokasi_pelatihan' => $validatedData['lokasi_pelatihan'], 'status_pelatihan' => $validatedData['status_pelatihan'], ]); break; case 'Pendanaan': permohonanPendanaan::create([ 'permohonan_project_id' => $project->id, 'jumlah_dana' => $validatedData['jumlah_dana'], 'lokasi_pendanaan' => $validatedData['lokasi_pendanaan'], 'rencana_penggunaan_dana' => $validatedData['rencana_penggunaan_dana'], 'status_pendanaan' => $validatedData['status_pendanaan'], 'benefit_pendanaan' => $validatedData['benefit_pendanaan'], ]); break; case 'Riset': permohonanRiset::create([ 'permohonan_project_id' => $project->id, 'anggaran' => $validatedData['anggaran'], 'lokasi_riset' => $validatedData['lokasi_riset'], 'metodologi' => $validatedData['metodologi'], 'hasil' => $validatedData['hasil'], 'status_riset' => $validatedData['status_riset'], 'benefit_riset' => $validatedData['benefit_riset'], ]); break; case 'Project Investor': permohonanProyekInvestor::create([ 'permohonan_project_id' => $project->id, 'nominal' => $validatedData['nominal'], 'rencana_implementasi' => $validatedData['rencana_implementasi'], 'status_project' => $validatedData['status_project'], 'lokasi_project' => $validatedData['lokasi_project'], 'benefit_project' => $validatedData['benefit_project'], ]); break; } return redirect()->route('permohonanprojects.index')->with('success', 'Project created successfully.'); } /** * Display the specified resource. */ public function show(string $id) { // Mencari proyek berdasarkan ID $project = permohonanProject::find($id); // Jika proyek ditemukan, tampilkan tampilan detail proyek if ($project) { return view('project.show', compact('project')); } else { return redirect()->route('permohonanprojects.index')->with('error', 'Project not found'); } } public function showPelatihan($id) { // Find the project by its ID with related pelatihan data $project = permohonanProject::with('pelatihan')->findOrFail($id); // Mengambil daftar pengikut untuk proyek ini $followers = Follow::where('project_id', $id) ->where('status', 'accepted') // Hanya pengikut yang diterima ->with('user') // Ambil data pengguna yang mengikuti ->get(); // Return the view for Pelatihan with the related pelatihan data return view('project.show_pelatihan', compact('project', 'followers')); } public function showPendanaan($id) { // Find the project by its ID $project = permohonanProject::with('pendanaan')->findOrFail($id); // Mengambil daftar pengikut untuk proyek ini $followers = Follow::where('project_id', $id) ->where('status', 'accepted') // Hanya pengikut yang diterima ->with('user') // Ambil data pengguna yang mengikuti ->get(); // Return the view for Pelatihan with the related pelatihan data return view('project.show_pendanaan', compact('project', 'followers')); } public function showRiset($id) { // Find the project by its ID $project = permohonanProject::with('riset')->findOrFail($id); // Mengambil daftar pengikut untuk proyek ini $followers = Follow::where('project_id', $id) ->where('status', 'accepted') // Hanya pengikut yang diterima ->with('user') // Ambil data pengguna yang mengikuti ->get(); // Return the view for Pelatihan with the related pelatihan data return view('project.show_riset', compact('project', 'followers')); } public function showProyekInvestor($id) { // Find the project by its ID $project = permohonanProject::with('proyekInvestor')->findOrFail($id); // Check if the project has related proyekInvestor data if ($project->kategori === 'Project Investor' && $project->proyekInvestor) { // Return the view for Proyek Investor with the related proyekInvestor data return view('project.show_proyek_investor', compact('project')); } // If no related proyekInvestor data found, handle it appropriately abort(404, 'Proyek Investor data not found for this project.'); } /** * Show the form for editing the specified resource. */ // public function edit(string $id) // { // $project = Project::find($id); // Mencari proyek berdasarkan ID // if (!$project) { // return redirect()->route('projects.index')->with('error', 'Project not found'); // Mengalihkan ke daftar proyek jika tidak ditemukan // } // return view('project.edit', compact('project')); // } public function edit($id) { $project = permohonanProject::find($id); if (!$project) { return redirect()->route('permohonanprojects.index')->with('error', 'Project not found'); } $relatedData = null; switch ($project->kategori) { case 'Pelatihan': $relatedData = $project->pelatihan; break; case 'Pendanaan': $relatedData = $project->pendanaan; break; case 'Riset': $relatedData = $project->riset; break; case 'Project Investor': $relatedData = $project->proyekInvestor; break; } return view('project.edit', compact('project', 'relatedData')); } /** * Update the specified resource in storage. */ // public function update(Request $request, string $id) // { // // Mencari proyek berdasarkan ID // $project = Project::find($id); // // Jika proyek tidak ditemukan, kembalikan pesan error // if (!$project) { // return redirect()->route('projects.index')->with('error', 'Project not found'); // } // // Validasi data // $validated = $request->validate([ // 'judul_project' => 'sometimes|string|max:255', // 'bidang_sub_sektor_ekonomi_kreatif' => 'sometimes|string|max:255', // 'latar_belakang' => 'sometimes', // 'penerima_manfaat_pengguna_project' => 'sometimes', // 'solusi_project' => 'sometimes', // 'parameter_kesuksesan' => 'sometimes', // 'rincian_kebutuhan' => 'sometimes', // 'deskripsi_kolaborasi' => 'sometimes', // 'kata_kunci' => 'sometimes|string|max:255', // 'batas_terima_tawaran' => 'sometimes|date', // 'tanggal_mulai' => 'sometimes|date', // 'tanggal_berakhir' => 'sometimes|date', // 'nominal_kebutuhan' => 'sometimes|numeric', // 'kategori' => 'sometimes|string|max:255', // 'kontak' => 'sometimes|string|max:255', // 'dokumen_pendukung' => 'nullable|file', // 'checklist_komitmen' => 'required|accepted', // 'checklist_persetujuan' => 'required|accepted', // 'foto_proyek' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', // ]); // // Menyimpan foto proyek jika ada // if ($request->hasFile('foto_proyek')) { // // Hapus foto lama jika ada // if ($project->foto_proyek) { // Storage::disk('public')->delete($project->foto_proyek); // } // // Simpan foto baru dengan nama asli // $fotoPath = $request->file('foto_proyek')->storeAs('foto_proyek', $request->file('foto_proyek')->getClientOriginalName(), 'public'); // $validated['foto_proyek'] = $fotoPath; // } // // Menyimpan dokumen pendukung jika ada // if ($request->hasFile('dokumen_pendukung')) { // // Hapus dokumen lama jika ada // if ($project->dokumen_pendukung) { // Storage::disk('public')->delete($project->dokumen_pendukung); // } // // Simpan dokumen baru dengan nama asli // $dokumenPath = $request->file('dokumen_pendukung')->storeAs('dokumen_pendukung', $request->file('dokumen_pendukung')->getClientOriginalName(), 'public'); // $validated['dokumen_pendukung'] = $dokumenPath; // } // // Memperbarui proyek dengan data yang telah divalidasi // $project->update($validated); // // Update data tambahan berdasarkan kategori // if ($project->kategori === 'Pelatihan') { // $pelatihan = Pelatihan::where('project_id', $project->id)->first(); // if ($pelatihan) { // $pelatihan->update([ // 'audiens' => $request->input('audiens'), // 'biaya' => $request->input('biaya'), // 'jumlah_peserta' => $request->input('jumlah_peserta'), // 'benefit_pelatihan' => $request->input('benefit_pelatihan'), // 'lokasi_pelatihan' => $request->input('lokasi_pelatihan'), // 'status_pelatihan' => $request->input('status_pelatihan'), // ]); // } // } elseif ($project->kategori === 'Pendanaan') { // $pendanaan = Pendanaan::where('project_id', $project->id)->first(); // if ($pendanaan) { // $pendanaan->update([ // 'jumlah_dana' => $request->input('jumlah_dana'), // 'lokasi_pendanaan' => $request->input('lokasi_pendanaan'), // 'rencana_penggunaan_dana' => $request->input('rencana_penggunaan_dana'), // 'status_pendanaan' => $request->input('status_pendanaan'), // 'benefit_pendanaan' => $request->input('benefit_pendanaan'), // ]); // } // } elseif ($project->kategori === 'Riset') { // $riset = Riset::where('project_id', $project->id)->first(); // if ($riset) { // $riset->update([ // 'anggaran' => $request->input('anggaran'), // 'lokasi_riset' => $request->input('lokasi_riset'), // 'metodologi' => $request->input('metodologi'), // 'hasil' => $request->input('hasil'), // 'status_riset' => $request->input('status_riset'), // 'benefit_riset' => $request->input('benefit_riset'), // ]); // } // } elseif ($project->kategori === 'Project Investor') { // $projectInvestorDetails = ProyekInvestor::where('project_id', $project->id)->first(); // if ($projectInvestorDetails) { // $projectInvestorDetails->update([ // 'nominal' => $request->input('nominal'), // 'rencana_implementasi' => $request->input('rencana_implementasi'), // 'status_project' => $request->input('status_project'), // 'benefit_project' => $request->input('benefit_project'), // ]); // } // } // // Redirect ke halaman daftar proyek dengan pesan sukses // return redirect()->route('projects.index')->with('success', 'Project updated successfully.'); // } public function update(Request $request, $id) { // Find the project by ID $project = permohonanProject::find($id); // If the project is not found, redirect with an error message if (!$project) { return redirect()->route('permohonanprojects.index')->with('error', 'Project not found'); } // Define base validation rules $rules = [ 'judul_project' => 'sometimes|string|max:255', // 'bidang_sub_sektor_ekonomi_kreatif' => 'sometimes|string|max:255', 'bidang_sub_sektor_ekonomi_kreatif' => 'required|array', 'bidang_sub_sektor_ekonomi_kreatif.*' => 'string', 'latar_belakang' => 'sometimes|string', 'penerima_manfaat_pengguna_project' => 'sometimes|string', 'solusi_project' => 'sometimes|string', 'parameter_kesuksesan' => 'sometimes|string', 'rincian_kebutuhan' => 'sometimes|string', 'deskripsi_kolaborasi' => 'sometimes|string', 'kata_kunci' => 'sometimes|string|max:255', 'batas_terima_tawaran' => 'sometimes|date', 'tanggal_mulai' => 'sometimes|date', 'tanggal_berakhir' => 'sometimes|date', 'kategori' => 'sometimes|string|max:255', 'kontak' => 'sometimes|string|max:255', 'dokumen_pendukung' => 'nullable|file|mimes:pdf,doc,docx', 'foto_proyek' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', 'checklist_komitmen' => 'sometimes|accepted', 'checklist_persetujuan' => 'sometimes|accepted', ]; // Dynamic validation rules based on the category switch ($request->input('kategori', $project->kategori)) { case 'Pelatihan': $rules = array_merge($rules, [ 'audiens' => 'sometimes|string', 'biaya' => 'sometimes|numeric', 'jumlah_peserta' => 'sometimes|numeric', 'benefit_pelatihan' => 'sometimes|string', 'lokasi_pelatihan' => 'sometimes|string', 'status_pelatihan' => 'sometimes|string', ]); break; case 'Pendanaan': $rules = array_merge($rules, [ 'jumlah_dana' => 'sometimes|numeric', 'lokasi_pendanaan' => 'sometimes|string', 'rencana_penggunaan_dana' => 'sometimes|string', 'status_pendanaan' => 'sometimes|string', 'benefit_pendanaan' => 'sometimes|string', ]); break; case 'Riset': $rules = array_merge($rules, [ 'anggaran' => 'sometimes|numeric', 'lokasi_riset' => 'sometimes|string', 'metodologi' => 'sometimes|string', 'hasil' => 'sometimes|string', 'status_riset' => 'sometimes|string', 'benefit_riset' => 'sometimes|string', ]); break; case 'Project Investor': $rules = array_merge($rules, [ 'nominal' => 'sometimes|numeric', 'rencana_implementasi' => 'sometimes|string', 'status_project' => 'sometimes|string', 'lokasi_project' => 'sometimes|string', 'benefit_project' => 'sometimes|string', ]); break; } // Validate the request data $validatedData = $request->validate($rules); // Mengubah array bidang_sub_sektor_ekonomi_kreatif menjadi string $validatedData['bidang_sub_sektor_ekonomi_kreatif'] = implode(',', $validatedData['bidang_sub_sektor_ekonomi_kreatif']); // // Handle file uploads // if ($request->hasFile('dokumen_pendukung')) { // $validatedData['dokumen_pendukung'] = $request->file('dokumen_pendukung') // ? $request->file('dokumen_pendukung')->storeAs('dokumen_pendukung', $request->file('dokumen_pendukung')->getClientOriginalName(), 'public') // : $project->dokumen_pendukung; // } // if ($request->hasFile('foto_proyek')) { // $validatedData['foto_proyek'] = $request->file('foto_proyek') // ? $request->file('foto_proyek')->storeAs('foto_proyek', $request->file('foto_proyek')->getClientOriginalName(), 'public') // : $project->foto_proyek; // } // Handle file uploads if ($request->hasFile('dokumen_pendukung')) { $dokumen_pendukung = $request->file('dokumen_pendukung'); // Menghasilkan nama file unik $uniqueDokumenPendukungName = time() . '_' . uniqid() . '_' . $dokumen_pendukung->getClientOriginalName(); $validatedData['dokumen_pendukung'] = $dokumen_pendukung->storeAs('dokumen_pendukung', $uniqueDokumenPendukungName, 'public'); } else { $validatedData['dokumen_pendukung'] = $project->dokumen_pendukung; // Keep existing dokumen if not uploaded } if ($request->hasFile('foto_proyek')) { $foto_proyek = $request->file('foto_proyek'); // Menghasilkan nama file unik $uniqueFotoProyekName = time() . '_' . uniqid() . '_' . $foto_proyek->getClientOriginalName(); $validatedData['foto_proyek'] = $foto_proyek->storeAs('foto_proyek', $uniqueFotoProyekName, 'public'); } else { $validatedData['foto_proyek'] = $project->foto_proyek; // Keep existing foto if not uploaded } // Update the main project data $project->update($validatedData); // Update or create related records based on the category switch ($request->input('kategori', $project->kategori)) { case 'Pelatihan': $project->pelatihan()->updateOrCreate( ['permohonan_project_id' => $project->id], $request->only([ 'audiens', 'biaya', 'jumlah_peserta', 'benefit_pelatihan', 'lokasi_pelatihan', 'status_pelatihan' ]) ); break; case 'Pendanaan': $project->pendanaan()->updateOrCreate( ['permohonan_project_id' => $project->id], $request->only([ 'jumlah_dana', 'lokasi_pendanaan', 'rencana_penggunaan_dana', 'status_pendanaan', 'benefit_pendanaan' ]) ); break; case 'Riset': $project->riset()->updateOrCreate( ['permohonan_project_id' => $project->id], $request->only([ 'anggaran', 'lokasi_riset', 'metodologi', 'hasil', 'status_riset', 'benefit_riset' ]) ); break; case 'Project Investor': $project->proyekInvestor()->updateOrCreate( ['permohonan_project_id' => $project->id], $request->only([ 'nominal', 'rencana_implementasi', 'status_project', 'benefit_project' ]) ); break; } return redirect()->route('permohonanprojects.index')->with('success', 'Project updated successfully.'); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { try { // Mencari proyek berdasarkan ID dan akan melemparkan pengecualian jika tidak ditemukan $project = permohonanProject::findOrFail($id); // Menghapus proyek dari database $project->delete(); // Mengarahkan pengguna ke halaman daftar proyek dengan pesan sukses return redirect()->route('permohonanprojects.index')->with('success', 'Project deleted successfully'); } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { // Mengarahkan pengguna ke halaman daftar proyek dengan pesan error return redirect()->route('permohonanprojects.index')->with('error', 'Project not found'); } catch (\Exception $e) { // Mengarahkan pengguna ke halaman daftar proyek dengan pesan error return redirect()->route('permohonanprojects.index')->with('error', 'An error occurred'); } } }