<?php
// Uzsāk sesiju, lai varētu izmantot $_SESSION datus
session_start();

// Pievieno datu bāzes savienojuma failu
include '../database/db.php';

// Pārbauda, vai lietotājs ir pieslēdzies
if (!isset($_SESSION['user_id'])) {
    // Ja lietotājs nav pieslēdzies, pāradresē uz login lapu
    header("Location: ../users/login.php");
    exit();
}

// Saglabā lietotāja ID no sesijas
$user_id = $_SESSION['user_id'];

// Mainīgie veiksmīgam vai kļūdas paziņojumam
$success_message = "";
$error_message = "";

// Sagatavo vaicājumu lietotāja datu iegūšanai
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");

// Izpilda vaicājumu ar lietotāja ID
$stmt->execute([$user_id]);

// Iegūst lietotāja informāciju no datu bāzes
$user = $stmt->fetch();

// Sagatavo vaicājumu lietotāja paziņojumu iestatījumu iegūšanai
$prefs_stmt = $pdo->prepare("SELECT * FROM user_notification_preferences WHERE user_id = ?");

// Izpilda vaicājumu ar lietotāja ID
$prefs_stmt->execute([$user_id]);

// Iegūst lietotāja paziņojumu iestatījumus
$prefs = $prefs_stmt->fetch();

// Ja lietotājam vēl nav paziņojumu iestatījumu
if (!$prefs) {
    // Izveido noklusējuma paziņojumu iestatījumus
    $pdo->prepare(
        "INSERT INTO user_notification_preferences 
         (user_id, reminder_1h, reminder_6h, reminder_12h, reminder_24h) 
         VALUES (?, 1, 0, 0, 1)"
    )->execute([$user_id]);

    // Atkārtoti iegūst jaunizveidotos paziņojumu iestatījumus
    $prefs_stmt->execute([$user_id]);
    $prefs = $prefs_stmt->fetch();
}

// Pārbauda, vai forma ir nosūtīta ar POST metodi
if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    // Iegūst ievadīto vārdu un noņem liekās atstarpes
    $new_name = trim($_POST['name']);

    // Iegūst pašreizējo un jauno paroli, ja tās ir ievadītas
    $old_password = trim($_POST['old_password'] ?? '');
    $new_password = trim($_POST['new_password'] ?? '');

    // Nosaka, vai lietotājs atļauj e-pasta paziņojumus
    $allow_email = isset($_POST['allow_email_notifications']) ? 1 : 0;

    // Nosaka, kuri atgādinājumu laiki ir izvēlēti
    $reminder_1h = isset($_POST['reminder_1h']) ? 1 : 0;
    $reminder_6h = isset($_POST['reminder_6h']) ? 1 : 0;
    $reminder_12h = isset($_POST['reminder_12h']) ? 1 : 0;
    $reminder_24h = isset($_POST['reminder_24h']) ? 1 : 0;

    // Ja vārds nav tukšs un tas atšķiras no esošā vārda
    if (!empty($new_name) && $new_name !== $user['name']) {
        // Atjaunina lietotāja vārdu datu bāzē
        $stmt = $pdo->prepare("UPDATE users SET name = ? WHERE id = ?");
        $stmt->execute([$new_name, $user_id]);

        // Atjaunina lietotāja vārdu arī sesijā
        $_SESSION['name'] = $new_name;

        // Saglabā veiksmīgas atjaunināšanas paziņojumu
        $success_message = "Name updated successfully!";
    }

    // Ja lietotājs ir ievadījis jaunu paroli
    if (!empty($new_password)) {

        // Pārbauda, vai ir ievadīta pašreizējā parole
        if (empty($old_password)) {
            $error_message = "Please enter your current password to change it.";

        // Pārbauda, vai ievadītā pašreizējā parole sakrīt ar datu bāzē saglabāto paroli
        } elseif (!password_verify($old_password, $user['password_hash'])) {
            $error_message = "Current password is incorrect!";

        // Pārbauda, vai jaunā parole ir pietiekami gara
        } elseif (strlen($new_password) < 6) {
            $error_message = "New password must be at least 6 characters long!";

        } else {
            // Šifrē jauno paroli drošai saglabāšanai
            $new_password_hashed = password_hash($new_password, PASSWORD_DEFAULT);

            // Saglabā jauno šifrēto paroli datu bāzē
            $stmt = $pdo->prepare("UPDATE users SET password_hash = ? WHERE id = ?");
            $stmt->execute([$new_password_hashed, $user_id]);

            // Saglabā veiksmīgas paroles maiņas paziņojumu
            $success_message = "Password updated successfully!";
        }
    }

    // Atjaunina e-pasta paziņojumu atļauju lietotāja profilā
    $stmt = $pdo->prepare("UPDATE users SET allow_email_notifications = ? WHERE id = ?");
    $stmt->execute([$allow_email, $user_id]);

    // Sagatavo vaicājumu paziņojumu laiku atjaunināšanai
    $stmt = $pdo->prepare(
        "UPDATE user_notification_preferences 
         SET reminder_1h = ?, reminder_6h = ?, reminder_12h = ?, reminder_24h = ? 
         WHERE user_id = ?"
    );

    // Izpilda paziņojumu laiku atjaunināšanu
    $stmt->execute([$reminder_1h, $reminder_6h, $reminder_12h, $reminder_24h, $user_id]);

    // Ja nav kļūdu un nav cita veiksmīga paziņojuma, parāda vispārīgu veiksmīgu paziņojumu
    if (empty($error_message) && empty($success_message)) {
        $success_message = "Settings updated successfully!";
    }

    // Pāradresē lietotāju, lai pēc lapas atsvaidzināšanas forma netiktu nosūtīta atkārtoti
    header("Location: profile.php?success=1");
    exit();
}

