<?php

namespace App\Http\Controllers;

use App\Models\Combustible;
use App\Models\Files;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Storage;

class FilesController extends Controller
{
    private $tipos = [
        'combustible' => Combustible::class
    ];

    public function show(Int $id)
    {
        $files = Files::find($id);
        if (!$files)
            abort(404);

        return Storage::download($files->ruta, config('app.name') . ' - ' . $files->titulo);
    }

    public function store(String $model)
    {
        $file = request()->file('file');
        $type = request('type', null);

        $className = $this->tipos[$model];
        if (!$className)
            abort(404);

        $model = new Files();
        return $model->uploadBorrador(
            $file,
            $className,
            $type
        );
    }

    public function destroy(String $model, $id): Response
    {
        $className = $this->tipos[$model];
        if (!$className)
            abort(404);

        Files::findOrFail($id)
            ->where('borrador', true)
            ->delete();

        return response()->noContent();
    }
}
