873 lines
38 KiB
PHP
873 lines
38 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Follow;
|
|
use App\Models\Pelatihan;
|
|
use App\Models\permohonanPelatihan;
|
|
use App\Models\permohonanPendanaan;
|
|
use App\Models\permohonanProject;
|
|
use App\Models\permohonanProyekInvestor;
|
|
use App\Models\permohonanRiset;
|
|
use App\Models\Pendanaan;
|
|
use App\Models\Project;
|
|
use App\Models\ProyekInvestor;
|
|
use App\Models\Riset;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class permohonanProjectController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index()
|
|
{
|
|
// Mengambil pengguna yang sedang login
|
|
$user = auth()->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');
|
|
}
|
|
}
|
|
}
|