<?php

namespace App\Http\Controllers\Api\V1\Admin\Integration;

use App\Models\AdminSite;
use App\Support\ApiMessage;
use App\Support\ApiResponse;
use App\Lottery\ErrorCode;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use App\Support\AdminIntegrationSiteAccess;
use App\Support\AdminIntegrationSitePresenter;

final class AdminIntegrationSiteShowController extends Controller
{
    public function __invoke(Request $request, AdminSite $admin_site): JsonResponse
    {
        $admin = $request->lotteryAdmin();
        abort_if($admin === null, 401);

        if (! AdminIntegrationSiteAccess::canAccess($admin, $admin_site)) {
            return ApiMessage::errorResponse($request, 'admin.site_access_denied', ErrorCode::AdminForbidden->value, null, 403);
        }

        return ApiResponse::success(AdminIntegrationSitePresenter::detail($admin_site));
    }
}
