<?php
/**
 * Nephro Link - Main Router (dashboard.php)
 */
error_reporting(E_ALL);
ini_set('display_errors', 1);

if (session_status() === PHP_SESSION_NONE) { session_start(); }

require_once 'core/db.php';

// Sayfa parametresini güvenli al
$sayfa = preg_replace('/[^a-zA-Z0-9-]/', '', $_GET['sayfa'] ?? 'dashboard');

// Auth (login hariç her yerde)
if ($sayfa !== 'login') {
    require_once __DIR__ . '/core/auth.php';
}

// Dil (auth sonrası -> user_id garanti)
require_once 'core/i18n.php';

// ---------- Başlıklar (TR/EN) ----------
$basliklar = [
  'tr' => [
    'dashboard'          => 'Genel Bakış',
    'hasta-liste'        => 'Hasta Listesi',
    'hasta-ekle'         => 'Yeni Hasta Kaydı',
    'onam-arsiv'         => 'Onam & Arşiv',
    'dislab-gonder'      => 'Dışlab Hasta Gönderimi',
    'dislab-izle'        => 'Dışlab Hasta İzle',

    'seans-baslat'       => 'Seans Başlat',
    'aktif-seans-takip'  => 'Aktif Seans Takibi',
    'aktif-seans-detay'  => 'Seans Gözlem Paneli',
    'seans-takvimi'      => 'Haftalık Planlama',
    'bugunku-seanslar'   => 'Bugünkü Akış',
    'yatak-doluluk'      => 'Cihaz/Yatak Durumu',

    'vizit-notlari'      => 'Doktor Vizit Notları',
    'hemsire-notlari'    => 'Hemşire Gözlem',
    'lab-sonuclari'      => 'Laboratuvar Sonuçları',

    'stok-takip'         => 'Sarf Malzeme Stok',
    'stok-liste'         => 'Malzeme Listesi',
    'stok-hareket'       => 'Depo Hareketleri',

    'test-tanimlari'     => 'Test Tanımları',
    'tanimlar'           => 'Sistem Tanımları',
    'cihazlar'           => 'Cihaz Tanımları',
    'cihaz-bakimlari'    => 'Cihaz Bakımları',
    'ayarlar'            => 'Sistem Ayarları',
    'log-listesi'        => 'Sistem Logları',
  ],
  'en' => [
    'dashboard'          => 'Overview',
    'hasta-liste'        => 'Patient List',
    'hasta-ekle'         => 'New Patient',
    'onam-arsiv'         => 'Consent & Archive',
    'dislab-gonder'      => 'Send to External Lab',
    'dislab-izle'        => 'Track External Lab',

    'seans-baslat'       => 'Start Session',
    'aktif-seans-takip'  => 'Active Session Tracking',
    'aktif-seans-detay'  => 'Session Monitoring',
    'seans-takvimi'      => 'Weekly Planning',
    'bugunku-seanslar'   => 'Today Flow',
    'yatak-doluluk'      => 'Device/Bed Status',

    'vizit-notlari'      => 'Doctor Notes',
    'hemsire-notlari'    => 'Nurse Observations',
    'lab-sonuclari'      => 'Lab Results',

    'stok-takip'         => 'Consumable Stock',
    'stok-liste'         => 'Items List',
    'stok-hareket'       => 'Warehouse Movements',

    'test-tanimlari'     => 'Test Definitions',
    'tanimlar'           => 'System Definitions',
    'cihazlar'           => 'Device Definitions',
    'cihaz-bakimlari'    => 'Device Maintenance',
    'ayarlar'            => 'System Settings',
    'log-listesi'        => 'System Logs',
  ]
];

$lang = $_SESSION['lang'] ?? 'tr';
$lang = in_array($lang, ['tr','en'], true) ? $lang : 'tr';

$sayfa_basligi = $basliklar[$lang][$sayfa] ?? ($lang === 'tr' ? 'Panel' : 'Panel');

