<?php
require 'config.php';
$in = json_decode(file_get_contents('php://input'), true);
$phone = trim($in['phone'] ?? '');
if (!preg_match('/^09\d{9}$/', $phone)) out(['ok'=>false,'msg'=>'شماره موبایل معتبر نیست']);

$now = time();
$stmt = db()->prepare("SELECT * FROM users WHERE phone=?");
$stmt->execute([$phone]);
$u = $stmt->fetch();

// جلوگیری از ارسال رگباری (هر ۲ دقیقه یک‌بار)
if ($u && $u['last_send'] && ($now - $u['last_send']) < 120)
  out(['ok'=>false,'msg'=>'لطفاً کمی صبر کنید و دوباره درخواست دهید']);

$code = (string)random_int(10000, 99999);
$expires = $now + OTP_TTL;

if ($u) {
  db()->prepare("UPDATE users SET otp_code=?, otp_expires=?, attempts=0, last_send=? WHERE phone=?")
      ->execute([$code, $expires, $now, $phone]);
} else {
  db()->prepare("INSERT INTO users (phone, otp_code, otp_expires, last_send) VALUES (?,?,?,?)")
      ->execute([$phone, $code, $expires, $now]);
}

$sms = send_sms($phone, $code);
out([
  'ok' => true,
  'msg' => 'کد تأیید ارسال شد',
  'dev' => DEV_MODE ? $code : null,   // فقط در حالت تست کد را برمی‌گرداند
  'sms_ok' => $sms['ok']
]);