Files

81 lines
2.8 KiB
PHP

<?php
/**
* fuel/get.php — حالة محفظة الوقود للسائق
*
* ‏السقف، المستخدَم، المحجوز، والمتاح — ثم آخر الحركات. الأرقام الأربعة
* ‏معاً لا المتاح وحده: السائق الذي يرى «المتاح ٥» بلا تفسير يظنّها
* ‏عطلاً، والذي يرى «سقفك ٣٠، عليك ٢٠، محجوز ٥» يفهم ويتصرّف.
*/
require_once __DIR__ . '/../connect.php';
require_once __DIR__ . '/functions.php';
$driverId = $user_id ?? '';
if (empty($driverId) || ($role ?? '') !== 'driver') {
jsonError('Unauthorized', 401);
}
$obligation = fuelObligation($con, $driverId);
if (!$obligation) {
jsonSuccess([
'enrolled' => false,
'credit' => null,
'voucher' => null,
'entries' => [],
], 'محفظة الوقود غير مفعّلة');
}
fuelExpireStaleVouchers($con, $driverId);
$state = fuelCreditState($con, $obligation);
$voucher = null;
$entries = [];
try {
$st = $con->prepare("
SELECT id, code, amount_authorized, currency, expires_at
FROM fuel_vouchers
WHERE driver_id = ? AND status = 'issued' AND expires_at >= NOW()
LIMIT 1
");
$st->execute([$driverId]);
if ($row = $st->fetch(PDO::FETCH_ASSOC)) {
$voucher = [
'voucher_id' => (int) $row['id'],
'code' => $row['code'],
'amount' => (float) $row['amount_authorized'],
'expires_at' => $row['expires_at'],
];
}
// ‏آخر عشرين حركة: كافية لشهر تزوّد، وتمنع رداً ينمو بلا حد.
$st = $con->prepare("
SELECT charge_date, amount, amount_collected, amount_remaining,
currency, status, note
FROM obligation_ledger
WHERE obligation_id = ?
ORDER BY id DESC LIMIT 20
");
$st->execute([(int) $obligation['id']]);
$entries = $st->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
error_log('[fuel/get] تعذّرت قراءة الحالة: ' . $e->getMessage());
}
jsonSuccess([
'enrolled' => true,
'credit' => [
'limit' => $state['limit'],
'outstanding' => $state['outstanding'],
'held' => $state['held'],
'available' => $state['available'],
'currency' => $obligation['currency'],
// ‏نسبة الاقتطاع اليومي معروضة صراحةً: الخصم من الأرباح يجب ألّا
// ‏يكون مفاجأة، والسائق الذي يعرف أن الاقتطاع ١٥٪ يخطّط عليه.
'daily_cap_percent' => (float) $obligation['daily_cap_percent'],
],
'voucher' => $voucher,
'entries' => $entries,
], 'success');