<?php
// update_user_email.php
// Autors: Kārlis Mālnieks
require_once 'db_connection.php'; // Pievienojam datubāzes savienojumu

// Pārbaudām, vai lietotājs ir pieslēdzies
if (!isset($_SESSION['user_id'])) {
    echo json_encode(['success' => false, 'message' => 'User is not logged in.']);
    exit();
}

// Iegūstam datus no pieprasījuma ķermeņa (JSON formāts)
$data = json_decode(file_get_contents('php://input'), true);
$newEmail = $data['new_email'] ?? null; // Jaunais e-pasts
$currentPassword = $data['current_password'] ?? null; // Pašreizējā parole

// Pārbaudām, vai nav trūkstošu vērtību
if (!$newEmail || !$currentPassword) {
    echo json_encode(['success' => false, 'message' => 'Missing email or password.']);
    exit();
}

// Pārbaudām, vai e-pasta formāts ir derīgs
if (!filter_var($newEmail, FILTER_VALIDATE_EMAIL)) {
    echo json_encode(['success' => false, 'message' => 'Invalid email format.']);
    exit();
}

$userId = $_SESSION['user_id']; // Lietotāja ID

try {
    // Pārbaudām, vai ievadītā parole ir pareiza
    $query = $pdo->prepare("SELECT password FROM users WHERE email_id = :userId");
    $query->bindParam(':userId', $userId, PDO::PARAM_INT);
    $query->execute();
    $user = $query->fetch(PDO::FETCH_ASSOC);

    // Ja parole ir nepareiza, atgriežam kļūdu
    if (!$user || !password_verify($currentPassword, $user['password'])) {
        echo json_encode(['success' => false, 'message' => 'Nepareiza parole.']);
        exit();
    }

    // Pārbaudām, vai jaunais e-pasts jau tiek lietots
    $emailQuery = $pdo->prepare("SELECT id FROM emails_v WHERE email = :newEmail");
    $emailQuery->bindParam(':newEmail', $newEmail, PDO::PARAM_STR);
    $emailQuery->execute();
    if ($emailQuery->fetch(PDO::FETCH_ASSOC)) {
        echo json_encode(['success' => false, 'message' => 'E-pasts jau tiek lietots!']);
        exit();
    }

    // Atjauninām e-pastu datubāzē
    $updateQuery = $pdo->prepare("UPDATE emails_v SET email = :newEmail WHERE id = :userId");
    $updateQuery->bindParam(':newEmail', $newEmail, PDO::PARAM_STR);
    $updateQuery->bindParam(':userId', $userId, PDO::PARAM_INT);
    $updateQuery->execute();

    // Atgriežam apstiprinājuma ziņojumu
    echo json_encode(['success' => true, 'message' => 'Email updated successfully.']);
} catch (PDOException $e) {
    // Ja notiek kļūda datubāzē, reģistrējam kļūdu un atgriežam kļūdas ziņojumu
    error_log("Error updating email: " . $e->getMessage());
    echo json_encode(['success' => false, 'message' => 'An error occurred while updating the email.']);
}
?>