// Ja URL adresē ir success parametrs, parāda veiksmīgu paziņojumu
if (isset($_GET['success'])) {
    $success_message = "Settings updated successfully!";
}
?>

<!-- Norāda, ka dokuments ir HTML5 formātā -->
<!DOCTYPE html>

<!-- HTML dokumenta sākums, valoda iestatīta uz angļu -->
<html lang="en">
<head>
    <!-- Iestata simbolu kodējumu uz UTF-8 -->
    <meta charset="UTF-8">

    <!-- Nodrošina lapas pielāgošanos dažādiem ekrāna izmēriem -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- Lapas nosaukums pārlūkprogrammas cilnē -->
    <title>Profile - Work Planner</title>

    <!-- Pievieno galveno CSS stila failu -->
    <link rel="stylesheet" href="../css/style.css">

    <!-- Pievieno profila lapai paredzēto CSS failu -->
    <link rel="stylesheet" href="../css/profile.css">
</head>
<body>

<!-- Navigācijas izvēlne -->
<nav>
    <ul>
        <!-- Saite uz galveno paneli -->
        <li><a href="../dashboard.php">Dashboard</a></li>

        <!-- Saite uz kalendāra lapu -->
        <li><a href="../calendar/calendar.php">Calendar</a></li>

        <!-- Saite uz visu uzdevumu lapu -->
        <li><a href="../tasks/tasks.php">All Tasks</a></li>

        <!-- Saite uz komandu lapu -->
        <li><a href="../teams/teams.php">Teams</a></li>

        <!-- Saite uz draugu lapu -->
        <li><a href="../friends/add_friend.php">Friends</a></li>

        <!-- Saite uz profila lapu -->
        <li><a href="../profile/profile.php">Profile</a></li>

        <!-- Saite lietotāja izrakstīšanai -->
        <li><a href="../users/logout.php">Logout</a></li>
    </ul>
</nav>

