<?php

$method = $_SERVER['REQUEST_METHOD'];

if ($method === 'POST') {
    $data = RestApi::getInput();
    $action = $data['action'] ?? null;
    $comment = new Comment();

    // Получаем ID текущего пользователя из сессии
    $current_user_id = RestApi::getCurrentUserId();

    // Создание комментария
    if ($action === 'create') {
        $comment->id_task = $data['id_task'] ?? null;
        $comment->id_accounts = $current_user_id;
        $comment->id_answer = $data['id_answer'] ?? null;  // Ответ на комментарий
        $comment->text = $data['text'] ?? '';

        $result = $comment->create();
        RestApi::response($result);
    }

    // Обновление комментария
    if ($action === 'update') {
        $comment->id = $data['id'] ?? null;
        $comment->id_accounts = $current_user_id;
        $comment->text = $data['text'] ?? '';

        $result = $comment->update();
        RestApi::response($result);
    }

    // Удаление комментария
    if ($action === 'delete') {
        $id = $data['id'] ?? null;
        $result = Comment::delete($id, $current_user_id);
        RestApi::response($result);
    }

    // Загрузка файла к комментарию (только автор)
    if ($action === 'upload_image') {
        $comment_id = $data['comment_id'] ?? null;
        $file_base64 = $data['file_data'] ?? null;
        $file_name = $data['file_name'] ?? null;

        $result = Comment::uploadFile($comment_id, $file_base64, $file_name, $current_user_id);
        RestApi::response($result);
    }

    // Удаление файлов комментария (автор или админ проекта)
    if ($action === 'delete_image') {
        $comment_id = $data['comment_id'] ?? null;
        $file_names = $data['file_names'] ?? $data['file_name'] ?? null;

        $result = Comment::deleteFile($comment_id, $file_names, $current_user_id);
        RestApi::response($result);
    }

    // Метод не указан
    if (!$action) {
        RestApi::response(['success' => false, 'error' => 'Укажите метод'], 400);
    }
}

if ($method === 'GET') {
    // Получение комментариев задачи
    // ?id_task=X (обязательный)
    $id_task = $_GET['id_task'] ?? null;

    if (!$id_task) {
        RestApi::response(['success' => false, 'errors' => ['id_task' => 'Задача не указана']], 400);
    }

    $comment = new Comment();
    $comments = $comment->getByTask($id_task);

    RestApi::response(['success' => true, 'data' => $comments]);
}

?>
