<?php
// pay_invoice.php
// مهم: لا تضمّن header/sidebar قبل عمليات header()/redirect.

if (session_status() === PHP_SESSION_NONE) session_start();

require_once __DIR__ . '/helpers.php';
require_once __DIR__ . '/lang.php';
require_once __DIR__ . '/auth.php';
require_once __DIR__ . '/db_bootstrap.php';
require_once __DIR__ . '/mikrotik_lib.php';
require_once __DIR__ . '/billing_cycle_lib.php';
require_once __DIR__ . '/finance_payment_lib.php';

ensure_db(true);
$conn = $GLOBALS['conn'];
finance_ensure_payments_table($conn);

require_login('login.php');
if (function_exists('require_perm')) require_perm('can_pay_invoices');

$msg = "";
$err = "";
if (empty($_SESSION['pay_invoice_csrf'])) $_SESSION['pay_invoice_csrf'] = bin2hex(random_bytes(24));
$csrf = (string)$_SESSION['pay_invoice_csrf'];

$id = intval($_GET['id'] ?? 0);
if($id<=0){
  $err="رقم الفاتورة غير صحيح";
}

$inv = null;
$paymentDue = false;
if(!$err){
  $inv = $conn->query("
    SELECT i.*,
           s.id AS sid,
           s.full_name,
           s.status AS sub_status
    FROM invoices i
    LEFT JOIN subscribers s ON i.subscriber_id=s.id
    WHERE i.id=$id
    LIMIT 1
  ");
  $inv = ($inv && $inv->num_rows) ? $inv->fetch_assoc() : null;
  if(!$inv) $err="الفاتورة غير موجودة";
  else $paymentDue = finance_invoice_payment_due($inv);
}

if(isset($_POST['confirm_pay']) && !$err){
  if (!hash_equals($csrf, (string)($_POST['csrf_token'] ?? ''))) {
    $err = 'انتهت صلاحية الطلب. حدّث الصفحة ثم أعد المحاولة.';
  } else {
    $payResult = finance_pay_invoice($conn, $id);
  }
  if(!$err && !($payResult['ok'] ?? false)){
    $err = (string)($payResult['error'] ?? 'فشل تسديد الفاتورة');
  } elseif (!$err) {
    if(!empty($payResult['warning'])){
      $_SESSION['flash_warning'] = (string)$payResult['warning'];
    }
    $_SESSION['flash_success'] = !empty($payResult['message_queued'])
      ? "تم تسديد الفاتورة وتحديث السجل وإدراج رسالة تأكيد التسديد ✅"
      : "تم تسديد الفاتورة وتحديث السجل والرصيد ✅";
    $redirect = 'invoices.php';
    if (!empty($payResult['auto_print'])) $redirect .= '?auto_print_invoice=' . $id;
    header('Location: ' . $redirect);
    exit;
  }
}
?>

<?php
// بعد اكتمال المعالجة، ابدأ إخراج الصفحة
include __DIR__ . '/header.php';
include __DIR__ . '/sidebar.php';

if (!empty($_SESSION['flash_success'])) {
  $msg = $_SESSION['flash_success'];
  unset($_SESSION['flash_success']);
}
?>

<div class="content-wrapper ua-extracted-page">
  <section class="content-header">
    <div class="container-fluid d-flex justify-content-between align-items-center">
      <h1 class="mb-0">تسديد فاتورة</h1>
      <div class="d-flex gap-2"><a href="invoices.php" class="btn btn-secondary"><i class="fa fa-arrow-right"></i> رجوع</a><a href="invoices.php" class="btn btn-outline-danger"><i class="fa fa-times"></i> إغلاق</a></div>
    </div>
  </section>

  <section class="content">
    <div class="container-fluid">

      <?php if($msg){ ?><div class="alert alert-success"><?= h($msg) ?></div><?php } ?>
      <?php if($err){ ?><div class="alert alert-danger"><?= h($err) ?></div><?php } ?>

      <?php if(!$err && $inv){ ?>
      <div class="card">
        <div class="card-body">
          <h5 class="mb-3"><b>تفاصيل الفاتورة</b></h5>

          <div class="row">
            <div class="col-md-4"><b>#</b> <?= (int)$inv['id'] ?></div>
            <div class="col-md-4"><b>المشترك:</b> <?= h($inv['full_name'] ?? '-') ?></div>
            <div class="col-md-4"><b>الحالة:</b> <?= h($inv['status'] ?? '-') ?></div>
          </div>

          <div class="row mt-2">
            <div class="col-md-4"><b>المبلغ:</b> <?= number_format((float)($inv['amount'] ?? 0),2) ?></div>
            <div class="col-md-4"><b>الشهر:</b> <?= h($inv['cycle_month'] ?? '-') ?></div>
            <div class="col-md-4"><b>النوع:</b> <?= strtoupper((string)($inv['cycle_type'] ?? 'AUTOMATIC')) === 'EXCEPTIONAL' ? 'دورة استثنائية' : h($inv['invoice_type'] ?? 'BASE') ?></div>
          </div>

          <hr>

          <?php if(($inv['status'] ?? '') === 'مدفوع'){ ?>
            <div class="alert alert-info mb-0">هذه الفاتورة مدفوعة مسبقًا.</div>
          <?php } elseif(!$paymentDue){ ?>
            <div class="alert alert-info mb-0">يتفعل التسديد في تاريخ الاستحقاق: <?= h($inv['due_date'] ?? '-') ?></div>
          <?php } else { ?>
            <form method="post">
              <input type="hidden" name="csrf_token" value="<?= h($csrf) ?>">
              <button class="btn btn-success" name="confirm_pay" onclick="return confirm('تأكيد تسديد الفاتورة؟');">
                <i class="fa fa-check"></i> تأكيد التسديد
              </button>
            </form>
          <?php } ?>

        </div>
      </div>
      <?php } ?>

    </div>
  </section>
</div>

<?php include __DIR__ . '/footer.php'; ?>
