<?php

namespace App\Http\Controllers;

use App\Models\Category;
use App\Exports\InventoryExport;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;

class InventoryController extends Controller
{
    /**
     * Affiche l'inventaire des produits regroupés par catégorie.
     */
    public function index(Request $request)
    {
        if (auth()->user()->hasRole('Responsable du département')) {
            abort(403, 'Vous n\'êtes pas autorisé à accéder à cette page.');
        }

        $query = Category::with([
            'products' => function ($q) {
                $q->with(['unit', 'supplier'])
                    ->withSum('stocks as total_stock', 'actual_quantity')
                    ->whereDeletedAt(null)
                    ->orderBy('name');
            },
        ])->whereDeletedAt(null)->orderBy('name');

        // Filtre par recherche sur le nom de catégorie
        if ($search = $request->get('search')) {
            $query->where('name', 'like', "%{$search}%");
        }

        $categories = $query->get();

        return view('inventory.index', compact('categories'));
    }

    /**
     * Export de l'inventaire (prend en compte le filtre de recherche).
     */
    public function export(Request $request)
    {
        if (auth()->user()->hasRole('Responsable du département')) {
            abort(403, 'Vous n\'êtes pas autorisé à exporter les données.');
        }

        $search = $request->get('search');
        $export = new InventoryExport($search);

        $filename = 'inventaire_' . now()->format('Y-m-d_His') . '.xlsx';

        return Excel::download($export, $filename);
    }
}
