<?php
// edit_profile.php
session_start();
require_once 'config/db_config.php';

if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}

$user_id = $_SESSION['user_id'];
$csrf = $_SESSION['csrf_token'] ?? ($_SESSION['csrf_token'] = bin2hex(random_bytes(32)));

function h($v) {
    return htmlspecialchars($v, ENT_QUOTES, 'UTF-8');
}

// Fetch current user
$stmt = $pdo->prepare("
    SELECT username, full_name, email, branch_id 
    FROM users WHERE user_id = ?
");
$stmt->execute([$user_id]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$user) {
    $_SESSION['error'] = "User not found.";
    header("Location: my_profile.php");
    exit();
}

// Handle form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!isset($_POST['csrf']) || $_POST['csrf'] !== $_SESSION['csrf_token']) {
        $_SESSION['error'] = "Invalid CSRF token.";
    } else {
        $full_name = trim($_POST['full_name'] ?? '');
        $email     = trim($_POST['email'] ?? '');

        if (empty($full_name) || empty($email)) {
            $_SESSION['error'] = "All fields are required.";
        } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $_SESSION['error'] = "Invalid email address.";
        } else {
            try {
                $stmt = $pdo->prepare("
                    UPDATE users 
                    SET full_name = ?, email = ? 
                    WHERE user_id = ?
                ");
                $stmt->execute([$full_name, $email, $user_id]);

                $_SESSION['success'] = "Profile updated successfully!";
                // Refresh user data
                $user['full_name'] = $full_name;
                $user['email'] = $email;
            } catch (PDOException $e) {
                $_SESSION['error'] = "Update failed: " . h($e->getMessage());
            }
        }
    }
    header("Location: edit_profile.php");
    exit();
}
?>

<?php include './partials/layouts/layoutTop.php'; ?>

<div class="dashboard-main-body">
    <div class="d-flex flex-wrap align-items-center justify-content-between gap-3 mb-24">
        <h6 class="fw-semibold mb-0">Edit Profile</h6>
        <nav>
            <ol class="breadcrumb">
                <li class="breadcrumb-item"><a href="index.php">Dashboard</a></li>
                <li class="breadcrumb-item"><a href="my_profile.php">My Profile</a></li>
                <li class="breadcrumb-item active">Edit Profile</li>
            </ol>
        </nav>
    </div>

    <?php if (!empty($_SESSION['success'])): ?>
        <div class="alert alert-success alert-dismissible fade show">
            <?= h($_SESSION['success']); unset($_SESSION['success']); ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
    <?php endif; ?>

    <?php if (!empty($_SESSION['error'])): ?>
        <div class="alert alert-danger alert-dismissible fade show">
            <?= h($_SESSION['error']); unset($_SESSION['error']); ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
        </div>
    <?php endif; ?>

    <div class="card border">
        <div class="card-body p-5">
            <div class="row justify-content-center">
                <div class="col-lg-8 col-xl-6">
                    <div class="text-center mb-4">
                        <img src="assets/images/avatars/default-avatar.jpg" 
                             alt="Profile" class="rounded-circle" width="120" height="120">
                        <h5 class="mt-3"><?= h($user['full_name'] ?? $user['username']) ?></h5>
                        <p class="text-muted">@<?= h($user['username']) ?></p>
                    </div>

                    <form method="POST" class="needs-validation" novalidate>
                        <input type="hidden" name="csrf" value="<?= $csrf ?>">

                        <div class="mb-3">
                            <label class="form-label fw-semibold">Full Name</label>
                            <input type="text" name="full_name" class="form-control form-control-lg" 
                                   value="<?= h($user['full_name'] ?? '') ?>" required>
                            <div class="invalid-feedback">Please enter your full name.</div>
                        </div>

                        <div class="mb-3">
                            <label class="form-label fw-semibold">Email Address</label>
                            <input type="email" name="email" class="form-control form-control-lg" 
                                   value="<?= h($user['email'] ?? '') ?>" required>
                            <div class="invalid-feedback">Please enter a valid email.</div>
                        </div>

                        <div class="mb-4">
                            <label class="form-label text-muted">Username (cannot be changed)</label>
                            <input type="text" class="form-control" value="<?= h($user['username']) ?>" disabled>
                        </div>

                        <div class="d-grid d-md-flex justify-content-end gap-3">
                            <a href="view-profile.php" class="btn btn-outline-secondary px-4">
                                Cancel
                            </a>
                            <button type="submit" class="btn btn-primary px-5">
                                <i class="fas fa-save me-2"></i> Save Changes
                            </button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// Bootstrap form validation
(function () {
    'use strict'
    var forms = document.querySelectorAll('.needs-validation')
    Array.from(forms).forEach(function (form) {
        form.addEventListener('submit', function (event) {
            if (!form.checkValidity()) {
                event.preventDefault()
                event.stopPropagation()
            }
            form.classList.add('was-validated')
        }, false)
    })
, false)
})();
</script>

<?php include './partials/layouts/layoutBottom.php'; ?>