<?php
// create_group_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, lietotāju ID sarakstu un grupas nosaukumu
    $loggedInUserId = $data['logged_in_user_id'];
    $userIds = array_unique($data['user_ids']); // Pārliecinās, ka lietotāju ID ir unikāli
    $groupName = trim($data['group_name']);

    // Pārbauda, vai ir ievadīti derīgi dati
    if (!$loggedInUserId || empty($userIds) || !$groupName) {
        echo json_encode(['success' => false, 'message' => 'Invalid input data.']);
        exit;
    }

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

    // Izveido jaunu sarunu grupu "conversations" tabulā, norādot, ka tā ir grupu saruna (is_group = 1)
    $conversationQuery = "INSERT INTO conversations (name, is_group) VALUES (?, 1)";
    $stmt = $pdo->prepare($conversationQuery);
    $stmt->execute([$groupName]);
    $conversationId = $pdo->lastInsertId(); // Iegūst jaunizveidotās grupas sarunas ID

    // Pievieno pašreizējo lietotāju sarunas dalībnieku tabulā
    $participantQuery = "
        INSERT INTO conversation_participants (conversation_id, user_id)
        SELECT ?, ? 
        WHERE NOT EXISTS (
            SELECT 1 FROM conversation_participants 
            WHERE conversation_id = ? AND user_id = ?
        )
    ";
    $stmt = $pdo->prepare($participantQuery);

    // Pievieno pašreizējo lietotāju sarunai
    $stmt->execute([$conversationId, $loggedInUserId, $conversationId, $loggedInUserId]);

    // Pievieno visus pārējos lietotājus sarunai, ja viņi vēl nav pievienoti
    foreach ($userIds as $userId) {
        $stmt->execute([$conversationId, $userId, $conversationId, $userId]);
    }

    // Apstiprina transakciju, kas nozīmē, ka izmaiņas datubāzē tiek saglabātas
    $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ē
    $pdo->rollBack(); // Atceļ transakciju, ja tā tika uzsākta
    echo json_encode(['success' => false, 'message' => 'Error creating group chat: ' . $e->getMessage()]);
}
?>
