<?php

namespace App\Http\Controllers;

use App\Imports\PlanMantenimientoImporter;
use App\Models\Importacion;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;

class ImportacionController extends Controller
{
    public function index()
    {
        $registros = Importacion::with('usuario')->orderByDesc('id')->paginate(20);
        return view('importacion.index', compact('registros'));
    }

    public function store(Request $r)
    {
        $r->validate(['archivo' => 'required|file|mimes:xls,xlsx|max:20480']);
        $f = $r->file('archivo');
        $ruta = $f->store('importaciones', 'public');
        $imp = Importacion::create([
            'archivo_original' => $f->getClientOriginalName(),
            'archivo_ruta' => $ruta,
            'estado' => 'pendiente',
            'usuario_id' => auth()->id(),
        ]);
        try {
            (new PlanMantenimientoImporter($imp))->importar(Storage::disk('public')->path($ruta));
        } catch (\Throwable $e) {
            return redirect()->route('importacion.show', $imp)->with('error', 'Falló: ' . $e->getMessage());
        }
        return redirect()->route('importacion.show', $imp)->with('exito', 'Importación procesada.');
    }

    public function show(Importacion $importacion)
    {
        $importacion->load(['errores','usuario']);
        return view('importacion.show', compact('importacion'));
    }
}
