<?php
// create_chat.php
// Autors: Kārlis Mālnieks
// Iekļauj datubāzes savienojuma failu
require_once 'db_connection.php';

// Iestata atbildes formātu kā JSON
header('Content-Type: application/json');

try {
    // Iegūst datus no pieprasījuma ķermeņa (JSON formāts)
    $data = json_decode(file_get_contents('php://input'), true);

    // Iegūst pašreizējā lietotāja ID un izvēlētā lietotāja ID
    $loggedInUserId = $data['logged_in_user_id'];
    $selectedUserId = $data['selected_user_id'];

    // Pārbauda, vai ir ievadīti derīgi lietotāju ID. Ja nē, atgriež kļūdas ziņojumu.
    if (!$loggedInUserId || !$selectedUserId) {
        echo json_encode(['success' => false, 'message' => 'Invalid user IDs']);
        exit;
    }

    // Pārbauda, vai jau pastāv saruna starp diviem lietotājiem, kuru nosaukums ir tukšs
    $checkQuery = "
        SELECT c.id 
        FROM conversations c
        JOIN conversation_participants cp1 ON c.id = cp1.conversation_id
        JOIN conversation_participants cp2 ON c.id = cp2.conversation_id
        WHERE cp1.user_id = ? AND cp2.user_id = ? AND c.name IS NULL
    ";
    $stmt = $pdo->prepare($checkQuery);
    $stmt->execute([$loggedInUserId, $selectedUserId]);
    $existingConversation = $stmt->fetch(PDO::FETCH_ASSOC);

    // Ja saruna jau eksistē, atgriež tās ID
    if ($existingConversation) {
        echo json_encode(['success' => false, 'message' => 'Conversation already exists', 'conversation_id' => $existingConversation['id']]);
        exit;
    }

    // Sāk transakciju, lai nodrošinātu datu konsekvenci
    $pdo->beginTransaction();

    // Izveido jaunu sarunu, pievienojot ierakstu "conversations" tabulā
    $conversationQuery = "INSERT INTO conversations (name) VALUES (NULL)";
    $pdo->exec($conversationQuery);
    $conversationId = $pdo->lastInsertId(); // Iegūst jaunizveidotās sarunas ID

    // Pievieno pašreizējo lietotāju sarunas dalībnieku tabulā
    $addUserQuery = "INSERT INTO conversation_participants (conversation_id, user_id) VALUES (?, ?)";
    $stmt = $pdo->prepare($addUserQuery);
    $stmt->execute([$conversationId, $loggedInUserId]);

    // Pievieno arī izvēlēto lietotāju kā dalībnieku sarunā
    $stmt->execute([$conversationId, $selectedUserId]);

    // Apstiprina transakciju
    $pdo->commit();

    // Atgriež veiksmīgu atbildi ar sarunas ID
    echo json_encode(['success' => true, 'conversation_id' => $conversationId]);
} catch (PDOException $e) {
    // Ja notika kļūda, atgriež kļūdas ziņojumu un atgriež jebkādas izmaiņas datubāzē
    if ($pdo->inTransaction()) {
        $pdo->rollBack(); // Atceļ transakciju, ja tā tika uzsākta
    }
    echo json_encode(['success' => false, 'message' => 'Error creating chat: ' . $e->getMessage()]);
}
?>
