Files
Siro/backend/ride/promo/get.php
T

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");
}
}
?>