<!-- Galvenais lapas saturs -->
<main>
    <!-- Profila iestatījumu virsraksts -->
    <h2>Profile Settings</h2>

    <!-- Ja ir kļūdas paziņojums, tas tiek parādīts -->
    <?php if (!empty($error_message)) : ?>
        <div class="message error"><?= htmlspecialchars($error_message) ?></div>
    <?php endif; ?>

    <!-- Ja ir veiksmīgs paziņojums, tas tiek parādīts -->
    <?php if (!empty($success_message)) : ?>
        <div class="message success"><?= htmlspecialchars($success_message) ?></div>
    <?php endif; ?>

    <!-- Profila satura konteiners -->
    <div class="profile-container">

        <!-- Profila iestatījumu sadaļa -->
        <div class="profile-section">

            <!-- Konta informācijas virsraksts -->
            <h3>Account Information</h3>

            <!-- Forma profila datu un iestatījumu saglabāšanai -->
            <form method="post">

                <!-- Vārda ievades grupa -->
                <div class="form-group">
                    <!-- Lauka nosaukums -->
                    <label for="name">Name</label>

                    <!-- Vārda ievades lauks ar pašreizējo lietotāja vārdu -->
                    <input type="text" name="name" id="name" value="<?= htmlspecialchars($user['name']) ?>" required>
                </div>

                <!-- E-pasta ievades grupa -->
                <div class="form-group">
                    <!-- Lauka nosaukums -->
                    <label for="email">Email</label>

                    <!-- E-pasta lauks, kuru nevar mainīt -->
                    <input type="email" id="email" value="<?= htmlspecialchars($user['email']) ?>" disabled>

                    <!-- Paskaidrojums, ka e-pastu nevar mainīt -->
                    <small>Email cannot be changed</small>
                </div>

                <!-- Vizuāla atdalīšanas līnija starp sadaļām -->
                <div class="section-divider"></div>

                <!-- Paroles maiņas sadaļas virsraksts -->
                <h3>Change Password</h3>

                <!-- Pašreizējās paroles ievades grupa -->
                <div class="form-group">
                    <!-- Lauka nosaukums -->
                    <label for="old_password">Current Password</label>

                    <!-- Pašreizējās paroles ievades lauks -->
                    <input type="password" name="old_password" id="old_password" placeholder="Enter current password">

                    <!-- Paskaidrojums, ka šis lauks nepieciešams paroles maiņai -->
                    <small>Required to change password</small>
                </div>

                <!-- Jaunās paroles ievades grupa -->
                <div class="form-group">
                    <!-- Lauka nosaukums -->
                    <label for="new_password">New Password</label>

                    <!-- Jaunās paroles ievades lauks -->
                    <input type="password" name="new_password" id="new_password" placeholder="Enter new password (min 8 characters)">
                </div>

                <!-- Vizuāla atdalīšanas līnija starp sadaļām -->
                <div class="section-divider"></div>

                <!-- Paziņojumu iestatījumu sadaļas virsraksts -->
                <h3>Notification Preferences</h3>

                <!-- E-pasta paziņojumu izvēles grupa -->
                <div class="checkbox-group">
                    <!-- Apakšvirsraksts e-pasta paziņojumiem -->
                    <h4>Email Notifications</h4>

                    <!-- Izvēles rūtiņa e-pasta paziņojumu atļaušanai -->
                    <label class="checkbox-label">
                        <input type="checkbox" name="allow_email_notifications" <?= $user['allow_email_notifications'] ? 'checked' : '' ?>>
                        <span>Allow email notifications for reminders</span>
                    </label>
                </div>

                <!-- Atgādinājumu laiku izvēles grupa -->
                <div class="checkbox-group">
                    <!-- Apakšvirsraksts atgādinājumu laikiem -->
                    <h4>Reminder Times</h4>

                    <!-- Paskaidrojums lietotājam -->
                    <p class="hint">Select when you want to receive reminders before events:</p>

                    <!-- Izvēles rūtiņa atgādinājumam 1 stundu pirms notikuma -->
                    <label class="checkbox-label">
                        <input type="checkbox" name="reminder_1h" <?= $prefs['reminder_1h'] ? 'checked' : '' ?>>
                        <span>1 hour before</span>
                    </label>

                    <!-- Izvēles rūtiņa atgādinājumam 6 stundas pirms notikuma -->
                    <label class="checkbox-label">
                        <input type="checkbox" name="reminder_6h" <?= $prefs['reminder_6h'] ? 'checked' : '' ?>>
                        <span>6 hours before</span>
                    </label>

                    <!-- Izvēles rūtiņa atgādinājumam 12 stundas pirms notikuma -->
                    <label class="checkbox-label">
                        <input type="checkbox" name="reminder_12h" <?= $prefs['reminder_12h'] ? 'checked' : '' ?>>
                        <span>12 hours before</span>
                    </label>

                    <!-- Izvēles rūtiņa atgādinājumam 24 stundas pirms notikuma -->
                    <label class="checkbox-label">
                        <input type="checkbox" name="reminder_24h" <?= $prefs['reminder_24h'] ? 'checked' : '' ?>>
                        <span>24 hours before (1 day)</span>
                    </label>
                </div>

                <!-- Pogas formas saglabāšanai vai atcelšanai -->
                <div class="form-actions">

                    <!-- Poga, kas nosūta formu un saglabā izmaiņas -->
                    <button type="submit" class="btn-save">Save All Changes</button>

                    <!-- Saite, kas atceļ izmaiņas un aizved uz dashboard lapu -->
                    <a href="../dashboard.php" class="btn-cancel">Cancel</a>
                </div>
            </form>
        </div>
    </div>
</main>

</body>
</html>