<?php

namespace App\Livewire\Scss;

use App\Models\Products\Product;
use App\Models\Scss\ScssFile;
use App\Models\Scss\ScssVersion;
use App\Services\Scss\ScssStorageService;
use Livewire\Component;

class Show extends Component
{
    public Product $product;
    public ScssVersion $scssVersion;
    public ScssFile $scssFile;

    public function mount(Product $product, ScssVersion $scssVersion, ScssFile $scssFile)
    {
        $this->product = $product;
        $this->scssVersion = $scssVersion;
        $this->scssFile = $scssFile->load(['scssVersion.product', 'creator', 'updater']);
    }

    public function delete()
    {
        $this->authorize('admin.scss.file.destroy');
        
        try {
            // Eliminar archivo físico
            ScssStorageService::deleteFile(
                $this->product,
                $this->scssFile->scssVersion,
                $this->scssFile->filename
            );

            // Eliminar de BD
            $this->scssFile->delete();

            session()->flash('success', 'Archivo SCSS eliminado correctamente.');

            return $this->redirect(route('products.scss.version.show', [$this->product, $this->scssVersion]), navigate: true);
        } catch (\Exception $e) {
            session()->flash('error', 'Error al eliminar el archivo: ' . $e->getMessage());
        }
    }

    public function render()
    {
        return view('livewire.scss.show', [
            'product' => $this->product,
        ])->layout('layouts.app');
    }
}

