140 lines
5.4 KiB
PHP
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()]);
|
|
}
|
|
}
|
|
|
|
|
|
}
|