<?php
// public/upgrade_geo.php
declare(strict_types=1);

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

require __DIR__ . '/../app/config.php';
require __DIR__ . '/../app/db.php';

function out($msg) {
  echo "<div style='font-family:Tahoma,Arial; padding:10px; border:1px solid #223; margin:8px 0; border-radius:8px; background:#0f172a; color:#e5e7eb'>".$msg."</div>";
}

function has_column(string $table, string $col): bool {
  try {
    if (function_exists('db_one')) {
      $r = db_one("SHOW COLUMNS FROM `$table` LIKE ?", [$col]);
      return !empty($r);
    }
    // Fallback PDO (إذا ما في db_one)
    global $pdo;
    if ($pdo instanceof PDO) {
      $st = $pdo->prepare("SHOW COLUMNS FROM `$table` LIKE ?");
      $st->execute([$col]);
      return (bool)$st->fetch(PDO::FETCH_ASSOC);
    }
  } catch (Throwable $e) {
    return false;
  }
  return false;
}

function run_sql(string $sql): void {
  if (function_exists('db_exec')) {
    db_exec($sql, []);
    return;
  }
  global $pdo;
  if (!($pdo instanceof PDO)) {
    throw new RuntimeException("DB connection not available (no db_exec and no PDO).");
  }
  $pdo->exec($sql);
}

out("بدء ترقية الإحداثيات (Geo Upgrade): إضافة lat/lng إلى farms و assets");

$tasks = [
  ['farms',  'lat', "ALTER TABLE `farms`  ADD COLUMN `lat` DECIMAL(10,7) NULL"],
  ['farms',  'lng', "ALTER TABLE `farms`  ADD COLUMN `lng` DECIMAL(10,7) NULL"],
  ['assets', 'lat', "ALTER TABLE `assets` ADD COLUMN `lat` DECIMAL(10,7) NULL"],
  ['assets', 'lng', "ALTER TABLE `assets` ADD COLUMN `lng` DECIMAL(10,7) NULL"],
];

$ok = 0; $skip = 0;

foreach ($tasks as [$table, $col, $sql]) {
  if (has_column($table, $col)) {
    out("✅ موجود مسبقاً: <b>$table.$col</b> (تخطي)");
    $skip++;
    continue;
  }
  try {
    run_sql($sql);
    out("✅ تمت الإضافة: <b>$table.$col</b>");
    $ok++;
  } catch (Throwable $e) {
    out("❌ فشل إضافة <b>$table.$col</b><br><small style='opacity:.9'>".$e->getMessage()."</small>");
  }
}

out("انتهت الترقية. تمت الإضافة: <b>$ok</b> | تم التخطي: <b>$skip</b>");
out("مهم: بعد التأكد أن كل شيء يعمل، احذفي الملف <b>public/upgrade_geo.php</b>.");

