[
'seller_panel' => 'Πίνακας Πωλητή',
'my_listings' => 'Οι Αγγελίες Μου',
'customer_orders' => 'Παραγγελίες Πελατών',
'order_id' => 'Κωδ. Παραγγελίας',
'customer' => 'Πελάτης',
'contact' => 'Επικοινωνία / Αποστολή',
'date' => 'Ημερομηνία',
'my_products' => 'Τα Προϊόντα μου στην παραγγελία',
'status' => 'Κατάσταση',
'no_orders' => 'Δεν υπάρχουν ακόμα παραγγελίες για τα προϊόντα σου.',
'status_pending' => 'Εκκρεμεί',
'status_completed' => 'Ολοκληρώθηκε',
'status_cancelled' => 'Ακυρώθηκε',
'btn_update' => 'Ενημέρωση',
'btn_delete' => 'Διαγραφή',
'confirm_delete' => 'Σίγουρα θέλετε να διαγράψετε αυτή την παραγγελία;',
'msg_status_ok' => 'Η κατάσταση της παραγγελίας ενημερώθηκε!',
'msg_delete_ok' => 'Η παραγγελία διαγράφηκε επιτυχώς!',
'error' => 'Σφάλμα:'
],
'en' => [
'seller_panel' => 'Seller Dashboard',
'my_listings' => 'My Listings',
'customer_orders' => 'Customer Orders',
'order_id' => 'Order ID',
'customer' => 'Customer',
'contact' => 'Contact / Shipping',
'date' => 'Date',
'my_products' => 'My Products in this order',
'status' => 'Status',
'no_orders' => 'No orders found for your products yet.',
'status_pending' => 'Pending',
'status_completed' => 'Completed',
'status_cancelled' => 'Cancelled',
'btn_update' => 'Update',
'btn_delete' => 'Delete',
'confirm_delete' => 'Are you sure you want to delete this order?',
'msg_status_ok' => 'Order status updated successfully!',
'msg_delete_ok' => 'Order deleted successfully!',
'error' => 'Error:'
]
];
$t =$translations[$current_lang];$seller_id = $_SESSION['user_id'];$message = '';
// --- Χειρισμός Φόρμας (Αλλαγή Status ή Διαγραφή) ---
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['action']) &&$_POST['action'] === 'update_status') {
$order_id = (int)$_POST['order_id'];
$new_status =$_POST['status'];
try {
$stmt =$pdo->prepare("UPDATE orders SET status = ? WHERE id = ?");
$stmt->execute([$new_status, $order_id]);$message = "
{$t['msg_status_ok']}
";
} catch (Exception $e) {$message = "{$t['error']} " . $e->getMessage() . "
";
}
}
elseif (isset($_POST['action']) &&$_POST['action'] === 'delete_order') {
$order_id = (int)$_POST['order_id'];
try {
// Διαγράφουμε πρώτα τα είδη από το order_items και μετά την παραγγελία
$pdo->beginTransaction();
$pdo->prepare("DELETE FROM order_items WHERE order_id = ?")->execute([$order_id]);
$pdo->prepare("DELETE FROM orders WHERE id = ?")->execute([$order_id]);
$pdo->commit();$message = "{$t['msg_delete_ok']}
";
} catch (Exception $e) {
$pdo->rollBack();$message = "{$t['error']} " . $e->getMessage() . "
";
}
}
}
// --- Ανάκτηση Κατηγοριών (ΓΙΑ ΤΟ ΜΕΝΟΥ / SIDEBAR) ---
try {
$categoriesRaw =$pdo->query("SELECT * FROM categories ORDER BY sort_order ASC, name_el ASC")->fetchAll(PDO::FETCH_ASSOC);
$categories = [];
foreach ($categoriesRaw as $cat) {$cat['display_name'] = ($current_lang === 'en' && !empty($cat['name_en'])) ? $cat['name_en'] :$cat['name_el'];
$categories[] =$cat;
}
} catch (Exception $e) {$categories = [];
}
// Ανάκτηση Παραγγελιών που περιέχουν προϊόντα αυτού του Πωλητή
$stmtOrders =$pdo->prepare("
SELECT o.id as order_id, o.customer_name, o.customer_email, o.customer_phone, o.shipping_address, o.status as order_status, o.created_at,
oi.quantity, oi.price, p.title as product_title, p.id as product_id
FROM orders o
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id
WHERE p.seller_id = ?
ORDER BY o.created_at DESC
");
$stmtOrders->execute([$seller_id]);
$raw_orders =$stmtOrders->fetchAll(PDO::FETCH_ASSOC);
// Ομαδοποίηση παραγγελιών ανά order_id
$orders = [];
foreach ($raw_orders as$row) {
$oid =$row['order_id'];
if (!isset($orders[$oid])) {
$orders[$oid] = [
'id' => $oid,
'customer_name' => $row['customer_name'],
'customer_email' => $row['customer_email'],
'customer_phone' => $row['customer_phone'],
'shipping_address' => $row['shipping_address'],
'status' => $row['order_status'],
'created_at' => $row['created_at'],
'items' => []
];
}
$orders[$oid]['items'][] = [
'product_id' => $row['product_id'],
'title' => $row['product_title'],
'quantity' => $row['quantity'],
'price' => $row['price']
];
}
// --- ΦΟΡΤΩΣΗ TWIG THEME ---
// --- ΦΟΡΤΩΣΗ SETTINGS (Theme, Logo, Title) ---
$active_theme = 'default';
$site_logo = '';$site_title = 'Hockey CMS';
try {
$stmtSettings =$pdo->query("SELECT `key`, value FROM settings WHERE `key` IN ('active_theme', 'site_logo', 'site_title')");
while ($row =$stmtSettings->fetch(PDO::FETCH_ASSOC)) {
if ($row['key'] === 'active_theme' && !empty($row['value'])) {
$active_theme =$row['value'];
} elseif ($row['key'] === 'site_logo') {
$site_logo =$row['value'];
} elseif ($row['key'] === 'site_title' && !empty($row['value'])) {
$site_title =$row['value'];
}
}
} catch (Exception $e) {}
$theme_dir = __DIR__ . '/themes/' .$active_theme;
if (!is_dir($theme_dir)) {
$active_theme = 'default';$theme_dir = __DIR__ . '/themes/default';
}
$loader = new \Twig\Loader\FilesystemLoader($theme_dir);
$twig = new \Twig\Environment($loader, ['cache' => false]);
$twig->addGlobal('session',$_SESSION);
$twig->addGlobal('current_lang',$current_lang);
$twig->addGlobal('site_logo',$site_logo); // Ορισμός global για να εμφανίζεται σωστά το λογότυπο
echo $twig->render('seller_orders.html.twig', [
'site_title' => $site_title,
't' => $t,
'message' => $message,
'orders' => $orders,
'categories' => $categories
]);