File "AnalyticsCredentialsValidator.php"

Full Path: /var/www/drive/foundation/src/Settings/Validators/AnalyticsCredentialsValidator.php
File size: 959 bytes
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Common\Settings\Validators;

use Common\Admin\Analytics\Actions\BuildGoogleAnalyticsReport;
use Exception;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Config;

class AnalyticsCredentialsValidator
{
    const KEYS = [
        'analytics_property_id',
        'analytics.tracking_code',
        'certificate',
    ];

    public function fails($settings): array|false
    {
        $this->setConfigDynamically($settings);

        try {
            (new BuildGoogleAnalyticsReport([]))->execute();
        } catch (Exception $e) {
            return [
                'analytics_group' => "Invalid credentials: {$e->getMessage()}",
            ];
        }

        return false;
    }

    private function setConfigDynamically(array $settings): void
    {
        if ($propertyId = Arr::get($settings, 'analytics_property_id')) {
            Config::set('services.google.analytics_property_id', $propertyId);
        }
    }
}