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


}
