<?php

namespace App\Http\Controllers\Frontend;

use App\Exceptions\ApiHttpException;
use App\Facades\ArchivesService;
use App\Http\Controllers\Controller;
use App\Http\Requests\ArchiveListRequest;
use App\Http\Resources\Archives\ArchiveDetailResource;
use App\Http\Resources\Archives\ArchiveResourceCollection;
use Illuminate\Support\Facades\Auth;

class ArchivesController extends Controller
{
    public function index(ArchiveListRequest $request)
    {
        $user = Auth::user();
        $data = $request->validated();

        $archives = ArchivesService::getArchives($data, $user);
        $availableYears = ArchivesService::getAvailableYears($user);

        return new ArchiveResourceCollection($archives, $availableYears);
    }

    public function show(string $slug)
    {
        $user = Auth::user();

        $archive = ArchivesService::getArchiveBySlug($slug, $user);

        if (!$archive) {
            throw new ApiHttpException(404, 'item_not_found');
        }

        return new ArchiveDetailResource($archive);
    }

    public function downloadDocument(string $slug)
    {
        $user = Auth::user();

        return ArchivesService::downloadDocument($slug, $user);
    }
}