// ---------- Şifre değiştir POST handler ----------
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'change_password') {

    $uid = (int)($_SESSION['user_id'] ?? 0);
    $posted_uid = (int)($_POST['user_id'] ?? 0);

    $cur = (string)($_POST['current_password'] ?? '');
    $n1  = (string)($_POST['new_password'] ?? '');
    $n2  = (string)($_POST['new_password2'] ?? '');

    $err = null;

    if ($uid <= 0 || $uid !== $posted_uid) $err = ($lang==='tr'?'Yetkisiz işlem.':'Unauthorized action.');
    elseif ($n1 !== $n2) $err = ($lang==='tr'?'Yeni şifreler eşleşmiyor.':'New passwords do not match.');
    elseif (mb_strlen($n1) < 8) $err = ($lang==='tr'?'Şifre en az 8 karakter olmalı.':'Password must be at least 8 characters.');

    if ($err) {
        $_SESSION['flash_er'] = $err;
        header("Location: dashboard.php?" . http_build_query($_GET)); exit;
    }

    // stored hash
    $stored = null;

    if (isset($pdo) && $pdo instanceof PDO) {
        $st = $pdo->prepare("SELECT password_hash FROM users WHERE id=? LIMIT 1");
        $st->execute([$uid]);
        $stored = $st->fetchColumn();
    } elseif (isset($db) && $db instanceof mysqli) {
        $st = $db->prepare("SELECT password_hash FROM users WHERE id=? LIMIT 1");
        $st->bind_param("i", $uid);
        $st->execute();
        $st->bind_result($stored);
        $st->fetch();
        $st->close();
    }

    if (!$stored) {
        $_SESSION['flash_er'] = ($lang==='tr'?'Kullanıcı bulunamadı.':'User not found.');
        header("Location: dashboard.php?" . http_build_query($_GET)); exit;
    }

    // eski sha256 ise destek, değilse password_verify
    $ok = false;
    if (preg_match('/^[a-f0-9]{64}$/i', $stored)) $ok = (hash('sha256', $cur) === $stored);
    else $ok = password_verify($cur, $stored);

    if (!$ok) {
        $_SESSION['flash_er'] = ($lang==='tr'?'Mevcut şifre hatalı.':'Current password is incorrect.');
        header("Location: dashboard.php?" . http_build_query($_GET)); exit;
    }

    $newHash = password_hash($n1, PASSWORD_DEFAULT);

    if (isset($pdo) && $pdo instanceof PDO) {
        $up = $pdo->prepare("UPDATE users SET password_hash=? WHERE id=?");
        $up->execute([$newHash, $uid]);
    } elseif (isset($db) && $db instanceof mysqli) {
        $up = $db->prepare("UPDATE users SET password_hash=? WHERE id=?");
        $up->bind_param("si", $newHash, $uid);
        $up->execute();
        $up->close();
    }

    $_SESSION['flash_ok'] = ($lang==='tr'?'Şifre başarıyla güncellendi.':'Password updated successfully.');
    header("Location: dashboard.php?" . http_build_query($_GET)); exit;
}

// --------- güvenli include ---------
$dosya = "modules/$sayfa.php";
?>
<!DOCTYPE html>
<html lang="<?= $lang === 'tr' ? 'tr' : 'en' ?>">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Nephro Link | <?= htmlspecialchars($sayfa_basligi) ?></title>

    <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800;900&display=swap" rel="stylesheet">

    <style>
        :root {
            --sb-w: 280px;
            --header-h: 70px;
            --accent: #4361ee;
            --border: #e2e8f0;
        }

        body {
            margin: 0;
            font-family: 'Inter', sans-serif;
            background: #f8fafc;
            color: #0f172a;
            display: flex;
            overflow-x: hidden;
        }

        .main-wrapper {
            flex: 1;
            margin-left: var(--sb-w);
            min-height: 100vh;
            display: flex;
            flex-direction: column;
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            width: calc(100% - var(--sb-w));
        }

        body.sidebar-closed .main-wrapper {
            margin-left: 0;
            width: 100%;
        }

        .page-content { padding: 26px; flex: 1; }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to   { opacity: 1; transform: translateY(0); }
        }

        @media (max-width: 992px) {
            .main-wrapper { margin-left: 0 !important; width: 100% !important; }
        }
    </style>
</head>

<body>
    <?php include 'includes/sidebar.php'; ?>

    <div class="main-wrapper">
        <?php include 'includes/header.php'; ?>

        <main class="page-content">
            <?php
            if (file_exists($dosya)) {
                include $dosya;
            } else {
                $msg1 = ($lang==='tr') ? 'Sayfa Hazırlık Aşamasında' : 'Page Under Construction';
                $msg2 = ($lang==='tr') ? 'Dosya bulunamadı' : 'File not found';
                $msg3 = ($lang==='tr') ? "Dashboard'a Dön" : "Back to Dashboard";

                echo "
                <div style='text-align:center; padding:90px 20px; animation:fadeIn .35s ease both;'>
                    <i class='bi bi-exclamation-triangle' style='font-size:46px; color:#f59e0b;'></i>
                    <h3 style='margin-top:18px; font-weight:1000;'>$msg1</h3>
                    <p style='color:#64748b; font-weight:900;'>$msg2: <b>$dosya</b></p>
                    <a href='dashboard.php?sayfa=dashboard' style='color:var(--accent); font-weight:1000; text-decoration:none;'>$msg3</a>
                </div>";
            }
            ?>
        </main>
    </div>

    <script>
        function toggleSidebar() {
            document.body.classList.toggle('sidebar-closed');
            if (window.innerWidth <= 992) {
                document.body.classList.toggle('sidebar-mobile-open');
            }
        }
    </script>
</body>
</html>
