option('merge') && ! $this->option('batch') && ! $this->option('email')) { $this->error('Bitte --merge=, --batch= oder --email= angeben.'); return self::INVALID; } $query = CompanyMerge::query() ->whereNull('reverted_at') ->when($this->option('merge'), fn (Builder $query, string $id) => $query->whereKey((int) $id)) ->when($this->option('batch'), fn (Builder $query, string $batch) => $query->where('batch', $batch)) ->when($this->option('email'), fn (Builder $query, string $email) => $query->where('email', mb_strtolower(trim($email)))) ->orderByDesc('id'); $merges = $query->get(); if ($merges->isEmpty()) { $this->warn('Kein offener Vorgang gefunden.'); return self::SUCCESS; } $companies = $merges->sum('merged_companies_count'); $releases = $merges->sum('moved_press_releases_count'); if ($this->option('dry-run')) { $this->info(sprintf('[Dry-Run] %d Vorgänge würden rückabgewickelt: %d Firmen wiederhergestellt, %d Meldungen zurück.', $merges->count(), $companies, $releases)); return self::SUCCESS; } foreach ($merges as $merge) { $service->revert($merge, flushCaches: false); } $service->flushCaches(); $this->info(sprintf('%d Vorgänge rückabgewickelt: %d Firmen wiederhergestellt, %d Meldungen zurück.', $merges->count(), $companies, $releases)); return self::SUCCESS; } }