<?php

namespace App\Http\Controllers\Petani;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Produk;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;

class ProdukController extends Controller
{
    // Tampilkan Daftar Produk Petani
    public function index()
    {
        $produks = Produk::where('petani_id', Auth::guard('petani')->id())->latest()->get();
        return view('petani.produk.index', compact('produks'));
    }

    // Form Tambah Produk
    public function create()
    {
        return view('petani.produk.create');
    }

    // Simpan Produk Baru
    public function store(Request $request)
    {
        $request->validate([
            'nama_produk' => 'required|string|max:255',
            'harga'       => 'required|numeric|min:0',
            'stok'        => 'required|integer|min:0',
            'deskripsi'   => 'required|string',
            'foto_produk' => 'required|image|mimes:jpeg,png,jpg|max:2048', 
        ]);

        $fotoPath = null;
        if ($request->hasFile('foto_produk')) {
            $fotoPath = $request->file('foto_produk')->store('produk', 'public');
        }

        Produk::create([
            'petani_id'   => Auth::guard('petani')->id(),
            'nama_produk' => $request->nama_produk,
            'harga'       => $request->harga,
            'stok'        => $request->stok,
            'deskripsi'   => $request->deskripsi,
            'foto_produk' => $fotoPath,
        ]);

        return redirect()->route('petani.produk.index')->with('success', 'Produk berhasil ditambahkan.');
    }

    // Form Edit Produk
    public function edit($id)
    {
        $produk = Produk::where('id', $id)->where('petani_id', Auth::guard('petani')->id())->firstOrFail();
        return view('petani.produk.edit', compact('produk'));
    }

    // Update Produk
    public function update(Request $request, $id)
    {
        $produk = Produk::where('id', $id)->where('petani_id', Auth::guard('petani')->id())->firstOrFail();

        $request->validate([
            'nama_produk' => 'required|string|max:255',
            'harga'       => 'required|numeric|min:0',
            'stok'        => 'required|integer|min:0',
            'deskripsi'   => 'required|string',
            'foto_produk' => 'nullable|image|mimes:jpeg,png,jpg|max:2048', 
        ]);

        if ($request->hasFile('foto_produk')) {
            if ($produk->foto_produk && Storage::disk('public')->exists($produk->foto_produk)) {
                Storage::disk('public')->delete($produk->foto_produk);
            }
            $produk->foto_produk = $request->file('foto_produk')->store('produk', 'public');
        }

        $produk->update([
            'nama_produk' => $request->nama_produk,
            'harga'       => $request->harga,
            'stok'        => $request->stok,
            'deskripsi'   => $request->deskripsi,
        ]);
        
        if ($request->hasFile('foto_produk')) {
            $produk->save();
        }

        return redirect()->route('petani.produk.index')->with('success', 'Produk berhasil diperbarui.');
    }

    // Hapus Produk
    public function destroy($id)
    {
        $produk = Produk::where('id', $id)->where('petani_id', Auth::guard('petani')->id())->firstOrFail();
        
        if ($produk->foto_produk && Storage::disk('public')->exists($produk->foto_produk)) {
            Storage::disk('public')->delete($produk->foto_produk);
        }

        $produk->delete();

        return redirect()->route('petani.produk.index')->with('success', 'Produk berhasil dihapus.');
    }
}