<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Produk;
use Illuminate\Http\Request;
use App\Models\Resep;

class ResepController extends Controller
{
    // app/Http/Controllers/ResepController.php

    public function index(Request $request)
    {
        $query = \App\Models\Produk::with('resep');

        if ($request->has('search') && $request->search != '') {
            $search = $request->search;
            $query->where('nama_produk', 'LIKE', "%{$search}%")
                  ->orWhere('id_produk', 'LIKE', "%{$search}%");
        }

        $produk = $query->paginate(5)->withQueryString();
        $totalProduk = \App\Models\Produk::count();
        $resepDiatur = \App\Models\Produk::has('resep')->count();
        $belumDiatur = $totalProduk - $resepDiatur;
        $bahans = \App\Models\Bahan::all();

        // Pastikan ini sama persis dengan nama file di views/admin/
        return view('admin.resep', compact('produk', 'totalProduk', 'resepDiatur', 'belumDiatur', 'bahans'));
    }

    public function store(Request $request)
    {
        // Validasi input
        $request->validate([
            'produk_id' => 'required',
            'nama_bahan' => 'required',
            'jumlah' => 'required|numeric',
            'satuan' => 'required',
        ]);

        // Simpan ke database
        \App\Models\Resep::create($request->all());

        // Redirect kembali dengan pesan sukses
        return redirect()->back()->with('success', 'Bahan resep berhasil ditambahkan!');
    }

    public function show($id)
    {
        $produk = \App\Models\Produk::with('resep')->findOrFail($id);
        $bahans = \App\Models\Bahan::all();
        return view('admin.resep-detail', compact('produk', 'bahans'));
    }

    // Fungsi untuk memproses update data
    // Contoh untuk fungsi update di ResepController.php
    public function update(Request $request, $id)
    {
        $request->validate([
            'nama_bahan' => 'required|string|max:255',
            'jumlah' => 'required|numeric|min:0',
            'satuan' => 'required|string|max:50',
        ]);

        $resep = \App\Models\Resep::findOrFail($id);
        $resep->update($request->all());

        return back()->with('success', 'Bahan berhasil diperbarui!');
    }

    // Fungsi untuk menghapus data
    public function destroy($id)
    {
        $resep = \App\Models\Resep::findOrFail($id);
        $resep->delete();

        return back()->with('success', 'Bahan berhasil dihapus!');
    }

    public function export()
    {
        $dataResep = \App\Models\Resep::with('produk')->get();
        $namaFile = "Laporan_Resep_" . date('Y-m-d') . ".xls";

        // Ubah bagian ini agar sesuai dengan lokasi file Anda sekarang
        return response()->view('admin.excel', [
            'data' => $dataResep
        ])
            ->header('Content-Type', 'application/vnd.ms-excel; charset=utf-8')
            ->header('Content-Disposition', 'attachment; filename="' . $namaFile . '"');
    }

    public function edit($id)
    {
        $resep = \App\Models\Resep::findOrFail($id);
        return view('admin.resep.edit', compact('resep'));
    }
}
