prepare("INSERT INTO customers (phone, name_en, name_ar, email, address_en, address_ar) VALUES (?, ?, ?, ?, ?, ?)"); $stmt->execute([$phone, $name_en, $name_ar, $email, $address_en, $address_ar]); header('Location: customers.php?success=customer_added'); exit; } } elseif ($action === 'edit_customer') { $id = $_POST['id']; $phone = $_POST['phone'] ?? ''; $name_en = $_POST['name_en'] ?? ''; $name_ar = $_POST['name_ar'] ?? ''; $email = $_POST['email'] ?? ''; $address_en = $_POST['address_en'] ?? ''; $address_ar = $_POST['address_ar'] ?? ''; $stmt = db()->prepare("UPDATE customers SET phone = ?, name_en = ?, name_ar = ?, email = ?, address_en = ?, address_ar = ? WHERE id = ?"); $stmt->execute([$phone, $name_en, $name_ar, $email, $address_en, $address_ar, $id]); header('Location: customers.php?success=customer_updated'); exit; } elseif ($action === 'delete_customer') { $id = $_POST['id']; $stmt = db()->prepare("SELECT COUNT(*) FROM orders WHERE customer_id = ?"); $stmt->execute([$id]); if ($stmt->fetchColumn() > 0) { header('Location: customers.php?error=customer_has_orders'); exit; } $stmt = db()->prepare("DELETE FROM customers WHERE id = ?"); $stmt->execute([$id]); header('Location: customers.php?success=customer_deleted'); exit; } elseif ($action === 'adjust_points') { $id = $_POST['id']; $points = (float)$_POST['points']; $type = $_POST['type']; // 'add' or 'subtract' $desc = $_POST['description'] ?? 'Manual adjustment'; $pdo = db(); $pdo->beginTransaction(); try { $val = ($type === 'add') ? $points : -$points; $pdo->prepare("UPDATE customers SET loyalty_points = loyalty_points + ? WHERE id = ?")->execute([$val, $id]); $pdo->prepare("INSERT INTO loyalty_transactions (customer_id, points, type, description) VALUES (?, ?, 'adjusted', ?)") ->execute([$id, $val, $desc]); $pdo->commit(); header('Location: customers.php?success=points_adjusted'); exit; } catch (Exception $e) { $pdo->rollBack(); header('Location: customers.php?error=' . urlencode($e->getMessage())); exit; } } } $title = 'customers'; require_once __DIR__ . '/includes/header.php'; $search = $_GET['search'] ?? ''; $sql = "SELECT * FROM customers WHERE 1=1"; $params = []; if ($search) { $sql .= " AND (name_en LIKE ? OR name_ar LIKE ? OR phone LIKE ?)"; $params[] = "%$search%"; $params[] = "%$search%"; $params[] = "%$search%"; } $sql .= " ORDER BY created_at DESC"; $stmt = db()->prepare($sql); $stmt->execute($params); $customers = $stmt->fetchAll(); ?>
| # | = __('name') ?> | = __('phone') ?> | = __('loyalty_points') ?? 'Loyalty Points' ?> | = __('email') ?> | = __('date') ?> | = __('actions') ?> |
|---|---|---|---|---|---|---|
| = $c['id'] ?> | = $lang === 'ar' ? ($c['name_ar'] ?: $c['name_en']) : $c['name_en'] ?> |
= $c['phone'] ?> | = number_format($c['loyalty_points'], 2) ?> | = $c['email'] ?: '-' ?> | = date('d/m/Y', strtotime($c['created_at'])) ?> | |
| = __('no_customers_found') ?? 'No customers found' ?> | ||||||