<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Portada extends Model
{
    use HasFactory;

    protected $table = 'portada';

    protected $fillable = [
        'enlace',
        'enlace_mobile',
        'mostrar_boton',
        'target_blank',
        'titulo_boton',
        'enlace_boton'
    ];

    protected $casts = [
        'created_at' => 'datetime:d-m-Y H:i:s',
        'updated_at' => 'datetime:d-m-Y H:i:s',
        'mostrar_boton' => 'boolean',
        'target_blank' => 'boolean',
    ];

    protected $appends = [
        'video_url_formateado',
        'mobile_video_url_formateado'
    ];

    private function extractVideoCode(string $url): ?string
    {
        $video_code = null;

        if (preg_match('/\?v=([a-zA-Z0-9_-]+)/', $url, $matches)) {
            $video_code = $matches[1];
        } elseif (preg_match('/\/([a-zA-Z0-9_-]+)$/', $url, $matches)) {
            $video_code = $matches[1];
        }

        return $video_code;
    }

    public function getVideoUrlFormateadoAttribute(): ?string
    {
        $video_code = $this->extractVideoCode($this->enlace);
        if (!$video_code) return null;

        return "https://www.youtube.com/embed/{$video_code}?autoplay=1&loop=1&mute=1&playlist={$video_code}&controls=0&modestbranding=1&rel=0&enablejsapi=1&fs=0";
    }

    public function getMobileVideoUrlFormateadoAttribute(): ?string
    {
        $video_code = $this->extractVideoCode($this->enlace_mobile);
        if (!$video_code) return null;

        return "https://www.youtube.com/embed/{$video_code}?autoplay=1&loop=1&mute=1&playlist={$video_code}&controls=0&modestbranding=1&rel=0&enablejsapi=1&fs=0";
    }
}
