<?php

namespace App\Services\Providers;

use App\Models\Tenant;

final class MicrosoftGraphOptionsResolver
{
    public function __construct(
        private readonly ProviderConnectionResolver $connections,
        private readonly ProviderGateway $gateway,
    ) {}

    /**
     * @return array<string, mixed>
     */
    public function resolveForTenant(Tenant $tenant, array $overrides = []): array
    {
        $resolution = $this->connections->resolveDefault($tenant, 'microsoft');

        if (! $resolution->resolved || $resolution->connection === null) {
            throw ProviderConfigurationRequiredException::forTenant(
                $tenant,
                provider: 'microsoft',
                resolution: $resolution,
            );
        }

        return $this->gateway->graphOptions($resolution->connection, $overrides);
    }
}
