44 lines
1.8 KiB
PHP
44 lines
1.8 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../../connect.php';
|
|
|
|
$promo_code = filterRequest("promo_code");
|
|
|
|
if (!empty($promo_code)) {
|
|
$sql = "SELECT `id`, `promo_code`, `amount`, `description`, `passengerID`, `validity_start_date`, `validity_end_date`
|
|
FROM `promos`
|
|
WHERE `promo_code` = :promo_code
|
|
AND CURDATE() BETWEEN validity_start_date AND validity_end_date";
|
|
$stmt = $con->prepare($sql);
|
|
$stmt->bindParam(':promo_code', $promo_code, PDO::PARAM_STR);
|
|
} else {
|
|
// سرد كل العروض — استعمال إداري بحت (شاشة الهدايا والعروض).
|
|
// هذا الملف تحت /ride لا تحت /Admin، فلا تغطّيه البوّابة العامة في
|
|
// connect.php؛ بدون هذا الفحص كان أي راكب يستطيع سرد العروض كلها.
|
|
if ($role !== 'admin' && $role !== 'super_admin') {
|
|
http_response_code(403);
|
|
echo json_encode([
|
|
'status' => 'failure',
|
|
'message' => 'Forbidden. Admin access required to list promos.',
|
|
], JSON_UNESCAPED_UNICODE);
|
|
exit;
|
|
}
|
|
|
|
// كان الشرط `passengerID IN ('all','none','')` يُخفي كل عرض مخصّص لراكب
|
|
// بعينه، فتظهر شاشة العروض ناقصة دون سبب ظاهر. الإدارة يجب أن ترى الكل.
|
|
$sql = "SELECT `id`, `promo_code`, `amount`, `description`, `passengerID`, `validity_start_date`, `validity_end_date` FROM `promos` ORDER BY id DESC";
|
|
$stmt = $con->prepare($sql);
|
|
}
|
|
|
|
$stmt->execute();
|
|
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
if ($result || (empty($promo_code) && is_array($result))) {
|
|
jsonSuccess($result);
|
|
} else {
|
|
if (!empty($promo_code)) {
|
|
jsonError("Promo code not found or expired");
|
|
} else {
|
|
jsonSuccess([], "No promos found");
|
|
}
|
|
}
|
|
?>
|