skl/app/Http/Controllers/PerizinanLingkunganControll...

140 lines
5.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\PerizinanLingkunganRequest;
use App\Http\Requests\PerusahaanRequest;
use App\Models\JenisDokIL;
use App\Models\JenisKegiatan;
use App\Models\Perusahaan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Inertia\Inertia;
class PerizinanLingkunganController extends Controller
{
public function index()
{
// Mengambil data perusahaan beserta relasinya (misal: jenis kegiatan & jenis dokumen izin)
$perusahaan = Perusahaan::with(['jenisKegiatan', 'jenisDokIL'])->get();
// Mengambil data jenis dokumen izin lingkungan
$jenisKegiatan = JenisKegiatan::all();
$jenisDokIL = JenisDokIL::all();
return Inertia::render('admin/perizinan_lingkungan/index_perizinan_lingkungan', [
'perusahaan' => $perusahaan,
'jenisKegiatan' => $jenisKegiatan,
'jenisDokIL' => $jenisDokIL,
]);
}
// public function update(PerusahaanRequest $request, Perusahaan $perusahaan)
// {
// try {
// DB::beginTransaction();
// $data = $request->validated();
// // Jika tidak ada file ILDokumen yang di-upload, hapus key tersebut agar tidak mengubah nilai sebelumnya
// if (!$request->hasFile('ILDokumen')) {
// unset($data['ILDokumen']);
// } else {
// // Jika sudah ada file sebelumnya, hapus file lama terlebih dahulu
// if ($perusahaan->ILDokumen && Storage::disk('public')->exists($perusahaan->ILDokumen)) {
// Storage::disk('public')->delete($perusahaan->ILDokumen);
// }
// // Buat nama file baru berdasarkan waktu upload dan nama file asli
// $fileName = time() . '_' . $request->file('ILDokumen')->getClientOriginalName();
// $path = $request->file('ILDokumen')->storeAs('files/il', $fileName, 'public');
// $data['ILDokumen'] = $path;
// }
// // Update data perusahaan (termasuk data perizinan lingkungan)
// $perusahaan->update($data);
// DB::commit();
// return redirect()->route('admin.perizinan_lingkungan.index')
// ->with('success', 'Data perizinan lingkungan berhasil diperbarui');
// } catch (\Exception $e) {
// DB::rollBack();
// Log::error('Error updating perizinan lingkungan: ' . $e->getMessage());
// return response()->json(['message' => 'Error: ' . $e->getMessage()], 500);
// }
// }
// public function update(PerizinanLingkunganRequest $request, Perusahaan $perusahaan)
// {
// try {
// DB::beginTransaction();
// $data = $request->validated();
// $perusahaan->ILNomor = $data['ILNomor'] ?? $perusahaan->ILNomor;
// $perusahaan->ILTanggal = $data['ILTanggal'] ?? $perusahaan->ILTanggal;
// $perusahaan->JenisKegiatanId = $data['JenisKegiatanId'] ?? $perusahaan->JenisKegiatanId;
// if ($request->hasFile('ILDokumen')) {
// if ($perusahaan->ILDokumen && Storage::disk('public')->exists($perusahaan->ILDokumen)) {
// Storage::disk('public')->delete($perusahaan->ILDokumen);
// }
// $file = $request->file('ILDokumen');
// $filename = time() . '_' . $file->getClientOriginalName();
// $path = $file->storeAs('files/il', $filename, 'public');
// $perusahaan->ILDokumen = $path;
// }
// $perusahaan->save();
// DB::commit();
// return redirect()->route('admin.perizinan_lingkungan.index')
// ->with('success', 'Data perizinan lingkungan berhasil diperbarui');
// } catch (\Exception $e) {
// DB::rollBack();
// Log::error('Error updating perizinan lingkungan: ' . $e->getMessage());
// return back()->withErrors(['error' => $e->getMessage()]);
// }
// }
public function update(PerizinanLingkunganRequest $request, Perusahaan $perusahaan)
{
try {
DB::beginTransaction();
// Ambil data lengkap dari model (pastikan semua field termasuk yang wajib ada)
$existingData = $perusahaan->getAttributes();
// Ambil data baru hanya dari field perizinan
$newData = $request->only(['ILNomor', 'ILTanggal', 'JenisKegiatanId']);
if ($request->hasFile('ILDokumen')) {
if ($perusahaan->ILDokumen && Storage::disk('public')->exists($perusahaan->ILDokumen)) {
Storage::disk('public')->delete($perusahaan->ILDokumen);
}
$file = $request->file('ILDokumen');
$filename = time() . '_' . $file->getClientOriginalName();
$path = $file->storeAs('files/il', $filename, 'public');
$newData['ILDokumen'] = $path;
}
// Gabungkan data lama dengan data baru (field baru akan override data lama)
$data = array_merge($existingData, $newData);
$perusahaan->update($data);
DB::commit();
return redirect()->route('admin.perizinan_lingkungan.index')
->with('success', 'Data perizinan lingkungan berhasil diperbarui');
} catch (\Exception $e) {
DB::rollBack();
Log::error('Error updating perizinan lingkungan: ' . $e->getMessage());
return back()->withErrors(['error' => $e->getMessage()]);
}
}
}