#!/bin/bash
# NexSMS startup script — synchronous pre-flight, then exec PHP (mirrors NDC pattern)
cd "$(dirname "$0")"

echo "=== NexSMS Bulk SMS Platform Starting ==="

# Determine the base URL dynamically
if [ -n "$REPLIT_DEV_DOMAIN" ]; then
    BASE_URL="https://${REPLIT_DEV_DOMAIN}/"
else
    BASE_URL="http://localhost:${PORT:-22166}/"
fi
echo "Setting baseURL to: $BASE_URL"

# Update .env baseURL
if grep -q "^app.baseURL" .env 2>/dev/null; then
    sed -i "s|^app.baseURL.*|app.baseURL = '${BASE_URL}'|" .env || true
else
    echo "app.baseURL = '${BASE_URL}'" >> .env || true
fi

# Ensure writable directories exist
mkdir -p writable/session writable/logs writable/cache writable/uploads
chmod -R 777 writable/ 2>/dev/null || true
mkdir -p public/uploads/logo public/uploads/sender_id_requests
chmod -R 755 public/uploads/ 2>/dev/null || true

# On Replit: run database migrations synchronously
if [ -n "$DATABASE_URL" ]; then
    echo "Checking database..."

    # Apply base schema if users table is missing
    TABLE_EXISTS=$(psql "$DATABASE_URL" -tAc "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='public' AND table_name='users';" 2>/dev/null | tr -d '[:space:]' || echo "0")
    if [ "$TABLE_EXISTS" = "0" ] && [ -f "database/schema_pg.sql" ]; then
        echo "Importing base schema..."
        psql "$DATABASE_URL" < database/schema_pg.sql 2>/dev/null || echo "Base schema import had warnings (non-fatal)."
    fi

    # Apply consolidated v2 migration (includes all v2 + v2.1 changes) if not yet done
    SCHEMA_VER=$(psql "$DATABASE_URL" -tAc "SELECT value FROM settings WHERE key='schema_version';" 2>/dev/null | tr -d '[:space:]' || echo "")
    if [ "$SCHEMA_VER" != "v2.1" ] && [ -f "database/migration_v2.sql" ]; then
        echo "Applying v2 migration..."
        psql "$DATABASE_URL" -f database/migration_v2.sql 2>/dev/null && \
        psql "$DATABASE_URL" -c "INSERT INTO settings (key,value) VALUES ('schema_version','v2.1') ON CONFLICT (key) DO UPDATE SET value='v2.1';" 2>/dev/null && \
        echo "v2 migration applied." || echo "v2 migration had warnings (non-fatal)."
    else
        echo "Database is up to date (v2.1)."
    fi

    # Seed admin user
    echo "Running database seeder..."
    php spark db:seed AdminSeeder 2>&1 || echo "Seeder warning (non-fatal)."
fi

# Start CodeIgniter PHP server — exec replaces shell so Replit tracks PHP directly
echo "Starting NexSMS PHP server on port ${PORT:-22166}..."
exec php spark serve --host 0.0.0.0 --port "${PORT:-22166}"
