<?php

namespace App\Http\Controllers;

use App\Models\Magasin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class MagasinController extends Controller
{
    /**
     * Liste des magasins
     */
    public function index()
    {
        $magasins = Magasin::latest()->paginate(10)->get();

        return view('magasins.index', compact('magasins'));
    }



    /**
     * Ajout d'un magasin
     */
    public function store(Request $request)
    {
        $validated = $request->validate([
            'nom' => 'required|string|max:255',
            'adresse' => 'nullable|string|max:150',
            'telephone' => 'nullable|string|min:10',
        ]);

        //Inclure le user_id
        $validated['user_id'] = Auth::id();
        Magasin::create($validated);

        return redirect()->route('magasins.index')->with('success', 'Magasin créé avec succès');
    }



    /**
     * Mise à jour des informations du magasin
     */
    public function update(Request $request, string $id)
    {
        $validated = $request->validate([
            'nom' => 'required|string|max:255',
            'adresse' => 'nullable|string|max:150',
            'telephone' => 'nullable|string|min:10',
        ]);

        $magasin = Magasin::findOrFail($id);
        $validated['user_id'] = Auth::id();
        $magasin->update($validated);
        return redirect()->route('magasins.index')->with('success', 'Magasin mis à jour avec succès');
    }

    /**
     * Suppression du magasin
     */
    public function destroy(string $id)
    {
        //Vérifie si le magasin existe
        $magasin = Magasin::findOrFail($id);

        if ($magasin->ventes()->exists()) {
            return redirect()->route('magasins.index')->with('error', 'Ce magasin ne peut pas être supprimé car il a des ventes liées');
        }

        $magasin->delete();
        return redirect()->route('magasins.index')->with('success', 'Magasin supprimé avec succès');
    }

    /**
     * Désactivation d'un magasin
     */

    public function disabledStore(Request $request, string $id)
    {
        //Vérifie si le magasin existe
        $magasin = Magasin::findOrFail($id);

        //Désactive le magasin
        $magasin->update(['disabled' => true]);
        return redirect()->route('magasins.index')->with('success', 'Magasin désactivé avec succès');
    }
}