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()]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| }
 |