
<?php
if (php_sapi_name() !== 'cli') { die("Только из командной строки.\n"); }

require_once __DIR__ . '/config.php';

$groupId = (int)($argv[1] ?? 0);
$filename = $argv[2] ?? '';

if (!$groupId || !$filename) {
    echo "Использование: php import_to_group.php <group_id> <file.csv>\n";
    exit(1);
}
if (!file_exists($filename)) { die("Файл не найден: $filename\n"); }

try {
    $pdo = new PDO("mysql:host=" . DB_HOST . ";port=" . DB_PORT . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET, DB_USER, DB_PASS);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) { die("Ошибка БД: " . $e->getMessage() . "\n"); }

$g = $pdo->prepare("SELECT name, app_id FROM user_groups WHERE id = :id");
$g->execute([':id' => $groupId]);
$group = $g->fetch(PDO::FETCH_ASSOC);
if (!$group) { die("Группа не найдена.\n"); }

$groupName = $group['name'];
$appId = $group['app_id'];

echo "Группа: {$groupName} (app_id={$appId})\n";
echo "Файл: {$filename}\n------------------------\n";

$handle = fopen($filename, 'r');
if (!$handle) { die("Не могу открыть файл.\n"); }

$stmt = $pdo->prepare("INSERT IGNORE INTO user_group_members (user_id, group_id, app_id) VALUES (:uid, :gid, :app)");
$total = 0; $added = 0; $batch = 0;
$pdo->beginTransaction();

while (($line = fgets($handle)) !== false) {
    $uid = trim($line);
    if ($uid === '') continue;
    $total++;
    $stmt->execute([':uid' => $uid, ':gid' => $groupId, ':app' => $appId]);
    $added += $stmt->rowCount();
    $batch++;
    if ($batch >= 1000) { $pdo->commit(); $pdo->beginTransaction(); $batch = 0; echo "Обработано: {$total}...\n"; }
}
$pdo->commit();
fclose($handle);

echo "------------------------\n";
echo "Всего в файле: {$total}\n";
echo "Добавлено: {$added}\n";
echo "Пропущено (уже в группе): " . ($total - $added) . "\n";
