<?php

namespace App\Http\Controllers;

use App\Models\Fournisseur;
use Illuminate\Http\Request;

class FournisseurControlleur extends Controller
{
    /**
     * Liste des fournisseurs
     */
    public function index()
    {
        $fournisseurs = Fournisseur::latest()->paginate(10);
        return view('fournisseurs.index', compact('fournisseurs'));
    }

    /**
     * Enregistrer un fournisseur
     */
    public function store(Request $request)
    {
        $validated = $request->validate([
            'nom' => 'required|string|max:255',
            'contact' => 'required|string|max:255',
            'email' => 'nullable|email|max:255',
            'adresse' => 'nullable|string|max:255',
        ]);
        Fournisseur::create($validated);
        return redirect()->route('fournisseurs.index')->with('success', 'Fournisseur créé avec succès');
    }

    /**
     * Display the specified resource.
     */
    public function show(string $id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit(string $id)
    {
        //
    }

    /**
     * Mise à jour du fournisseur
     */
    public function update(Request $request, string $id)
    {
        $validated = $request->validate([
            'nom' => 'required|string|max:255',
            'contact' => 'required|string|max:255',
            'email' => 'nullable|email|max:255',
            'adresse' => 'nullable|string|max:255',
        ]);

        //Vérifie si le fournisseur existe
        $fournisseur = Fournisseur::findOrFail(Fournisseur::keyFromHashId($id));
        //On applique la mise à jour
        $fournisseur->update($validated);
        return redirect()->route('fournisseurs.index')->with('success', 'Fournisseur mis à jour avec succès');
    }

    /**
     * Suppression d'un fournisseur
     */
    public function destroy(string $id)
    {
        //Vérifie si le fournisseur existe
        $fournisseur = Fournisseur::findOrFail(Fournisseur::keyFromHashId($id));
        //On supprime le fournisseur
        $fournisseur->update([
            'deleted_at' => now()
        ]);
        return redirect()->route('fournisseurs.index')->with('success', 'Fournisseur supprimé avec succès');
    }
}