[ '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 ]);