<?php

namespace App\Http\Controllers\Cliente;

use App\Http\Controllers\Controller;
use App\Models\Contrato;
use App\Models\Documento;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\StreamedResponse;

class DocumentoController extends Controller
{
    public function index()
    {
        $contratos = Contrato::where('email', auth()->user()->email)
            ->pluck('id');

        $documentos = Documento::whereIn('contrato_id', $contratos)
            ->where('visivel_cliente', true)
            ->with('contrato')
            ->latest()
            ->get()
            ->groupBy('categoria');

        return view('pages.cliente.documentos', compact('documentos'));
    }

    public function download(Documento $documento): StreamedResponse
    {
        $contratos = Contrato::where('email', auth()->user()->email)->pluck('id');

        abort_unless(
            $contratos->contains($documento->contrato_id) && $documento->visivel_cliente,
            403
        );

        abort_unless(Storage::disk('private')->exists($documento->arquivo), 404);
        return Storage::disk('private')->download($documento->arquivo, $documento->nome);
    }
}
