$code, 'discount_type' => $discountType, 'discount_value' => $discountValue, 'min_order_amount' => $minOrderAmount ?: null, 'max_uses' => $maxUses ?: null, 'expires_at' => $expiresAt, 'is_active' => $isActive ]; if ($action === 'update' && $couponId) { db()->update('coupons', $data, 'coupon_id = :id', ['id' => $couponId]); setFlash('success', 'Coupon updated'); } else { // Check for duplicate code $existing = db()->fetch("SELECT id FROM coupons WHERE code = :code", ['code' => $code]); if ($existing) { setFlash('error', 'Coupon code already exists'); } else { $data['coupon_id'] = generateId('coup_'); $data['times_used'] = 0; db()->insert('coupons', $data); setFlash('success', 'Coupon created'); } } } header('Location: /admin/coupons.php'); exit; } if ($action === 'delete' && !empty($_POST['coupon_id'])) { db()->delete('coupons', 'coupon_id = :id', ['id' => $_POST['coupon_id']]); setFlash('success', 'Coupon deleted'); header('Location: /admin/coupons.php'); exit; } if ($action === 'toggle' && !empty($_POST['coupon_id'])) { $coupon = db()->fetch("SELECT is_active FROM coupons WHERE coupon_id = :id", ['id' => $_POST['coupon_id']]); if ($coupon) { db()->update('coupons', ['is_active' => !$coupon['is_active']], 'coupon_id = :id', ['id' => $_POST['coupon_id']]); setFlash('success', 'Coupon status updated'); } header('Location: /admin/coupons.php'); exit; } } // Get coupons $coupons = db()->fetchAll("SELECT * FROM coupons ORDER BY created_at DESC"); ?>
| Code | Discount | Min Order | Usage | Expires | Status | Actions |
|---|---|---|---|---|---|---|
| No coupons created yet | ||||||
| = htmlspecialchars($coupon['code']) ?> | = $coupon['discount_value'] ?>% off = formatCurrency($coupon['discount_value']) ?> off | = $coupon['min_order_amount'] ? formatCurrency($coupon['min_order_amount']) : '-' ?> | = $coupon['times_used'] ?>= $coupon['max_uses'] ? '/' . $coupon['max_uses'] : '' ?> | = formatDate($coupon['expires_at']) ?> = formatDate($coupon['expires_at']) ?> Never | Disabled Expired Maxed Out Active | |