prepare('INSERT INTO expense_categories (name_ar, name_en) VALUES (?, ?)');
$stmt->execute([$_POST['name_ar'], $_POST['name_en']]);
set_flash('success', tr('تمت إضافة التصنيف بنجاح', 'Category added successfully'));
redirect_to('expense_categories.php');
} elseif ($action === 'edit') {
$stmt = $pdo->prepare('UPDATE expense_categories SET name_ar = ?, name_en = ? WHERE id = ?');
$stmt->execute([$_POST['name_ar'], $_POST['name_en'], $_POST['id']]);
set_flash('success', tr('تم التحديث بنجاح', 'Updated successfully'));
redirect_to('expense_categories.php');
} elseif ($action === 'delete') {
// Check if there are expenses linked
$checkStmt = $pdo->prepare('SELECT COUNT(*) FROM expenses WHERE category_id = ?');
$checkStmt->execute([$_POST['id']]);
if ($checkStmt->fetchColumn() > 0) {
set_flash('danger', tr('لا يمكن حذف التصنيف لأنه مرتبط بمصروفات.', 'Cannot delete category because it is linked to expenses.'));
} else {
$stmt = $pdo->prepare('DELETE FROM expense_categories WHERE id = ?');
$stmt->execute([$_POST['id']]);
set_flash('success', tr('تم الحذف بنجاح', 'Deleted successfully'));
}
redirect_to('expense_categories.php');
}
}
// Pagination & Search
$page = max(1, (int)($_GET['p'] ?? 1));
$limit = 10;
$offset = ($page - 1) * $limit;
$search = $_GET['q'] ?? '';
$where = '1=1';
$params = [];
if ($search) {
$where .= ' AND (name_ar LIKE ? OR name_en LIKE ?)';
$params[] = "%$search%";
$params[] = "%$search%";
}
$totalStmt = $pdo->prepare("SELECT COUNT(*) FROM expense_categories WHERE $where");
$totalStmt->execute($params);
$total = $totalStmt->fetchColumn();
$totalPages = ceil($total / $limit);
$queryStmt = $pdo->prepare("SELECT * FROM expense_categories WHERE $where ORDER BY id DESC LIMIT $limit OFFSET $offset");
$queryStmt->execute($params);
$items = $queryStmt->fetchAll();
require __DIR__ . '/includes/header.php';
?>
= h(tr('إدارة تصنيفات المصروفات', 'Manage expense categories')) ?>= h($pageTitle) ?>