<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\Video as VideoModel;

class VideoController extends Controller
{
    public function store(Request $request)
    {
        // Validar que el request contiene un archivo de video válido
        $validator = Validator::make($request->all(), [
            'video' => 'required|mimes:mp4,mkv|max:102400', // Ajusta el tamaño máximo según tus necesidades
        ]);

        if ($validator->fails()) {
            return response()->json(['error' => 'Invalid video file'], 400);
        }

        // Obtener el archivo de video del request
        $video = $request->file('video');
        $time = time();

        // Generar un nombre único para el video
        $videoName = $time . '.' . $video->getClientOriginalExtension();

        // Guardar el video en la carpeta pública
        $video->move(public_path('videos'), $videoName);

        // Guardar la referencia al video en la base de datos
        $videoModel = new VideoModel();
        $videoModel->path = '/videos/' . $videoName;
        $videoModel->name = $time;
        $videoModel->save();

        return response()->json(['name' => $time]);
    }

    public function show($name)
    {
        $video = VideoModel::where('name', $name)->first();

        if (!$video) {
            return response()->json(['message' => 'Video not found'], 404);
        }

        $videoPath = public_path($video->path);

        // Verificar si el archivo de video existe
        if (!file_exists($videoPath)) {
            return response()->json(['message' => 'Video file not found'], 404);
        }

        return response()->file($videoPath);
    }
}
