index.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. session_start();
  3. // 1. Αν δεν είναι καν συνδεδεμένος -> Πάει στο Login
  4. if (!isset($_SESSION['user_id'])) {
  5. header("Location: ../login.php");
  6. exit;
  7. }
  8. // 2. Αν ΕΙΝΑΙ συνδεδεμένος αλλά ΔΕΝ είναι Admin -> Ακαριαίο redirect
  9. if ($_SESSION['role_id'] != 1) {
  10. if ($_SESSION['role_id'] == 2 || !empty($_SESSION['is_seller'])) {
  11. header("Location: ../seller_dashboard.php");
  12. } else {
  13. header("Location: ../index.php");
  14. }
  15. exit;
  16. }
  17. require_once '../config/database.php';
  18. // --- Μηχανισμός Αλλαγής Γλώσσας ---
  19. if (isset($_GET['lang']) && in_array($_GET['lang'], ['el', 'en'])) {
  20. $_SESSION['lang'] = $_GET['lang'];
  21. }
  22. $current_lang = $_SESSION['lang'] ?? 'el';
  23. $translations = [
  24. 'el' => [
  25. 'dashboard' => 'Dashboard',
  26. 'welcome' => 'Καλώς ήρθες,',
  27. 'welcome_sub' => 'Αυτή είναι η συνοπτική εικόνα του καταστήματός σου.',
  28. 'products' => 'Προϊόντα',
  29. 'categories' => 'Κατηγορίες',
  30. 'attributes' => 'Χαρακτηριστικά',
  31. 'users' => 'Εγγεγραμμένοι Χρήστες',
  32. 'latest_adds' => 'Τελευταίες Προσθήκες Εξοπλισμού',
  33. 'title' => 'Τίτλος',
  34. 'price' => 'Τιμή',
  35. 'date' => 'Ημερομηνία',
  36. 'no_products' => 'Δεν υπάρχουν ακόμα προϊόντα.'
  37. ],
  38. 'en' => [
  39. 'dashboard' => 'Dashboard',
  40. 'welcome' => 'Welcome,',
  41. 'welcome_sub' => 'Here is the overview of your store.',
  42. 'products' => 'Products',
  43. 'categories' => 'Categories',
  44. 'attributes' => 'Attributes',
  45. 'users' => 'Registered Users',
  46. 'latest_adds' => 'Latest Equipment Additions',
  47. 'title' => 'Title',
  48. 'price' => 'Price',
  49. 'date' => 'Date',
  50. 'no_products' => 'No products available yet.'
  51. ]
  52. ];
  53. $t = $translations[$current_lang];
  54. header('Content-Type: text/html; charset=utf-8');
  55. // Συγκεντρώνουμε μερικά γρήγορα στατιστικά για το Dashboard
  56. try {
  57. $total_products = $pdo->query("SELECT COUNT(*) FROM products")->fetchColumn();
  58. $total_categories = $pdo->query("SELECT COUNT(*) FROM categories")->fetchColumn();
  59. $total_users = $pdo->query("SELECT COUNT(*) FROM users")->fetchColumn();
  60. $total_groups = $pdo->query("SELECT COUNT(*) FROM attribute_groups")->fetchColumn();
  61. // Φέρνουμε τα 5 πιο πρόσφατα προϊόντα
  62. $recent_products = $pdo->query("
  63. SELECT title, price, created_at
  64. FROM products
  65. ORDER BY id DESC LIMIT 5
  66. ")->fetchAll();
  67. } catch (Exception $e) {
  68. die("Σφάλμα κατά την ανάγνωση των στατιστικών: " . $e->getMessage());
  69. }
  70. ?>
  71. <!DOCTYPE html>
  72. <html lang="<?php echo $current_lang; ?>">
  73. <head>
  74. <meta charset="UTF-8">
  75. <title><?php echo $t['dashboard']; ?> - Hockey CMS</title>
  76. <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
  77. <style>
  78. :root {
  79. --primary: #f97316;
  80. --bg-color: #0b1120;
  81. --panel-bg: #1e293b;
  82. --border-color: #334155;
  83. --text-main: #f8fafc;
  84. --text-muted: #94a3b8;
  85. }
  86. body { font-family: 'Inter', sans-serif; background-color: var(--bg-color); color: var(--text-main); margin: 0; }
  87. .content { margin-left: 250px; padding: 30px; }
  88. .content h2 { margin-top: 0; color: var(--primary); font-size: 26px; text-transform: uppercase; letter-spacing: 0.5px; }
  89. .card { background: var(--panel-bg); padding: 25px; border-radius: 8px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.3); margin-bottom: 20px; border: 1px solid var(--border-color); }
  90. .card h3 { margin-top: 0; color: var(--primary); border-bottom: 1px solid rgba(255,255,255,0.05); padding-bottom: 10px; font-size: 18px; text-transform: uppercase; }
  91. .stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-bottom: 30px; }
  92. .stat-card { background: var(--panel-bg); padding: 25px; border-radius: 8px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.3); text-align: center; border: 1px solid var(--border-color); border-bottom: 4px solid var(--primary); transition: 0.2s; }
  93. .stat-card:hover { transform: translateY(-5px); }
  94. .stat-card h3 { margin: 0; font-size: 36px; color: var(--text-main); font-weight: 900; border: none; padding: 0;}
  95. .stat-card p { margin: 10px 0 0; color: var(--text-muted); font-size: 13px; text-transform: uppercase; font-weight: 700; letter-spacing: 0.5px; }
  96. .stat-card:nth-child(2) { border-bottom-color: #10b981; }
  97. .stat-card:nth-child(3) { border-bottom-color: #3b82f6; }
  98. .stat-card:nth-child(4) { border-bottom-color: #ef4444; }
  99. table { width: 100%; border-collapse: collapse; }
  100. table th, table td { padding: 15px; border-bottom: 1px solid rgba(255,255,255,0.05); text-align: left; }
  101. table th { background: rgba(0,0,0,0.2); color: var(--text-muted); text-transform: uppercase; font-size: 13px; font-weight: 700; letter-spacing: 0.5px; }
  102. table td { color: var(--text-main); font-size: 15px; }
  103. </style>
  104. </head>
  105. <body>
  106. <?php include 'sidebar.php'; ?>
  107. <div class="content">
  108. <h2><?php echo $t['dashboard']; ?></h2>
  109. <p style="color: var(--text-muted); margin-bottom: 30px; font-size: 15px;">
  110. <?php echo $t['welcome']; ?> <strong style="color: var(--text-main);"><?php echo htmlspecialchars($_SESSION['first_name'] ?? 'Admin'); ?></strong>!
  111. <?php echo $t['welcome_sub']; ?>
  112. </p>
  113. <!-- Στατιστικά -->
  114. <div class="stats-grid">
  115. <div class="stat-card">
  116. <h3><?php echo $total_products; ?></h3>
  117. <p><?php echo $t['products']; ?></p>
  118. </div>
  119. <div class="stat-card">
  120. <h3><?php echo $total_categories; ?></h3>
  121. <p><?php echo $t['categories']; ?></p>
  122. </div>
  123. <div class="stat-card">
  124. <h3><?php echo $total_groups; ?></h3>
  125. <p><?php echo $t['attributes']; ?></p>
  126. </div>
  127. <div class="stat-card">
  128. <h3><?php echo $total_users; ?></h3>
  129. <p><?php echo $t['users']; ?></p>
  130. </div>
  131. </div>
  132. <!-- Τελευταίες προσθήκες -->
  133. <div class="card" style="max-width: 900px;">
  134. <h3>📦 <?php echo $t['latest_adds']; ?></h3>
  135. <?php if (count($recent_products) > 0): ?>
  136. <table>
  137. <thead>
  138. <tr>
  139. <th><?php echo $t['title']; ?></th>
  140. <th><?php echo $t['price']; ?></th>
  141. <th><?php echo $t['date']; ?></th>
  142. </tr>
  143. </thead>
  144. <tbody>
  145. <?php foreach($recent_products as $p): ?>
  146. <tr>
  147. <td><strong><?php echo htmlspecialchars($p['title']); ?></strong></td>
  148. <td style="color: #10b981; font-weight: 700;"><?php echo htmlspecialchars($p['price']); ?> €</td>
  149. <td style="color: var(--text-muted);"><?php echo date('d/m/Y H:i', strtotime($p['created_at'])); ?></td>
  150. </tr>
  151. <?php endforeach; ?>
  152. </tbody>
  153. </table>
  154. <?php else: ?>
  155. <p style="color: var(--text-muted); text-align: center; padding: 20px;"><?php echo $t['no_products']; ?></p>
  156. <?php endif; ?>
  157. </div>
  158. </div>
  159. </body>
  160. </html>