<?php
declare(strict_types=1);

if (!function_exists('env_value')) {
    function env_value(string $key, ?string $default = null): ?string
    {
        static $loaded = false;

        if (!$loaded) {
            $envFile = dirname(__DIR__, 2) . '/.env';
            if (is_file($envFile)) {
                foreach (file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) {
                    $line = trim($line);
                    if ($line === '' || $line[0] === '#' || strpos($line, '=') === false) {
                        continue;
                    }
                    [$name, $value] = explode('=', $line, 2);
                    $name = trim($name);
                    $value = trim($value);
                    $first = substr($value, 0, 1);
                    $last = substr($value, -1);
                    if (($first === '"' && $last === '"') || ($first === "'" && $last === "'")) {
                        $value = substr($value, 1, -1);
                    }
                    if (getenv($name) === false) {
                        putenv($name . '=' . $value);
                        $_ENV[$name] = $value;
                    }
                }
            }
            $loaded = true;
        }

        $value = getenv($key);
        return $value === false ? $default : $value;
    }
}

return [
    'db' => [
        'host' => env_value('DB_HOST', '127.0.0.1'),
        'name' => env_value('DB_NAME', 'huquq_ishleri'),
        'user' => env_value('DB_USER', 'root'),
        'pass' => env_value('DB_PASS', ''),
        'charset' => env_value('DB_CHARSET', 'utf8mb4'),
    ],
    'api_token' => env_value('API_TOKEN', ''),
    'web_auth' => [
        'login' => env_value('ERP_LOGIN', ''),
        'password_sha256' => strtolower((string)env_value('ERP_PASSWORD_SHA256', '')),
        'session_ttl' => (int)env_value('ERP_SESSION_TTL', '28800'),
    ],
    'google_auth' => [
        'client_id' => env_value('GOOGLE_OAUTH_CLIENT_ID', ''),
        'client_secret' => env_value('GOOGLE_OAUTH_CLIENT_SECRET', ''),
        'redirect_uri' => env_value('GOOGLE_OAUTH_REDIRECT_URI', ''),
        'allowed_emails' => env_value('GOOGLE_OAUTH_ALLOWED_EMAILS', ''),
        'allowed_domain' => env_value('GOOGLE_OAUTH_ALLOWED_DOMAIN', ''),
    ],
    'upload_root' => env_value('UPLOAD_ROOT', dirname(__DIR__, 2) . '/uploads'),
    'gcal' => [
        'python' => env_value('GCAL_PYTHON', 'python3'),
        'script' => env_value('GCAL_SCRIPT', dirname(__DIR__, 3) . '/gcal_quick.py'),
    ],
];
