<?php

namespace App\Http\Controllers;

use App\Models\Marca;
use Illuminate\Http\Request;
use App\Exports\MarcasExport;
use Maatwebsite\Excel\Facades\Excel;
use PDF;

class MarcaController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(Request $request)
    {
        $busqueda = $request->busqueda;

        if ($busqueda) {
            // Busca en la columna 'marca' de la tabla 'marcas'
            $marcas = Marca::where('marca', 'LIKE', "%{$busqueda}%")->where('eliminado', 0)->get();

            if ($marcas->isEmpty()) {
                return redirect()->route('marca.index')
                    ->with('error', 'No existe ninguna marca con el nombre "' . $busqueda . '". Por favor, inténtalo de nuevo.');
            }
        } else {
            // Si no hay búsqueda, mostrar todas las marcas
            $marcas = Marca::where('eliminado', 0)->get();
        }

        return view('marcas', ['marcas' => $marcas]);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        return view('marcasCrearEditar', ['marca' => null]); // No se necesita pasar marcas
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        // Crea una nueva marca
        $marca = new Marca();
        $marca->marca = $request->marca; // Asigna el nombre ingresado por el usuario
        $marca->eliminado = 0; // Marca como activa por defecto
        $marca->save();

        return redirect()->route('marca.index')->with('success', 'Marca creada exitosamente.');
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        $marca = Marca::findOrFail($id); // Busca la marca por ID
        return view('marcasCrearEditar', ['marca' => $marca]); // Pasa la marca a la vista
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
        $marca = Marca::findOrFail($id); // Encuentra la marca por ID
        $marca->marca = $request->marca; // Actualiza el nombre de la marca
        $marca->eliminado = 0; // Cambia el estado a activo si se está editando
        $marca->save(); // Guarda los cambios

        return redirect()->route('marca.index')->with('success', 'Marca actualizada correctamente.');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy($id)
    {
        $marca = Marca::findOrFail($id); // Encuentra la marca por ID
        $marca->eliminado = 1; // Cambia el estado a inactivo
        $marca->save(); // Guarda los cambios

        return redirect()->route('marca.index')->with('success', 'Marca inactivada correctamente.');
    }

    public function exportExcel()
    {
        return Excel::download(new MarcasExport, 'marcas.xlsx');
    }

    public function exportPDF()
    {
        $marcas = Marca::where('eliminado', 0)->get();
        $pdf = PDF::loadView('exports.marcas-pdf', ['marcas' => $marcas]);
        return $pdf->download('marcas.pdf');
    }
}