<?php

declare(strict_types=1);

// ── Environment ──────────────────────────────────────────────────────────────
define('APP_ENV',     getenv('APP_ENV') ?: 'development');   // production | development
define('APP_DEBUG',   APP_ENV === 'development');
define('APP_NAME',    'New Chinese Club Restaurant');
define('APP_VERSION', '1.0.0');
define('APP_URL',     getenv('APP_URL') ?: 'http://localhost:8084/abc/food_delivery/public');

// ── Paths ─────────────────────────────────────────────────────────────────────
define('BASE_PATH',    dirname(__DIR__));
define('CONFIG_PATH',  BASE_PATH . '/config');
define('CORE_PATH',    BASE_PATH . '/core');
define('APP_PATH',     BASE_PATH . '/app');
define('VIEW_PATH',    BASE_PATH . '/views');
define('STORAGE_PATH', BASE_PATH . '/storage');
define('LOG_PATH',     BASE_PATH . '/logs');
define('UPLOAD_PATH',  BASE_PATH . '/public/uploads');
define('UPLOAD_URL',   APP_URL   . '/uploads');

// ── Database ──────────────────────────────────────────────────────────────────
define('DB_HOST',    getenv('DB_HOST')    ?: '127.0.0.1');
define('DB_PORT',    getenv('DB_PORT')    ?: '3306');
define('DB_NAME',    getenv('DB_NAME')    ?: 'food_delivery');
define('DB_USER',    getenv('DB_USER')    ?: 'root');
define('DB_PASS',    getenv('DB_PASS')    ?: '');
define('DB_CHARSET', 'utf8mb4');

// ── Session ───────────────────────────────────────────────────────────────────
define('SESSION_NAME',     'fd_session');
define('SESSION_LIFETIME', 7200);          // seconds (2 hours)

// ── Security ──────────────────────────────────────────────────────────────────
define('CSRF_TOKEN_NAME', '_csrf_token');
define('CSRF_TOKEN_EXP',  28800);          // 8 hours
define('LOGIN_MAX_ATTEMPTS', 5);
define('LOGIN_LOCKOUT_MINUTES', 30);
define('BCRYPT_COST', 12);

// ── JWT (for Flutter API) ─────────────────────────────────────────────────────
define('JWT_SECRET',      getenv('JWT_SECRET') ?: 'change-this-secret-in-production');
define('JWT_EXPIRY',      86400 * 7);      // 7 days

// ── File Uploads ──────────────────────────────────────────────────────────────
define('UPLOAD_MAX_SIZE',       2048);     // KB
define('UPLOAD_ALLOWED_TYPES',  ['image/jpeg', 'image/png', 'image/webp']);
define('UPLOAD_ALLOWED_EXT',    ['jpg', 'jpeg', 'png', 'webp']);
define('THUMB_WIDTH',           300);
define('THUMB_HEIGHT',          300);

// ── Pagination ────────────────────────────────────────────────────────────────
define('ITEMS_PER_PAGE', 15);

// ── Error reporting ───────────────────────────────────────────────────────────
if (APP_DEBUG) {
    error_reporting(E_ALL);
    ini_set('display_errors', '1');
} else {
    error_reporting(0);
    ini_set('display_errors', '0');
}

ini_set('log_errors', '1');
ini_set('error_log', LOG_PATH . '/php_errors.log');
